| この記事の要点 |
|
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アノテーションとは
最近更新/作成されたページ
- JP1/FTS(File Transmission Server/FTP)とは|伝送カードとftstranの使い方 NEW 2026-10-02 22:03:11
- 日立 JP1 (Job Management Partner 1) 完全ガイド (AJS3 / IM / Base / PFM) 2026-10-02 22:03:11
- JP1/Baseとは|ユーザー認証・ユーザーマッピング・イベントサービスの仕組みと主要コマンド NEW 2026-10-02 22:03:10
- JP1/IM(JP1/IM2・IM3)とは|JP1イベントによる統合監視の仕組みとJP1/Baseとの関係 NEW 2026-10-02 22:03:10
- JP1/AJS3 コマンド一覧|ajsentry・ajsshow・ajsrerunなど主要コマンドの使い方とオプション NEW 2026-10-02 22:03:09
- JP1/AJS3とは?ジョブネット・スケジュール・Manager/Agent/Viewの構成を初心者向けに解説 NEW 2026-10-02 22:03:09
- クラウドネットワークの記事一覧 2026-10-02 16:08:51
- ルーティングとスイッチング完全ガイド — 静的/動的ルーティング/RIP/OSPF/BGP/VLAN/STP 2026-10-02 16:08:51
- ネットワークのアドレッシング完全ガイド — IP/MAC/ポート/サブネット/CIDR/IPv6/NAT 2026-10-02 16:08:51
- 本番環境のdll内で参照しているdllファイルの置き場所 2026-10-02 16:08:50
- 【Visual Studio】 C#のForm自動生成時に「値が有効な範囲にありません」エラー 2026-10-02 16:08:50
- 【Laravelエラー】does not comply with psr-4 autoloading standard. Skipping. 2026-10-02 16:08:50
- 【Laravelエラー】could not find driver(Windows, MySQL編) 2026-10-02 16:08:49
- The following channel memory did not pass cpu memory test. 2026-10-02 16:08:49
- 【pycharm】connecting to console が終わらない 2026-10-02 16:08:49