| この記事の要点 |
|
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 / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38