Day 2・条件分岐・ループ(判断と繰り返し)
whileとbreak/continue、そしてインデント
条件が続く間の繰り返しを while で書き、break/continue とインデントの意味を固める。
回数が決まっていない繰り返し: while
for は「回数や対象があらかじめ決まっている」繰り返しに向いています。一方で「正しい入力が来るまで」「残高が0になるまで」のように、何回で終わるか事前にわからない繰り返しには while(ホワイル)を使います。while は「条件が True である間ずっと繰り返す」という意味です。
count = 0
while count < 3:
print("あと", 3 - count, "回")
count = count + 1
print("終了")無限ループに注意
while で最も怖いのは、条件がずっと True のままで永遠に止まらない「無限ループ」です。上の例で count = count + 1 を書き忘れると、count は 0 のままで条件が永遠に成り立ち、プログラムが止まりません。while を書くときは『どうすればこの条件がいつか False になるか』を必ずセットで考えます。
途中で抜ける break、途中でスキップする continue
ループの途中で「もう繰り返しをやめたい」ときは break(ブレイク)、「今回だけ飛ばして次に進みたい」ときは continue(コンティニュー)を使います。break はループそのものを終了し、continue はその周回の残りを飛ばして次の周回に進みます。
for n in range(1, 11):
if n == 5:
break # 5になったらループごと終了
if n % 2 == 0:
continue # 偶数はスキップして次へ
print(n) # 1, 3 だけ表示されるn % 2 は「n を 2 で割った余り」を求める書き方です(% は余りを出す演算子)。余りが 0 なら偶数なので continue で飛ばしています。そして n が 5 になった時点で break が働き、ループ全体が終わります。結果として表示されるのは 1 と 3 だけです。
continue: 今回だけ飛ばす
for n in range(1, 4):
if n == 2:
continue
print(n)
# 出力: 1, 3(2だけ飛ぶ)break: そこで打ち切る
for n in range(1, 4):
if n == 2:
break
print(n)
# 出力: 1(2以降は全部止まる)すべての土台: インデント(字下げ)
if でも for でも while でも、共通して支えているのがインデントです。Pythonは行頭の字下げの深さで「どこまでが同じブロックか」を判断します。同じ深さの行はひとまとまり、深くなればその内側、浅くなればブロックの外、というルールです。字下げは通常、半角スペース4つで統一します。
for n in range(3):
print("外側: これはループの中")
if n == 1:
print("内側: nが1のときだけ")
print("外側: 毎回実行される")
print("ループの外: 1回だけ実行")なぜインデントで構造を表すのか
多くの言語は { } でブロックを囲みますが、Pythonは字下げそのものを文法にしました。おかげで『見た目のインデント』と『実際の構造』が必ず一致し、他人のコードでも構造を目で追いやすくなります。逆に言うと、字下げを1つ間違えるだけで意味が変わるので、揃えることが読みやすさと正しさの両方につながります。
スペースとタブを混ぜない
見た目は同じでも、半角スペースとタブ文字が混在すると IndentationError や TabError が出ます。エディタの設定で『タブをスペースに変換』を有効にし、字下げは常にスペース4つに統一しておくと、この種のエラーをほぼ避けられます。
AIにはこう聞く
IndentationError や『ループが止まらない』といった不具合は、コードとエラーメッセージをそのまま貼って『どの行の字下げがおかしいか、無限ループになる条件は何か教えて』と聞くのが有効です。直った後は、AI任せにせず『なぜその字下げで正しくなるのか』を一言で説明できるか自分に問い直すと、構造を読む力が定着します。
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
break と continue の違いとして正しいものはどれですか。
while ループで「無限ループ」になってしまう典型的な原因はどれですか。
Pythonにおける「インデント(字下げ)」が果たしている役割を説明してください。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。