Python | 初心者が間違えやすい break の NG パターン集

Python
スポンサーリンク

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 の使い方がぐっとクリアになります。

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました