最初は「なくても書けるけど、あると気持ちいい」くらいの違いに見えます。でも break は“意図の早出し”ができるので、コードがぐっと読みやすくなります。ここでは初心者向けに、書き方の前後比較で効果をかみ砕いて説明します。break はループを即座に終わらせ、次の処理へ進める命令です。
例題1:検索の打ち切り(最初に見つかった一致だけ欲しい)
Before(break なし:最後まで回る)
nums = [3, 7, 10, 11, 14]
found = None
for n in nums:
if n % 2 == 0:
found = n
# 見つかってもループは続く(不要)
# ここまで来てようやく found を使う
print(found) # 14(最後の偶数が残る)
Python- 読みづらい理由: 「最初の偶数が欲しいのか、全部チェックしたいのか」がコードから読み取りにくい。見つかった後もループが続くため、無駄な繰り返しが発生する。
After(break あり:意図を即宣言)
nums = [3, 7, 10, 11, 14]
found = None
for n in nums:
if n % 2 == 0:
found = n
break # 見つかったら即終了
print(found) # 10(最初の偶数)
Python- 読みやすさの改善: 「最初に見つかったら終える」という意図が break で即わかる。処理量も減り、変数 found の値が「最初の一致」であることが保証される。
補足: 見つからなかった場合の扱いを明示したいときは for-else を使うと意図がさらに明確になります(break されなかったときだけ else 実行)。
for n in nums:
if 条件:
# 見つかった
break
else:
# ここは「1度も break されなかった」
print("見つかりませんでした")
Python例題2:入力ループの早期終了(ユーザが終わりと言ったら止めたい)
Before(break なし:フラグや複雑な条件が必要)
finished = False
while not finished:
cmd = input("コマンド: ")
if cmd == "exit":
finished = True # ここで終了フラグを切り替え
# まだ周回の残りがあると複雑化しやすい
continue
# コマンド処理...
Python- 読みづらい理由: フラグの切替や continue が絡み、制御の流れが散らばる。終了意図が「条件とフラグ操作」に埋もれて見えづらい。
After(break あり:終了条件を一点に集約)
while True:
cmd = input("コマンド: ")
if cmd == "exit":
break # ここで明確にループを終える
# コマンド処理...
Python- 読みやすさの改善: 終了条件がその場で完結。「終わりなら終わる」という自然な制御になり、意図が一目で伝わる。
例題3:ネストした探索(内側で見つかったら外側も止めたい)
Before(break なし:フラグで後から判断)
grid = [[1, 3], [5, 8], [10, 12]]
found = None
done = False
for row in grid:
for x in row:
if x == 8:
found = x
done = True # フラグだけ立てて内側を終える
break # 内側は終わる
if done:
# 外側の終了はここで判断(読み取りコストが高い)
break
print(found) # 8
Python- 読みづらい理由: 「どのループを終えるか」をフラグに頼るため、意図が二段構えで伝わる。追跡に労力がかかる。
After(break あり:意図を直列に表現)
grid = [[1, 3], [5, 8], [10, 12]]
found = None
for row in grid:
for x in row:
if x == 8:
found = x
break # 内側ループを終了
if found is not None:
break # 外側ループも終了
print(found) # 8
Python- 読みやすさの改善: 「内側を終える→見つかっていれば外側も終える」という流れがそのままコードに反映される。読者が頭の中で状態を追いかける負担が減る。
例題4:for-else で「見つからなかった」を自然に書く
Before(break なし:後続の if で消耗)
target = 7
nums = [2, 4, 6]
found = False
for n in nums:
if n == target:
found = True
# 見つけてもループは続く
if not found:
print("見つかりませんでした")
PythonAfter(break+for-else:意図が構文に乗る)
target = 7
nums = [2, 4, 6]
for n in nums:
if n == target:
print("見つかりました")
break
else:
# 1回も break されなかったときだけ実行
print("見つかりませんでした")
Python- 読みやすさの改善: 「見つからなかった場合」を構文で表現できるため、状態フラグの導入や後置判定が不要。検索系ロジックの定番パターンとして覚えると強い。
いつ break を入れると“読みやすい”か
- 条件達成=ループ終了が自然な場面: 最初の一致が見つかったら打ち切り、上限に達したら停止、エラー検出で中断など。
- 終了意図を早出ししたい場面: 「ここで終わり」をコードの同じ行で宣言できる。読者は先の行まで読み進めなくても、制御の終点がわかる。
- 不要な反復を避けたい場面: 見つかった後の残りの要素は用がない。break で無駄を削り、処理時間と脳の負担を減らす。
小さな指針(初心者向けの合言葉)
- “見つかったら終わり”は break。
- “この回だけ飛ばす”は continue。
- “結論が出たら関数ごと終わり”は return。
いまのあなたのコード、どこで「もう十分、ここで終えていい」が言えますか?そこに break を置くだけで、意図がクリアになり、読み手が楽になります。

