| この記事の要点 |
|
break とは
break は for や while による繰り返し処理をその時点で打ち切り、ループの外へ抜ける制御文です。条件にあてはまる要素が見つかった瞬間に探索を打ち切る、無限ループを終了させる、といった場面で使います。
基本構文
# while で使う例
n = 0
while True:
n += 1
print(n)
if n == 10:
break # ← ここで while を抜ける
# 出力: 1 〜 10
for ループで使う
# 最初に見つかった偶数で打ち切る
nums = [1, 3, 5, 4, 7, 9]
for n in nums:
if n % 2 == 0:
print(f"最初の偶数: {n}")
break
# 出力: 最初の偶数: 4
break / continue / pass の違い
| 文 | 意味 | 典型用途 |
|---|---|---|
break | ループを抜ける | 条件を満たしたら以降不要 |
continue | 次の周回へ進む(残りスキップ) | 特定要素だけ処理を飛ばす |
pass | 何もしない(構文的に必要な場所の埋め草) | 空関数・空クラス |
for i in range(5):
if i == 2:
continue # i=2 はスキップ(ループは続行)
if i == 4:
break # i=4 でループ脱出
print(i)
# 出力: 0, 1, 3
for...else / while...else の挙動
Python では for / while に else 節を付けられます。これは「break せずにループが終わったとき」だけ実行される、少し珍しい構文です。
nums = [1, 3, 5, 7]
for n in nums:
if n == 4:
print("発見")
break
else:
# break しなかったときに実行される
print("見つかりませんでした")
# 出力: 見つかりませんでした
nums = [1, 3, 4, 5]
for n in nums:
if n == 4:
print("発見")
break
else:
print("見つかりませんでした")
# 出力: 発見
多重ループを抜けたいとき
break はもっとも内側のループ 1 段だけ抜けます。Python には break n のような構文はないので、以下のいずれかで対応します。
方法 1: フラグ変数
found = False
for i in range(10):
for j in range(10):
if i * j == 42:
found = True
break
if found:
break
print(i, j)
方法 2: 関数化して return
def find_pair():
for i in range(10):
for j in range(10):
if i * j == 42:
return i, j
return None
print(find_pair())
方法 3: for...else を活用
for i in range(10):
for j in range(10):
if i * j == 42:
break
else:
# 内側ループが break しなかったら次の i へ
continue
# 内側で break が起きたらここで外側 break
break
print(i, j)
典型的な使い方
無限ループの終了
while True:
cmd = input("> ")
if cmd in ("quit", "exit"):
break
print(f"入力: {cmd}")
線形探索の早期打ち切り
target = "Bob"
for name in ["Alice", "Bob", "Carol"]:
if name == target:
print("見つかった")
break
条件付き集計の打ち切り
# 合計が 100 を超えたら止める
total = 0
nums = [30, 25, 20, 40, 15, 50]
for n in nums:
total += n
if total > 100:
break
print(total) # 115(30+25+20+40 まで足した次の n=15+... ではない)
他言語の break との比較
| 言語 | 挙動 |
|---|---|
| Python | break で 1 段抜ける。多重抜けは構文なし |
| Java | break label; でラベル付きループまで一気に抜けられる |
| JavaScript | Java と同じくラベル可 |
| Go | break LABEL でラベル付き可 |
| C / C++ | 1 段のみ。多重は goto やフラグ |
よくある落とし穴
ifの中ではなくループ外に書いてしまい構文エラー(breakは必ずループ内で)- 2 重ループの内側で break しても外側ループは継続
for...elseの else 節は「break しなかったとき」に動く(直感と逆になりがち)- 探索後に「見つかったかどうか」を区別したいなら、フラグ変数か
for...elseを使う
関連
子ページ
子ページはありません
同階層のページ
- 条件分岐 (if文)
- 繰り返し処理(while文)
- 繰り返し処理
- 繰り返しの中断 (break)
- 繰り返しのスキップ (continue)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09