Python | ループを途中で止める break 文

JavaScript 未分類
スポンサーリンク

ループを途中で止める break 文の考え方

はじめてのうちは「ループは最後まで回るもの」と思いがち。でも、実際のプログラムでは「ここでやめたい」瞬間がよくあります。そんなときの緊急脱出ボタンが break です。


基本ルールと直感的なたとえ

  • 役割: ループの途中で「今すぐ抜ける」。
  • 対象: forwhile のどちらでも使える。
  • 効果範囲: 実行中の「いちばん内側のループ」だけを抜ける(入れ子なら一段だけ)。
  • たとえ: エレベーターで目的の階についたら、それ以上上がらずに降りるイメージ。

まずは体験:while ループでの break

# 目標の数字が出たらゲーム終了
while True:  # 条件はずっとTrue。breakで抜ける想定
    text = input("0〜9の数字を入力(9で終了): ")
    if text == "9":
        print("終了します")
        break  # ここでループを抜ける
    print(f"{text} を受け取りました")
Python
  • ポイント: while True の「無限ループ」は、break があるから安全に止められる。
  • 使いどころ: ユーザー入力の待機、サーバーの常時監視など「いつ止めるか未定」の処理。

for ループでも使える:探索を早く打ち切る

# リストから「合格」を最初に見つけたら終了
results = ["保留", "不合格", "保留", "合格", "合格"]

for r in results:
    if r == "合格":
        print("はじめての合格を見つけた!")
        break  # 見つけた瞬間にループ終了
Python
  • ポイント: 欲しいものを見つけたら、それ以上探さない。時間の節約になる。

break と continue の違い

for n in range(10):
    if n % 2 == 1:
        continue  # 奇数はスキップして次へ(ループは続く)
    if n == 6:
        break     # 6に来たらここで完全に抜ける
    print(n)
Python
  • 違い:
    • continue: その回だけ飛ばして「次のループへ」進む。
    • break: ここで「ループ自体を終了」。

ちょっと進んだ使い方:ループの else と組み合わせ

for / while には珍しいけど便利な「else」がある。ループが「break されずに最後まで回ったとき」だけ実行される。

targets = [12, 17, 23, 38]
key = 25

for t in targets:
    if t == key:
        print("見つかった!")
        break
else:
    print("最後まで探したけど見つからなかった…")  # breakなしで終了したときだけ
Python
  • メリット: 「見つかったとき」と「見つからなかったとき」を、分岐を増やさずに書ける。

入れ子ループでの注意点

for i in range(3):
    for j in range(3):
        if j == 1:
            break  # これは「内側のループ」だけ抜ける
    print(f"外側は続く: i={i}")
Python
  • ポイント: break は「一番内側」のループにしか効かない。外側まで抜けたいなら工夫が必要(フラグを使う、関数を抜ける、例外を使うなど)。

よくあるつまずきとコツ

  • ラベルがない: Pythonの break は「どのループを抜けるか」を指定できない。内側だけ抜ける。
  • 抜け忘れ: 無限ループに break を入れ忘れると止まらない。終了条件は必ず確認。
  • 見通しが悪くなる:break を多用しすぎると読みにくい。
    • コツ: 「早期終了」が分かりやすい場面(エラー時、成功時、終了入力)に限定して使う。

練習問題

  1. 終了ワードで止めるチャットもどき
    • 入力を受け取り、"bye" が来たら break。それ以外はエコー表示。
  2. 最初の偶数を見つけたら終了
    • ランダムな整数リストから、最初の偶数を見つけたら表示して break。見つからなければ else で「なし」を表示。
  3. パスワード試行(最大3回)
    • 正解が入力されたら即 break。3回失敗したら「ロック」メッセージ。

ヒント(3番の骨格):

SECRET = "python123"
for attempt in range(3):
    pwd = input("パスワード: ")
    if pwd == SECRET:
        print("ログイン成功")
        break
else:
    print("3回失敗。ロックしました")
Python

まとめの一言

  • 結論: break は「ここで終わり!」を明確にするための道具。
  • 使いどころ: 検索の打ち切り、エラー・終了入力、成功時の早期終了。
  • 指針: 読みやすさを優先して、必要な場所にだけ置く。
タイトルとURLをコピーしました