break の概要(ループをその場で抜ける)
break は、for や while の「ループを途中で直ちに終了」させる命令です。実行された瞬間、そのループのブロックを抜けて、ループの次の行へ処理が移ります。見つかったら終わりたい探索、ユーザーが終了指示を出したら止めたい対話処理、上限に達したら中断したいリトライなどで使われます。
基本動作と書き方(ここが重要)
最も内側のループだけを抜ける
break は「いちばん内側のひとつのループ」だけを終了します。二重・三重ループでは、必要なら上位のループに届く仕組み(フラグや関数化)を設計します。
for n in [10, 20, 30, 40]:
if n == 30:
print("見つかった。ここで終了")
break
print("ループ後の処理")
Python条件が成り立った瞬間に中断する
条件式を満たしたら break で即終了します。無駄な反復を避ける「早期終了」の基本手段です。
target = "hanako"
names = ["taro", "hanako", "jiro"]
for name in names:
if name == target:
print("登録済み")
break
Pythonfor での使い方(探索や走査の早期終了)
条件に合う最初の要素を見つけたら止める
最初にヒットした時点で処理を終えると、時間とメモリの無駄が減ります。見つからなかった場合の後処理は、for-else が読みやすく書けます。
emails = ["a@example.com", "b@example.com"]
target = "c@example.com"
for e in emails:
if e == target:
print("見つかった")
break
else:
print("見つからなかった") # break が一度もなければ実行
Python二重ループでの中断(内側しか抜けない点に注意)
内側だけを抜けるため、外側も止めたいならフラグで伝えるか、関数に切り出して return で抜けると明快です。
found = False
for i in range(3):
for j in range(3):
if i * j == 4:
found = True
break
if found:
break
print(found) # True
Pythonwhile での使い方(入力待ち・リトライ・上限付きの中断)
ユーザー指示で終了する無限ループ
「while True」の無限ループからの出口として break を使います。終了コマンドや空行入力など、明確な脱出条件を用意します。
while True:
cmd = input("コマンド(quitで終了): ").strip().casefold()
if cmd == "quit":
break
print(f"受信: {cmd}")
Pythonリトライの上限を設ける
外部待ちやログインなどは「最大試行回数」と組み合わせて安全に終わらせます。成功したら break、失敗続きなら while-else で明示します。
attempts = 0
while attempts < 3:
attempts += 1
ok = attempts == 3 # 例: 3回目で成功
if ok:
print("成功")
break
else:
print("3回失敗しました")
Pythoncontinue との違いと for-else の関係(深掘り)
break は「ループ終了」、continue は「その周回だけスキップ」
誤用しやすいので意図をはっきり持ちましょう。continue は次の反復へ進み、ループ自体は続きます。
for s in ["ok", "", "done"]:
if not s: # 空文字は飛ばす
continue
print("処理:", s)
Pythonfor-else と break の相互作用
- ループが「break されずに正常終了」したときだけ else が実行されます。
- 「見つかったら break、見つからなければ else」で探索の成功/失敗が一目で分かります。
例題で身につける(定番パターン)
例題1:最初の一致だけ処理して終了
nums = [1, 3, 5, 10, 7, 9]
for n in nums:
if n % 2 == 0:
print(f"最初の偶数: {n}")
break
Python例題2:カウントダウン途中で特定条件なら中断
n = 5
while n > 0:
if n == 3:
print("条件により中断")
break
print(n)
n -= 1
Python例題3:入力検証、quit 指示で終了
while True:
s = input("年齢か 'quit' を入力: ").strip()
if s.casefold() == "quit":
break
if s.isdigit():
print(int(s) >= 18)
else:
print("整数で入力してください")
Python例題4:二重ループの早期終了を関数で表現
def find_pos(matrix, target):
for i, row in enumerate(matrix):
for j, v in enumerate(row):
if v == target:
return (i, j) # 関数の return で外側も抜ける
return None
print(find_pos([[1,2],[3,4]], 4)) # (1, 1)
Python落とし穴とベストプラクティス(重要ポイント)
ループ外で break は使えない
break はループ専用です。ループの外に書くと構文エラーになります。外側まで止めたいなら、関数化して return、またはフラグで制御します。
二重・三重ループで「外側も止めたい」設計
break は最内だけ。外側を止める必要が見えたら、ロジックを関数へ切り出し、return で抜ける設計にするとすっきりします。
無限ループの出口を必ず用意する
while True は便利ですが、終了コマンド・タイムアウト・最大試行回数など「ガード」を用意して安全に。ログや進捗カウンタを入れるとデバッグが容易になります。
まとめ
break は「今すぐ終わるべきループ」を確実に止めるためのスイッチです。最内ループだけが終了する性質、for-else と組み合わせる探索パターン、while True の出口設計、continue との違いを押さえると、無駄な反復を減らし、コードの意図が明快になります。二重ループを抜けたい時は関数化やフラグで設計を整理し、無限ループには必ず脱出条件とガードを用意しましょう。
