Python | 業務でよく使う break パターンベスト20

Python
スポンサーリンク

「見つかったら止める」「条件が揃ったら打ち切る」。break は業務コードで頻出です。初心者でもすぐ使えるように、よくある場面をテーマ別に短いコード例と一緒に解説します。


検索・探索の打ち切り

  • 最初の一致を見つけたら終了(一次元リスト):
items = ["A", "B", "X", "C"]
for s in items:
    if s == "X":
        print("見つかった:", s)
        break
Python
  • 存在チェック(見つかったかどうかのフラグ返却):
found = False
for s in items:
    if s == "X":
        found = True
        break
print("存在する" if found else "存在しない")
Python
  • 二重ループで最初の一致(内側のみ終了):
grid = [[1, 2], [3, 4]]
for row in grid:
    for x in row:
        if x % 2 == 0:
            print("最初の偶数:", x)
            break  # 内側だけ止まる
    # 外側は続く
Python
  • 二重ループで早期終了(外側も止めたい時はフラグ):
grid = [[1, 2], [3, 4]]
found = False
for row in grid:
    for x in row:
        if x == 4:
            print("見つかった:", x)
            found = True
            break
    if found:
        break
Python
  • 文字列検索(最初の出現位置の検出): t
text = "abcXdef"
pos = None
for i, ch in enumerate(text):
    if ch == "X":
        pos = i
        break
print(pos)
Python

バリデーション・品質チェック

  • 最初の不正入力で中断(メッセージを即返す):
inputs = ["ok", "ok", "", "ok"]
for v in inputs:
    if v == "":
        print("空文字を検出")
        break
Python
  • 必須条件の欠落を見つけたら中断:
required = ["name", "email", "id"]
provided = {"name": "A", "id": "123"}
for key in required:
    if key not in provided:
        print("不足:", key)
        break
Python
  • 閾値超過でテスト打ち切り:
measures = [0.1, 0.2, 0.9, 0.3]
limit = 0.8
for m in measures:
    if m > limit:
        print("閾値超過:", m)
        break
Python
  • 重複検出で停止(ユニーク制約チェック):
seen = set()
dup = None
for v in [1, 2, 3, 2]:
    if v in seen:
        dup = v
        break
    seen.add(v)
print("重複:", dup)
Python

入出力・ストリーム処理

  • ログ読みで最初のエラー行を見つけたら停止:
for line in log_lines:
    if "ERROR" in line:
        print("エラー:", line)
        break
Python
  • ユーザー入力で終了コマンド受信で停止:
while True:
    cmd = input("> ")
    if cmd == "quit":
        print("終了")
        break
    # それ以外は処理
Python
  • APIレスポンスのページングで条件達成後に打ち切り:
total = 0
for page in pages:  # 事前に取得したページリストなど
    total += sum(page)
    if total >= 1000:
        break
Python
  • ファイルスキャンで最初のマッチで停止:
import re
pattern = re.compile(r"\bID:\d+\b")
for line in open("data.txt"):
    if pattern.search(line):
        print("ID行:", line.strip())
        break
Python

最適化・探索の枝刈り

  • コストが一定以上ならそれ以上の候補生成をやめる:
best = float("inf")
for cost in candidate_costs:
    if cost >= best:
        break  # 以降は改善しないと分かっている
    # 改善候補の検証
    best = min(best, cost)
Python
  • ソート済みデータで範囲外になったら打ち切り:
values = [1, 3, 5, 10, 20]  # 昇順
for v in values:
    if v > 8:
        break
    print(v)  # 8以下だけ処理
Python
  • 期限超過のタスクは以降を処理せず停止(日付昇順):
for task in sorted_tasks:  # 締切昇順
    if task.deadline > today:
        break  # 以降はすべて未来日
    # 期限内の処理
Python
  • 優先度順処理で目標達成後に打ち切り:
points = 0
for job in high_priority_jobs:
    points += job.score
    if points >= target:
        break
Python

ループ制御・保守性の向上

  • for-else で「見つからなかった」報告(break とセット):
for v in [1, 3, 5]:
    if v % 2 == 0:
        print("偶数:", v)
        break
else:
    print("偶数はなし")
Python
  • ネスト内での例外回避(危険要素を検出したら以降を回さない):
for row in data_rows:
    for field in row:
        if field is None:
            print("欠損検出")
            break
    # 欠損が見つかった行は残りの列を処理しない
Python
  • リトライループで成功したら終了:
MAX_RETRY = 3
for _ in range(MAX_RETRY):
    if attempt():
        print("成功")
        break
    print("リトライ中...")
Python
  • 構成探索で最初の有効設定で停止:
configs = [{"a":1}, {"a":2}, {"a":3}]
for cfg in configs:
    if validate(cfg):
        use(cfg)
        break
Python
  • メニュー選択で確定したら入力ループを抜ける:
options = {"1": "開始", "2": "設定", "9": "終了"}
while True:
    sel = input("選択: ")
    if sel in options:
        print("選択:", options[sel])
        break
    print("無効な入力です")
Python

使い分けの指針と小さなコツ

  • 指針:
    • ループだけ止めたい: break
    • 今回だけスキップしたい: continue
    • 処理全体を終えたい: 関数化して return
  • コツ:
    • for-else を活用: 見つからなかった処理を自然に書ける。
    • ネストが深い時: 外側も止めたいならフラグか関数+return。
    • ソートや前提条件を活かす: 範囲外が分かった時点で break すると大幅に速くなる。

どのパターンも「無駄を早く切る」ためのもの。あなたの業務データの性質(出現位置、並び方、閾値)を意識して、止められるところで止めると、コードは速く読みやすくなります。

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