Pythonのループの基本をやさしく
「同じ処理を何回もやりたい」ときに使うのがループです。最初は2種類だけ覚えましょう。状況に合わせて使い分けるとスッキリ書けます。
ループの2種類
- while文:「条件が成り立つあいだ、ずっと繰り返す」タイプ。いつ終わるかが入力や状態次第で変わるときに便利。
- for文:「決まった回数・決まった集まりを順番に回す」タイプ。リストや範囲を順に処理するときに便利。
while文の基本と例
基本の形
while 条件:
繰り返したい処理
Python- 条件がTrueの間は何度でも繰り返します。
- 条件がFalseになったら、そこで終了します。
例1: パスワードが合うまで聞き続ける
secret = "python"
password = ""
while password != secret:
password = input("パスワードを入力してください: ")
print("ログイン成功!")
Python- 入力が合っていない間は繰り返し、合った瞬間に終了します。
例2: 0が入力されたら終わる電卓(合計を足し続ける)
total = 0
while True:
n = int(input("数を入力(0で終了): "))
if n == 0:
break # ループを抜ける
total += n
print("合計:", total)
Python- 「ずっと続ける」
while True+「やめる合図」breakの組み合わせは定番です。
よく使うキーワード
- break: ループをすぐ終わらせる。
- continue: その回をスキップして、次の繰り返しへ。
for i in range(1, 6):
if i == 3:
continue # 3のときだけスキップ
print(i)
# 出力: 1, 2, 4, 5
Pythonfor文の基本と例
基本の形
for 変数 in 集まり:
繰り返したい処理
Python- 「集まり」には、リスト・文字列・range(回数)などが使えます。
例1: 3回だけ挨拶する
for _ in range(3):
print("こんにちは")
Pythonrange(3)は0,1,2の3回分を作ってくれます。_は「値を使わない」慣習の名前。
例2: リストの中身を順番に表示
fruits = ["りんご", "みかん", "ぶどう"]
for f in fruits:
print(f)
Python例3: 1〜100の合計を求める
total = 0
for i in range(1, 101):
total += i
print(total) # 5050
Pythonどっちを使う?判断のコツ
- 終わり条件が入力や状態次第なら、while+break が向いています。
- 例: ユーザーが「終了」と言うまで続ける。
- 回数や対象が決まっているなら、for が読みやすいです。
- 例: リストの全要素に同じ処理をする、10回だけ試す。
初心者がハマりやすいポイント
- 無限ループに注意: 条件がいつまでもTrueだと止まりません。
i = 0
while i < 5:
print(i)
# i を増やし忘れると永遠に0を出し続ける
i += 1 # これを忘れない!
Python- インデント(字下げ)必須: ループの中は、スペース4つでそろえる。
- 入力は文字列:
input()は文字列を返します。数にしたいならint()で変換しましょう。
n = int(input("数を入力: "))
Python- breakとcontinueの使い分け: 止めたいならbreak、スキップしたいならcontinue。
練習問題
- 問題1: ユーザーが「exit」と入力するまで、入力した文字をそのまま表示し続けるプログラムを作ってください(while+break)。
- ヒント:
while Trueとif text == "exit": break
- ヒント:
- 問題2: 1〜50のうち、3の倍数だけを表示してください(for+continue)。
- ヒント:
if i % 3 != 0: continue
- ヒント:
- 問題3: ユーザーから数値を受け取り、合計が100を超えたら終了して合計を表示してください(while)。
- ヒント: 合計を足して、条件は「合計が100以下なら続ける」でも「True+break」でもOK。
解答例と解説
問題1
ユーザーが「exit」と入力するまで、入力した文字をそのまま表示し続けるプログラム
解答例
while True:
text = input("文字を入力してください(exitで終了): ")
if text == "exit":
break
print("あなたが入力した文字:", text)
Python解説
while True:→ 無限ループを作ります。- 毎回
input()で文字を受け取ります。 - 入力が
"exit"ならbreakでループを終了。 - それ以外なら
print()で表示。
👉 「終了条件が入力次第で決まる」ので、while True+breakが便利です。
問題2
1〜50のうち、3の倍数だけを表示する
解答例
for i in range(1, 51):
if i % 3 != 0:
continue
print(i)
Python解説
range(1, 51)→ 1から50までの数字を順番に取り出す。i % 3→ 3で割った余り。余りが0なら3の倍数。continue→ 倍数でないときはスキップ。- 倍数だけが
print()されます。
👉 「決まった範囲を順番に処理する」ので、forが適しています。
問題3
ユーザーから数値を受け取り、合計が100を超えたら終了して合計を表示
解答例
total = 0
while total <= 100:
n = int(input("数値を入力してください: "))
total += n
print("合計が100を超えました:", total)
Python解説
- 最初に
total = 0で合計を準備。 while total <= 100:→ 合計が100以下なら繰り返す。- 毎回
int(input())で数値を受け取り、total += nで加算。 - 合計が100を超えた瞬間に条件がFalseになり、ループ終了。
👉 「合計が一定値を超えるまで続ける」ので、whileが自然です。
まとめ
- 問題1: 終了条件が「入力次第」→
while True+break - 問題2: 決まった範囲を順番に処理 →
for+continue - 問題3: 合計が一定値を超えるまで →
while条件式
仕上げの例題(総合)
入力検証つきのメニュー選択
while True:
print("メニュー: 1) 合計 2) 最大 3) 終了")
choice = input("番号を選んでください: ")
if choice == "1":
nums = input("数値をカンマ区切りで入力: ").split(",")
total = 0
for s in nums:
total += int(s.strip())
print("合計:", total)
elif choice == "2":
nums = input("数値をカンマ区切りで入力: ").split(",")
maximum = None
for s in nums:
n = int(s.strip())
if maximum is None or n > maximum:
maximum = n
print("最大値:", maximum)
elif choice == "3":
print("終了します")
break
else:
print("不正な入力です。1〜3から選んでください。")
Python- メニューは
while Trueで回し、終了はbreak。 - 入力した複数の数値を
splitで分解し、forで処理しています。
次の一歩
- rangeの応用:
range(開始, 終了, 変化幅)で偶数だけなどを作れる。 - enumerate: リストの「番号」と「値」を同時に取り出す。
- リスト内包表記: 短く書けるが、まずは基本のfor/whileで確実に理解を。
