Python | 文法の基本:break

Python
スポンサーリンク

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
Python

for での使い方(探索や走査の早期終了)

条件に合う最初の要素を見つけたら止める

最初にヒットした時点で処理を終えると、時間とメモリの無駄が減ります。見つからなかった場合の後処理は、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
Python

while での使い方(入力待ち・リトライ・上限付きの中断)

ユーザー指示で終了する無限ループ

「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回失敗しました")
Python

continue との違いと for-else の関係(深掘り)

break は「ループ終了」、continue は「その周回だけスキップ」

誤用しやすいので意図をはっきり持ちましょう。continue は次の反復へ進み、ループ自体は続きます。

for s in ["ok", "", "done"]:
    if not s:    # 空文字は飛ばす
        continue
    print("処理:", s)
Python

for-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 との違いを押さえると、無駄な反復を減らし、コードの意図が明快になります。二重ループを抜けたい時は関数化やフラグで設計を整理し、無限ループには必ず脱出条件とガードを用意しましょう。

タイトルとURLをコピーしました