break文 - ループを途中で抜ける
目次
このレッスンで学ぶこと
- break文とは何か
- break文の使い方
- for文とwhile文でのbreak
- break文の実用例
break文とは
break文は、ループ処理を途中で完全に終了し、ループの外に処理を移す制御構文です。ループ内で特定の条件を満たしたときに、残りの処理をスキップしてループを抜ける必要がある場合に使用されます。
break文の基本構造
Pythonfor 変数 in コレクション: if 終了条件: break # ループを抜ける while 条件式: if 終了条件: break # ループを抜ける
break文の構成要素
| 要素 | 説明 | 例 |
|---|---|---|
break | ループを抜けるキーワード | 必須 |
| 配置 | ループの中(if文の中) | 通常はif文の中で使用 |
| 範囲 | 最も内側のループだけ抜ける | ネストの場合、内側のみ |
| ループ外 | breakの後の処理は実行されない | 次のループに進まない |
break文の特徴
- 最も内側のループだけを抜ける(ネストの場合)
- ループ内でのみ使用可能(ループ外ではエラー)
- break後のループ内処理は実行されない
- 値の検索やエラー時の処理中断に便利
簡単な例
Python# リストから特定の値を探す numbers = [1, 5, 3, 8, 2] for num in numbers: if num == 8: print("8を見つけました!") break # ループを抜ける print(f"確認中: {num}") # 実行結果: # 確認中: 1 # 確認中: 5 # 確認中: 3 # 8を見つけました! # while Trueで無限ループから抜ける while True: command = input("入力 (quit で終了): ") if command == "quit": break print(f"実行: {command}")
なぜbreak文が必要なのか?
ループ処理の途中で、特定の条件を満たしたときに繰り返しを終了したい場合があります。
Python# リストから特定の値を探す numbers = [1, 5, 3, 8, 2, 9, 4] for number in numbers: if number == 8: print("8を見つけました!") break # ここでループを抜ける print(f"確認中: {number}") print("検索終了")
実行結果:
確認中: 1
確認中: 5
確認中: 3
8を見つけました!
検索終了
break文を使うことで、条件を満たしたらすぐにループを終了できます。
💡 豆知識: break文は英語で「壊す、中断する」という意味です。ループを「中断」してループの外に出る処理を表しています。
break文の基本
機能: ループ(for文やwhile文)を途中で抜けて、ループの次の処理に移ります。
書き方:
Pythonfor item in items: if 条件: break # ループを抜ける 処理 while 条件: if 条件: break # ループを抜ける 処理
用途: 目的の値が見つかったら終了、エラー時の中断、ユーザーが終了を指示
注意点:
- breakは最も内側のループだけを抜ける
- ループ外では使えない
- break後のループ内処理は実行されない
Python# 基本的な使い方 for i in range(10): if i == 5: break print(i) print("ループ終了")
実行結果:
0
1
2
3
4
ループ終了
for文でのbreak
例1: 値の検索
Pythonfruits = ["りんご", "バナナ", "オレンジ", "ぶどう", "メロン"] target = "オレンジ" for fruit in fruits: if fruit == target: print(f"{target}を見つけました!") break print(f"確認中: {fruit}")
実行結果:
確認中: りんご
確認中: バナナ
オレンジを見つけました!
例2: 合計が目標値を超えたら終了
Pythonnumbers = [10, 20, 15, 30, 25, 5] total = 0 target = 50 for number in numbers: total += number print(f"{number}を加算: 合計 = {total}") if total >= target: print(f"目標の{target}に到達しました!") break
実行結果:
10を加算: 合計 = 10
20を加算: 合計 = 30
15を加算: 合計 = 45
30を加算: 合計 = 75
目標の50に到達しました!
例3: 最初の偶数を見つける
Pythonnumbers = [1, 3, 5, 8, 9, 11, 12] for number in numbers: if number % 2 == 0: print(f"最初の偶数: {number}") break else: print("偶数が見つかりませんでした")
実行結果:
最初の偶数: 8
while文でのbreak
例1: ユーザー入力の終了
機能: while Trueで無限ループを作り、breakで抜けるパターン。
書き方:
Pythonwhile True: 入力処理 if 終了条件: break
用途: 対話型プログラム、メニュー選択、入力待機
注意点: breakがないと無限ループになる
Pythonwhile True: command = input("コマンドを入力 (quit で終了): ") if command == "quit": print("プログラムを終了します") break print(f"実行: {command}")
例2: パスワード認証
Pythoncorrect_password = "python123" max_attempts = 3 attempts = 0 while attempts < max_attempts: password = input("パスワード: ") attempts += 1 if password == correct_password: print("ログイン成功!") break print(f"パスワードが違います(残り{max_attempts - attempts}回)") else: print("ログイン失敗。アカウントがロックされました。")
例3: 条件達成まで処理
Pythonimport random print("=== ランダム数生成 ===") count = 0 while True: number = random.randint(1, 10) count += 1 print(f"{count}回目: {number}") if number == 7: print("7が出ました!終了します") break if count >= 20: print("20回試行しましたが7は出ませんでした") break
ネストしたループでのbreak
内側のループだけ抜ける
Python# breakは最も内側のループだけを抜ける for i in range(3): print(f"\n外側のループ: {i}") for j in range(5): if j == 3: print(" 内側のループをbreak") break print(f" 内側: {j}") print(f"外側のループ {i} 終了")
実行結果:
外側のループ: 0
内側: 0
内側: 1
内側: 2
内側のループをbreak
外側のループ 0 終了
外側のループ: 1
内側: 0
内側: 1
内側: 2
内側のループをbreak
外側のループ 1 終了
外側のループ: 2
内側: 0
内側: 1
内側: 2
内側のループをbreak
外側のループ 2 終了
外側のループも抜けたい場合
Python# フラグを使って外側のループも抜ける found = False for i in range(5): for j in range(5): if i * j == 12: print(f"見つけました: {i} × {j} = 12") found = True break if found: break print("検索終了")
実行結果:
見つけました: 3 × 4 = 12
検索終了
for-else文とbreak
for-else構文
機能: breakせずにループが正常終了したときだけelseブロックを実行します。
書き方:
Pythonfor item in items: if 条件: break else: # breakされなかった場合の処理
用途: 値が見つからなかった場合の処理、全件チェック完了時の処理
注意点: breakで抜けた場合はelseブロックは実行されない
Python# 素数判定 number = 17 for i in range(2, number): if number % i == 0: print(f"{number}は素数ではありません({i}で割り切れる)") break else: print(f"{number}は素数です")
実行結果:
17は素数です
具体例
例1: リストから値を探す
Pythonstudents = ["田中", "佐藤", "鈴木", "高橋", "伊藤"] target = "鈴木" for i, student in enumerate(students): if student == target: print(f"{target}さんは{i + 1}番目にいます") break else: print(f"{target}さんは見つかりませんでした")
実行結果:
鈴木さんは3番目にいます
例2: ファイル検索
Pythonfiles = ["document.txt", "image.png", "data.csv", "report.pdf"] target_extension = ".csv" print("CSVファイルを検索中...") for file in files: if file.endswith(target_extension): print(f"見つかりました: {file}") break else: print("CSVファイルが見つかりませんでした")
実行結果:
CSVファイルを検索中...
見つかりました: data.csv
例3: 数当てゲーム
Pythonimport random answer = random.randint(1, 100) max_attempts = 10 print("=== 数当てゲーム ===") print(f"1〜100の数を当ててください({max_attempts}回まで)") for attempt in range(1, max_attempts + 1): guess = int(input(f"{attempt}回目の予想: ")) if guess == answer: print(f"正解! {attempt}回で当たりました") break elif guess < answer: print("もっと大きい数です") else: print("もっと小さい数です") else: print(f"\n残念!正解は{answer}でした")
例4: エラーチェック
Pythondata = [10, 20, 0, 30, 40] divisor = 5 print("=== 割り算処理 ===") for value in data: if value == 0: print("エラー: 0では割れません") break result = divisor / value print(f"{divisor} ÷ {value} = {result}") else: print("すべての処理が完了しました")
実行結果:
=== 割り算処理 ===
10 ÷ 5 = 0.5
20 ÷ 5 = 0.25
エラー: 0では割れません
例5: 在庫確認
Pythonstock = { "りんご": 10, "バナナ": 5, "オレンジ": 0, "ぶどう": 8 } print("=== 在庫確認 ===") for item, quantity in stock.items(): if quantity == 0: print(f"⚠️ {item}の在庫がありません") break print(f"{item}: {quantity}個") else: print("\nすべての商品に在庫があります")
実行結果:
=== 在庫確認 ===
りんご: 10個
バナナ: 5個
⚠️ オレンジの在庫がありません
例6: メニュー選択
Pythonprint("=== 計算機 ===") while True: print("\n1. 足し算") print("2. 引き算") print("3. 掛け算") print("4. 割り算") print("0. 終了") choice = input("\n選択してください: ") if choice == "0": print("計算機を終了します") break if choice in ["1", "2", "3", "4"]: a = float(input("1つ目の数値: ")) b = float(input("2つ目の数値: ")) if choice == "1": print(f"結果: {a + b}") elif choice == "2": print(f"結果: {a - b}") elif choice == "3": print(f"結果: {a * b}") elif choice == "4": if b != 0: print(f"結果: {a / b}") else: print("エラー: 0では割れません") else: print("無効な選択です")
よくある間違い
間違い1: ループの外でbreak
Python# 間違い: ループの外では使えない if x > 10: break # エラー: ループの中でしか使えない # 正しい for x in range(20): if x > 10: break
間違い2: break後の処理
Python# break後の処理は実行されない for i in range(10): if i == 5: break print(i) # ここまで実行される # i == 5 のときbreakされるので、5は表示されない
間違い3: 外側のループを抜けられない
Python# 間違い: breakは内側のループだけ抜ける for i in range(3): for j in range(3): if i == 1 and j == 1: break # 内側のループだけ抜ける # 正しい: フラグを使う found = False for i in range(3): for j in range(3): if i == 1 and j == 1: found = True break if found: break
間違い4: for-elseの誤解
Python# for-elseは「見つからなかった場合」の処理 numbers = [1, 2, 3, 4, 5] for num in numbers: if num == 3: print("3を見つけました") break else: # breakされたのでelseは実行されない print("これは表示されない")
間違い5: 条件の位置
Python# 間違い: 処理後にチェック for i in range(10): print(i) if i == 5: break # 5も表示されてしまう # 正しい: 処理前にチェック for i in range(10): if i == 5: break print(i) # 5は表示されない
練習問題
問題1(基礎)⭐☆☆
1から10まで表示するが、7で止めるプログラムを書いてください。
💡 ヒント
if文で7をチェックし、breakします。
✅ 解答例
Pythonfor i in range(1, 11): if i == 7: break print(i)
実行結果:
1
2
3
4
5
6
解説: 7になったらbreakするので、1から6まで表示されます。
問題2(基礎)⭐☆☆
リスト ["犬", "猫", "鳥", "魚"] から"鳥"を探し、見つかったら「見つかりました」と表示してください。
💡 ヒント
for文で各要素をチェックし、一致したらbreakします。
✅ 解答例
Pythonanimals = ["犬", "猫", "鳥", "魚"] for animal in animals: if animal == "鳥": print(f"{animal}を見つけました") break
実行結果:
鳥を見つけました
解説: "鳥"が見つかった時点でループを抜けています。
問題3(応用)⭐⭐☆
1から順に足していき、合計が100を超えたら終了するプログラムを書いてください。何回で超えたかも表示してください。
💡 ヒント
while Trueで無限ループを作り、条件でbreakします。
✅ 解答例
Pythontotal = 0 count = 0 while True: count += 1 total += count if total > 100: print(f"{count}回で合計が100を超えました") print(f"合計: {total}") break
実行結果:
14回で合計が100を超えました
合計: 105
解説: 合計が100を超えた時点でbreakし、回数と合計を表示しています。
まとめ
このレッスンでは、break文でループを途中終了する方法を学びました。
- break文は、条件を満たした時点で現在のループを終了します。
- 探索処理で目的の値が見つかったときに効率化できます。
- break後はループ内の残り処理が実行されない点を理解しました。
- ネストしたループでは、breakは最も内側のループに作用します。
- 終了条件を明確にすると、意図した位置で処理を止められます。
break文 - ループを途中で抜ける
目次
このレッスンで学ぶこと
- break文とは何か
- break文の使い方
- for文とwhile文でのbreak
- break文の実用例
break文とは
break文は、ループ処理を途中で完全に終了し、ループの外に処理を移す制御構文です。ループ内で特定の条件を満たしたときに、残りの処理をスキップしてループを抜ける必要がある場合に使用されます。
break文の基本構造
Pythonfor 変数 in コレクション: if 終了条件: break # ループを抜ける while 条件式: if 終了条件: break # ループを抜ける
break文の構成要素
| 要素 | 説明 | 例 |
|---|---|---|
break | ループを抜けるキーワード | 必須 |
| 配置 | ループの中(if文の中) | 通常はif文の中で使用 |
| 範囲 | 最も内側のループだけ抜ける | ネストの場合、内側のみ |
| ループ外 | breakの後の処理は実行されない | 次のループに進まない |
break文の特徴
- 最も内側のループだけを抜ける(ネストの場合)
- ループ内でのみ使用可能(ループ外ではエラー)
- break後のループ内処理は実行されない
- 値の検索やエラー時の処理中断に便利
簡単な例
Python# リストから特定の値を探す numbers = [1, 5, 3, 8, 2] for num in numbers: if num == 8: print("8を見つけました!") break # ループを抜ける print(f"確認中: {num}") # 実行結果: # 確認中: 1 # 確認中: 5 # 確認中: 3 # 8を見つけました! # while Trueで無限ループから抜ける while True: command = input("入力 (quit で終了): ") if command == "quit": break print(f"実行: {command}")
なぜbreak文が必要なのか?
ループ処理の途中で、特定の条件を満たしたときに繰り返しを終了したい場合があります。
Python# リストから特定の値を探す numbers = [1, 5, 3, 8, 2, 9, 4] for number in numbers: if number == 8: print("8を見つけました!") break # ここでループを抜ける print(f"確認中: {number}") print("検索終了")
実行結果:
確認中: 1
確認中: 5
確認中: 3
8を見つけました!
検索終了
break文を使うことで、条件を満たしたらすぐにループを終了できます。
💡 豆知識: break文は英語で「壊す、中断する」という意味です。ループを「中断」してループの外に出る処理を表しています。
break文の基本
機能: ループ(for文やwhile文)を途中で抜けて、ループの次の処理に移ります。
書き方:
Pythonfor item in items: if 条件: break # ループを抜ける 処理 while 条件: if 条件: break # ループを抜ける 処理
用途: 目的の値が見つかったら終了、エラー時の中断、ユーザーが終了を指示
注意点:
- breakは最も内側のループだけを抜ける
- ループ外では使えない
- break後のループ内処理は実行されない
Python# 基本的な使い方 for i in range(10): if i == 5: break print(i) print("ループ終了")
実行結果:
0
1
2
3
4
ループ終了
for文でのbreak
例1: 値の検索
Pythonfruits = ["りんご", "バナナ", "オレンジ", "ぶどう", "メロン"] target = "オレンジ" for fruit in fruits: if fruit == target: print(f"{target}を見つけました!") break print(f"確認中: {fruit}")
実行結果:
確認中: りんご
確認中: バナナ
オレンジを見つけました!
例2: 合計が目標値を超えたら終了
Pythonnumbers = [10, 20, 15, 30, 25, 5] total = 0 target = 50 for number in numbers: total += number print(f"{number}を加算: 合計 = {total}") if total >= target: print(f"目標の{target}に到達しました!") break
実行結果:
10を加算: 合計 = 10
20を加算: 合計 = 30
15を加算: 合計 = 45
30を加算: 合計 = 75
目標の50に到達しました!
例3: 最初の偶数を見つける
Pythonnumbers = [1, 3, 5, 8, 9, 11, 12] for number in numbers: if number % 2 == 0: print(f"最初の偶数: {number}") break else: print("偶数が見つかりませんでした")
実行結果:
最初の偶数: 8
while文でのbreak
例1: ユーザー入力の終了
機能: while Trueで無限ループを作り、breakで抜けるパターン。
書き方:
Pythonwhile True: 入力処理 if 終了条件: break
用途: 対話型プログラム、メニュー選択、入力待機
注意点: breakがないと無限ループになる
Pythonwhile True: command = input("コマンドを入力 (quit で終了): ") if command == "quit": print("プログラムを終了します") break print(f"実行: {command}")
例2: パスワード認証
Pythoncorrect_password = "python123" max_attempts = 3 attempts = 0 while attempts < max_attempts: password = input("パスワード: ") attempts += 1 if password == correct_password: print("ログイン成功!") break print(f"パスワードが違います(残り{max_attempts - attempts}回)") else: print("ログイン失敗。アカウントがロックされました。")
例3: 条件達成まで処理
Pythonimport random print("=== ランダム数生成 ===") count = 0 while True: number = random.randint(1, 10) count += 1 print(f"{count}回目: {number}") if number == 7: print("7が出ました!終了します") break if count >= 20: print("20回試行しましたが7は出ませんでした") break
ネストしたループでのbreak
内側のループだけ抜ける
Python# breakは最も内側のループだけを抜ける for i in range(3): print(f"\n外側のループ: {i}") for j in range(5): if j == 3: print(" 内側のループをbreak") break print(f" 内側: {j}") print(f"外側のループ {i} 終了")
実行結果:
外側のループ: 0
内側: 0
内側: 1
内側: 2
内側のループをbreak
外側のループ 0 終了
外側のループ: 1
内側: 0
内側: 1
内側: 2
内側のループをbreak
外側のループ 1 終了
外側のループ: 2
内側: 0
内側: 1
内側: 2
内側のループをbreak
外側のループ 2 終了
外側のループも抜けたい場合
Python# フラグを使って外側のループも抜ける found = False for i in range(5): for j in range(5): if i * j == 12: print(f"見つけました: {i} × {j} = 12") found = True break if found: break print("検索終了")
実行結果:
見つけました: 3 × 4 = 12
検索終了
for-else文とbreak
for-else構文
機能: breakせずにループが正常終了したときだけelseブロックを実行します。
書き方:
Pythonfor item in items: if 条件: break else: # breakされなかった場合の処理
用途: 値が見つからなかった場合の処理、全件チェック完了時の処理
注意点: breakで抜けた場合はelseブロックは実行されない
Python# 素数判定 number = 17 for i in range(2, number): if number % i == 0: print(f"{number}は素数ではありません({i}で割り切れる)") break else: print(f"{number}は素数です")
実行結果:
17は素数です
具体例
例1: リストから値を探す
Pythonstudents = ["田中", "佐藤", "鈴木", "高橋", "伊藤"] target = "鈴木" for i, student in enumerate(students): if student == target: print(f"{target}さんは{i + 1}番目にいます") break else: print(f"{target}さんは見つかりませんでした")
実行結果:
鈴木さんは3番目にいます
例2: ファイル検索
Pythonfiles = ["document.txt", "image.png", "data.csv", "report.pdf"] target_extension = ".csv" print("CSVファイルを検索中...") for file in files: if file.endswith(target_extension): print(f"見つかりました: {file}") break else: print("CSVファイルが見つかりませんでした")
実行結果:
CSVファイルを検索中...
見つかりました: data.csv
例3: 数当てゲーム
Pythonimport random answer = random.randint(1, 100) max_attempts = 10 print("=== 数当てゲーム ===") print(f"1〜100の数を当ててください({max_attempts}回まで)") for attempt in range(1, max_attempts + 1): guess = int(input(f"{attempt}回目の予想: ")) if guess == answer: print(f"正解! {attempt}回で当たりました") break elif guess < answer: print("もっと大きい数です") else: print("もっと小さい数です") else: print(f"\n残念!正解は{answer}でした")
例4: エラーチェック
Pythondata = [10, 20, 0, 30, 40] divisor = 5 print("=== 割り算処理 ===") for value in data: if value == 0: print("エラー: 0では割れません") break result = divisor / value print(f"{divisor} ÷ {value} = {result}") else: print("すべての処理が完了しました")
実行結果:
=== 割り算処理 ===
10 ÷ 5 = 0.5
20 ÷ 5 = 0.25
エラー: 0では割れません
例5: 在庫確認
Pythonstock = { "りんご": 10, "バナナ": 5, "オレンジ": 0, "ぶどう": 8 } print("=== 在庫確認 ===") for item, quantity in stock.items(): if quantity == 0: print(f"⚠️ {item}の在庫がありません") break print(f"{item}: {quantity}個") else: print("\nすべての商品に在庫があります")
実行結果:
=== 在庫確認 ===
りんご: 10個
バナナ: 5個
⚠️ オレンジの在庫がありません
例6: メニュー選択
Pythonprint("=== 計算機 ===") while True: print("\n1. 足し算") print("2. 引き算") print("3. 掛け算") print("4. 割り算") print("0. 終了") choice = input("\n選択してください: ") if choice == "0": print("計算機を終了します") break if choice in ["1", "2", "3", "4"]: a = float(input("1つ目の数値: ")) b = float(input("2つ目の数値: ")) if choice == "1": print(f"結果: {a + b}") elif choice == "2": print(f"結果: {a - b}") elif choice == "3": print(f"結果: {a * b}") elif choice == "4": if b != 0: print(f"結果: {a / b}") else: print("エラー: 0では割れません") else: print("無効な選択です")
よくある間違い
間違い1: ループの外でbreak
Python# 間違い: ループの外では使えない if x > 10: break # エラー: ループの中でしか使えない # 正しい for x in range(20): if x > 10: break
間違い2: break後の処理
Python# break後の処理は実行されない for i in range(10): if i == 5: break print(i) # ここまで実行される # i == 5 のときbreakされるので、5は表示されない
間違い3: 外側のループを抜けられない
Python# 間違い: breakは内側のループだけ抜ける for i in range(3): for j in range(3): if i == 1 and j == 1: break # 内側のループだけ抜ける # 正しい: フラグを使う found = False for i in range(3): for j in range(3): if i == 1 and j == 1: found = True break if found: break
間違い4: for-elseの誤解
Python# for-elseは「見つからなかった場合」の処理 numbers = [1, 2, 3, 4, 5] for num in numbers: if num == 3: print("3を見つけました") break else: # breakされたのでelseは実行されない print("これは表示されない")
間違い5: 条件の位置
Python# 間違い: 処理後にチェック for i in range(10): print(i) if i == 5: break # 5も表示されてしまう # 正しい: 処理前にチェック for i in range(10): if i == 5: break print(i) # 5は表示されない
練習問題
問題1(基礎)⭐☆☆
1から10まで表示するが、7で止めるプログラムを書いてください。
💡 ヒント
if文で7をチェックし、breakします。
✅ 解答例
Pythonfor i in range(1, 11): if i == 7: break print(i)
実行結果:
1
2
3
4
5
6
解説: 7になったらbreakするので、1から6まで表示されます。
問題2(基礎)⭐☆☆
リスト ["犬", "猫", "鳥", "魚"] から"鳥"を探し、見つかったら「見つかりました」と表示してください。
💡 ヒント
for文で各要素をチェックし、一致したらbreakします。
✅ 解答例
Pythonanimals = ["犬", "猫", "鳥", "魚"] for animal in animals: if animal == "鳥": print(f"{animal}を見つけました") break
実行結果:
鳥を見つけました
解説: "鳥"が見つかった時点でループを抜けています。
問題3(応用)⭐⭐☆
1から順に足していき、合計が100を超えたら終了するプログラムを書いてください。何回で超えたかも表示してください。
💡 ヒント
while Trueで無限ループを作り、条件でbreakします。
✅ 解答例
Pythontotal = 0 count = 0 while True: count += 1 total += count if total > 100: print(f"{count}回で合計が100を超えました") print(f"合計: {total}") break
実行結果:
14回で合計が100を超えました
合計: 105
解説: 合計が100を超えた時点でbreakし、回数と合計を表示しています。
まとめ
このレッスンでは、break文でループを途中終了する方法を学びました。
- break文は、条件を満たした時点で現在のループを終了します。
- 探索処理で目的の値が見つかったときに効率化できます。
- break後はループ内の残り処理が実行されない点を理解しました。
- ネストしたループでは、breakは最も内側のループに作用します。
- 終了条件を明確にすると、意図した位置で処理を止められます。