break は便利ですが、初心者がよくやってしまう「誤用パターン」があります。ここでは NG例 → 改善例 の形で、なぜ間違いやすいかをかみ砕いて説明します。
❌ NGパターン1:break が「関数全体を終える」と勘違い
def find_even(nums):
for n in nums:
if n % 2 == 0:
print("見つかった!")
break
print("関数終了")
Python- 誤解: 「break で関数が終わる」と思いがち。
- 実際: break は「ループだけ」を終える。関数は続くので「関数終了」が必ず出力される。
✅ 改善例(関数を終えたいなら return)
def find_even(nums):
for n in nums:
if n % 2 == 0:
print("見つかった!")
return # 関数ごと終了
print("偶数はありません")
Python❌ NGパターン2:break を入れ忘れて「最初の一致」が取れない
nums = [3, 7, 10, 11, 14]
found = None
for n in nums:
if n % 2 == 0:
found = n # 見つかってもループは続く
print(found) # 14(最後の偶数)
Python- 誤解: 「最初の偶数が欲しい」と思っているのに break を忘れる。
- 結果: 最後の偶数が残ってしまう。
✅ 改善例
for n in nums:
if n % 2 == 0:
found = n
break # 最初の一致で終了
print(found) # 10
Python❌ NGパターン3:ネストしたループで「どこまで抜けるか」を勘違い
grid = [[1, 3], [5, 8], [10, 12]]
for row in grid:
for x in row:
if x == 8:
print("見つかった!")
break # 内側だけ終了
# 外側は続くので「見つかった!」が複数回出ることも
Python- 誤解: 「break で外側のループも止まる」と思いがち。
- 実際: break は「今いるループ」だけを終了する。
✅ 改善例(外側も止めたいなら条件を追加)
found = False
for row in grid:
for x in row:
if x == 8:
print("見つかった!")
found = True
break
if found:
break # 外側も終了
Python❌ NGパターン4:break と continue を混同する
for i in range(5):
if i == 3:
break # 本当は「3だけスキップ」したいのに終了してしまう
print(i)
Python- 誤解: 「この回だけ飛ばしたい」と思って break を使う。
- 結果: ループ自体が終了してしまう。
✅ 改善例(スキップなら continue)
for i in range(5):
if i == 3:
continue # 3だけ飛ばす
print(i)
# 出力: 0, 1, 2, 4
Python❌ NGパターン5:for-else の仕組みを誤解する
nums = [2, 4, 6]
target = 7
for n in nums:
if n == target:
print("見つかった!")
else:
print("見つかりませんでした") # いつも実行されると思ってしまう
Python- 誤解: else は「ループが終わったら必ず実行される」と思いがち。
- 実際: else は「break されなかったときだけ」実行される。
✅ 改善例
for n in nums:
if n == target:
print("見つかった!")
break
else:
print("見つかりませんでした")
Pythonまとめ
- break は「ループだけ」を終える。関数終了は return。
- 最初の一致を取りたいときは break を忘れない。
- ネストでは「どのループを抜けるか」を意識する。
- スキップは continue、終了は break。
- for-else は「break されなかった場合」にだけ実行される。
初心者がつまずくのは「範囲の違い」と「意図の混同」。
「どこまで終わらせたいのか?」を意識すると break の使い方がぐっとクリアになります。

