Pythonのbreakとcontinueの違いを理解しよう!ループ制御の使い分けを解説

この記事のポイント

ループ処理を書いていると、「特定の条件でループを終わらせたい」「ある要素だけ処理をスキップしたい」といった場面に出会います。そんなとき活躍するのがbreak文とcontinue文です。

この記事を読むと、次のようなことがわかります。

  • break文とcontinue文それぞれの動作と違い
  • ループを「抜ける」と「飛ばす」の使い分け
  • whileループや入れ子ループでの実践的な使い方
  • pass文やreturn文との違い
  • 実際の開発で迷わない、状況に応じた選択基準

こういったポイントを理解することで、効率的で読みやすいループ処理が書けるようになります。

ループ制御は「ループを完全に終わらせたいのか、今回の繰り返しだけスキップしたいのか」という視点で考えると、自然と正しい選択ができるようになります。

実際にコードを動かしながら、一緒に学んでいきましょう。

目次

breakとcontinueの概要

ループ処理を施したいとき、最初から最後まで全ての要素を処理することもあれば、途中で条件によって処理を変えたいケースもあります。

例えば、「目的のデータを見つけたらそこで終了したい」とか、「特定の条件に合わない要素は処理をスキップしたい」といった状況です。

このような場面で活躍するのが、break文とcontinue文です。どちらもループの流れを変える制御文ですが、それぞれ異なる役割を持っています。

【関連】
Pythonをもっと詳しく学ぶならpaizaラーニング

breakの動作と特徴

break文は、実行されるとループを完全に終了します。

forループでもwhileループでも、break文が実行された時点でループは終わり、ループの次の処理に移ります。

animals = ["イヌ", "ネコ", "ゾウ", "ライオン"] for animal in animals: if animal == "ゾウ": break print(animal)

出力結果

イヌ
ネコ

この例では、リストの中に「ゾウ」が見つかった時点でbreak文が実行され、ループが完全に終了します。そのため、「ゾウ」とその後の「ライオン」は表示されません。

また、入れ子(ネスト)になったループで使う場合は注意が必要です。

break文は最も内側のループだけを抜けるので、外側のループまで終了させたい場合は、フラグ変数を使うか関数化してreturnを使う必要があります。

continueの動作と特徴

continue文は、現在の繰り返し処理だけをスキップして、次の繰り返しに進みます。「今回はパスして、次の要素に進む」というイメージです。

ループ自体は終了せず、残りの要素について処理を続けます。

animals = ["イヌ", "ネコ", "ゾウ", "ライオン"] for animal in animals: if animal == "ゾウ": continue print(animal)

出力結果

イヌ
ネコ
ライオン

この例では、「ゾウ」のときだけcontinue文が実行されてprintがスキップされますが、ループ自体は続いているので「ライオン」は表示されます。

特定の条件に合う要素だけを処理から除外したいとき、continue文を使うとコードがシンプルになります。

なお、以下の記事でもcontinueについて詳しく解説しています。あわせてご覧ください。

【関連】Pythonのcontinueを初心者向けに解説!基本からループ制御まで

passとの違い

ループ制御でよく混同されるのがpass文です。pass文は「何もしない」ことを明示するためのプレースホルダーで、ループの流れには一切影響しません。

break文やcontinue文とは異なり、ループ制御を行わず、単に構文上必要な場所を埋めるために使います。

プレースホルダーとは、「後で埋める予定の空欄」のような役割を果たすものです。

Pythonでは、if文やfor文、関数定義などのブロックに何も処理を書かないとエラーになってしまいます。
そんなとき、pass文を置いておくことで「ここは意図的に空けています」と示すことができるのです。

for i in range(3): if i == 1: pass print(f"回数: {i}")

出力結果

回数: 0
回数: 1
回数: 2

pass文は、コードのひな型を作成するときや、条件分岐で「何もしない」ケースを明示したいときに使用します。

なお、以下の記事ではcontinueとpassの違いや使い分けについて詳しく解説しています。こちらもあわせてご覧ください。

【関連】Pythonのpassとcontinueの違いや使い分けのコツを初心者向けに解説

breakとcontinueの使い分けの考え方

使い分けの基準は、目的によって決まります。

特定の条件でループを完全に終了したい場合はbreak文を使います。
例えば、「リストから目標の値を見つけたら、それ以上探す必要がないので終了する」といったケースです。

特定の要素だけを処理から除外したい場合はcontinue文を使います。
例えば、「不正なデータや条件に合わないデータをスキップして、残りのデータは通常通り処理する」といったケースです。

scores = [60, 75, 90, 85] for score in scores: if score >= 90: print("優秀な成績を発見") break for score in scores: if score < 70: continue print(f"合格点: {score}")

出力結果

優秀な成績を発見
合格点: 75
合格点: 90
合格点: 85

判断に迷った場合は、「ループを抜けたいのか、スキップしたいのか」を考えると、適切な選択ができるでしょう。

breakの具体的な使い方

break文は、特定の条件が満たされたときにループを完全に終了させる制御文です。

例えば、リストの中から目的のデータを探していて見つかったら、それ以上探す必要はありませんよね。
また、エラーが発生したときに処理を中断したい場合もあります。

このように「それ以上ループを続ける必要がない」という場面でbreak文は活躍します。

実際のコード例を通して、break文の効果的な使い方を見ていきましょう。

条件達成時にループを終了する例

リストから特定の要素を探す処理では、目的の要素を見つけた時点でループを終了すれば、不要な処理を避けられます。

実際にコード例を見てみましょう。

zoo_animals = ["キリン", "パンダ", "ライオン", "ゾウ", "トラ"] target = "ライオン" for animal in zoo_animals: print(f"チェック中: {animal}") if animal == target: print(f"{target}を発見しました") break print("検索終了")

出力結果

チェック中: キリン
チェック中: パンダ
チェック中: ライオン
ライオンを発見しました
検索終了

リストの要素を順番にチェックしていき、「ライオン」を見つけた時点でbreak文が実行されます。その結果、「ゾウ」と「トラ」のチェックは行われず、効率的な検索が実現できています。

このように、目標を見つけたらすぐに処理を終了することで、プログラムの実行速度を向上させることができます。

whileループとの組み合わせ

while Trueとbreak文を組み合わせることで、「条件が満たされるまで無限に続くループ」を作成できます。

この方法は、ユーザー入力の処理や、特定の状態になるまで処理を繰り返したいときによく使われます。

count = 0 while True: count += 1 print(f"カウント: {count}") if count >= 3: print("ウサギがゴールしました") break

出力結果

カウント: 1
カウント: 2
カウント: 3
ウサギがゴールしました

while Trueで無限ループを作り、countが3以上になったときにbreak文でループを抜けています。

この方法を使う際の注意点は、必ずbreak文に到達する条件を設定することです。条件を忘れると、プログラムが永遠に終わらない無限ループになってしまいます。

入れ子ループでのbreakの挙動

ネストした(入れ子になった)ループ構造では、break文は実行された時点で最も内側のループのみを抜けます。

外側のループは、継続して実行されることに注意しましょう。

farm_areas = [["ウシ", "ウマ"], ["ニワトリ", "ブタ", "ヤギ"]] for area_num, animals in enumerate(farm_areas): print(f"エリア{area_num + 1}:") for animal in animals: if animal == "ブタ": print("ブタを発見、このエリア終了") break print(f" {animal}")

出力結果

エリア1:
  ウシ
  ウマ
エリア2:
  ニワトリ
ブタを発見、このエリア終了

このプログラムでは、エリア2で「ブタ」が見つかったときに内側のループが終了しますが、外側のループは続いています。

ただし、エリア2が最後なので、結果的にプログラム全体が終了しています。

もし外側のループまで抜けたい場合は、フラグ変数を使うか、処理を関数化してreturn文で終了させましょう。

returnとの使い分け

関数内でループ処理を行う場合、break文とreturn文のどちらを使うかで処理の流れが変わります。

break文はループだけを抜け、その後の処理は続きます。一方、return文は関数全体を終了させ、呼び出し元に値を返します。

def find_big_animal(): animals = ["ハムスター", "ネコ", "ゾウ", "イヌ"] for animal in animals: print(f"確認中: {animal}") if animal == "ゾウ": return f"{animal}は大きな動物です" return "大きな動物が見つかりませんでした" result = find_big_animal() print(result)

出力結果

確認中: ハムスター
確認中: ネコ
確認中: ゾウ
ゾウは大きな動物です

このプログラムでは、「ゾウ」が見つかった時点でreturn文が実行され、関数全体が終了します。そのため、「イヌ」のチェックは行われません。

使い分けの基準は、関数の戻り値が必要かどうかです。

戻り値が必要な場合はreturn文を、ループ終了後に続く処理がある場合はbreak文を選択します。

continueの具体的な使い方

ループ処理をしていると、「全ての要素を処理したいけど、特定の条件に当てはまるものだけはスキップしたい」という場面があります。

このような場面で活躍するのがcontinue文です。continue文を使うと、現在の繰り返し処理だけをスキップして、次の要素の処理に進むことができます。

実際のコード例を見ながら、continue文の効果的な使い方を学んでいきましょう。

特定条件のときだけ処理を飛ばす例

リスト内の特定の要素だけを処理対象から除外したいときは、continue文を使うと簡潔に書けます。

pet_animals = ["イヌ", "ネコ", "ハムスター", "インコ", "ウサギ"] for pet in pet_animals: if pet == "ハムスター": continue print(f"{pet}にエサをあげました")

出力結果

イヌにエサをあげました
ネコにエサをあげました
インコにエサをあげました
ウサギにエサをあげました

ペットのリストを順番に処理していきますが、「ハムスター」だけはcontinue文によってprint()がスキップされます。

ループ自体は終了せず、その後の「インコ」や「ウサギ」は通常通り処理されているのも確認できるでしょう。

このように、特定の条件に該当する要素のみを除外して、他の要素は通常通り処理できるのがcontinue文の特徴です。

複数条件分岐での活用

複数のif文をネストする代わりに、continue文を使うことで条件分岐を浅くして、コードの可読性を上げるというテクニックがあります。

処理したくない条件を先に除外することで、メインの処理を明確にしています。

animal_weights = [5, 15, 250, 8, 400, 2] for weight in animal_weights: if weight < 10: continue if weight > 300: continue print(f"適切なサイズ: {weight}kg の動物")

出力結果

適切なサイズ: 15kg の動物
適切なサイズ: 250kg の動物

体重が10kg未満の動物と300kgを超える動物を除外して、適切なサイズの動物だけを表示しています。

不要な条件を先に除外することで、「どんな条件のときに処理するのか」がわかりやすくなっているはずです。

文字列処理やリスト処理のスキップ例

データ処理では、空の文字列やNoneなどの無効な値が混ざっていることがあります。

このような不正なデータをスキップしながら処理を継続したいとき、continue文が最適です。

animal_data = ["ライオン", "", "トラ", None, "ヒョウ", "チーター"] for animal in animal_data: if not animal: continue if len(animal) < 2: continue print(f"登録された動物: {animal}")

出力結果

登録された動物: ライオン
登録された動物: トラ
登録された動物: ヒョウ
登録された動物: チーター

このプログラムでは、空の文字列("")やNone、そして2文字未満の名前を持つデータをスキップしています。

データの前処理やバリデーション(検証)処理で、不正なデータを除外しながら処理を継続できるのがcontinue文の便利なところです。

注意点とよくあるミス

whileループでcontinue文を使う際は、ループ変数の更新処理がスキップされないよう注意しましょう。

更新処理を忘れると、無限ループが発生する可能性があるからです。

i = 0 while i < 5: i += 1 if i == 3: continue print(f"カウンター: {i}")

出力結果

カウンター: 1
カウンター: 2
カウンター: 4
カウンター: 5

この例では、i += 1という更新処理をcontinue文よりも前に配置しています。もし更新処理がcontinue文の後にあると、i == 3のときに更新がスキップされて無限ループになってしまいます。

whileループでは、continue文の前にループ変数の更新を行うか、forループの使用を検討することで安全にスキップ処理が実装できます。

breakとcontinueの比較と使い分けまとめ

ここまでbreak文とcontinue文をそれぞれ解説してきましたが、実際のプログラミングではどちらを使えばいいのか迷うこともあるかもしれません。

ここでは、両者の違いを明確に整理し、適切な場面で正しい制御文を選択できるようになるための基準を確認していきます。比較表や具体例を通して、使い分けのポイントを押さえましょう。

動作の違いの整理(抜ける・飛ばす)

break文とcontinue文の最も大きな違いを押さえておきましょう。それは「ループをどう扱うか」という点です。

break文はループを完全に終了させます。一方、continue文は現在の繰り返しだけをスキップして、ループ自体は継続します。この違いを表で整理すると、次のようになります。

制御文

動作

ループの継続

用途

break

ループを完全に抜ける

しない

目標達成、エラー検知時

continue

現在の繰り返しをスキップ

する

条件に合わない要素の除外

実際のコードで、違いを確認してみましょう。

animals = ["ウサギ", "カメ", "キツネ"] print("=== break の例 ===") for animal in animals: if animal == "カメ": break print(animal) print("=== continue の例 ===") for animal in animals: if animal == "カメ": continue print(animal)

出力結果

=== break の例 ===
ウサギ
=== continue の例 ===
ウサギ
キツネ

breakの例では、「カメ」が見つかった時点でループが終了するため、「ウサギ」だけが表示されます。一方、continueの例では、「カメ」のときだけ処理がスキップされ、その後の「キツネ」は通常通り表示されます。「ループを終わらせたいのか、要素を飛ばしたいのか」という判断基準で使い分けましょう。

whileでの使い分けポイント

whileループでは、break文の方が使用頻度が高く、安全に使いやすい傾向があります。continue文は、ループ変数の更新タイミングに注意しないと無限ループのリスクがあるためです。

count = 0 while True: count += 1 if count > 3: break print(f"クマが{count}回鳴きました") print("=== 危険なcontinueの例 ===") num = 0 while num < 3: num += 1 if num == 2: continue print(f"トリが{num}回鳴きました")

出力結果

クマが1回鳴きました
クマが2回鳴きました
クマが3回鳴きました
=== 危険なcontinueの例 ===
トリが1回鳴きました
トリが3回鳴きました

break文を使った例では、while Trueで無限ループを作り、条件が満たされたらbreakで抜けるというシンプルな構造になっています。

continue文を使った例では、ループ変数numの更新をcontinue文より前に配置しています。もし更新処理が後にあると、num == 2のときに更新がスキップされて無限ループになってしまいます。

whileループでは、できる限りbreak文を選択し、continue文が必要な場合は変数更新の位置を慎重に検討しましょう。

入れ子構造での制御の考え方

ネストした(入れ子になった)ループでは、どの階層のループに対して制御文が作用するかを正確に把握することが大切です。

break文もcontinue文も、実行された時点で最も内側のループにのみ影響します。つまり、外側のループは通常通り継続することを前提として設計する必要があるということです。

zoo_sections = [["シマウマ", "キリン"], ["ライオン", "トラ"]] for section_num, animals in enumerate(zoo_sections): print(f"セクション{section_num + 1}") for animal in animals: if animal == "キリン": print(f" {animal}で内側ループ終了") break print(f" {animal}") print(f"セクション{section_num + 1}完了")

出力結果

セクション1
  シマウマ
  キリンで内側ループ終了
セクション1完了
セクション2
  ライオン
  トラ
セクション2完了

このプログラムでは、セクション1で「キリン」が見つかったときに内側のループが終了しますが、外側のループは継続しています。そのため、セクション2の処理も実行されています。

処理フローを読みやすくする選択基準

break文とcontinue文が適している場面は、それぞれ次のとおりです。

break文が適している場面

  • リストから目的のデータを見つけたとき
  • 処理中にエラーや異常な状態を検知したとき
  • while Trueで作った無限ループから抜け出したいとき

continue文が適している場面

  • 特定の条件に合わないデータだけを除外して処理を続けたいとき
  • 空の文字列やNoneなどの無効なデータをスキップしたいとき
  • 複数の除外条件がある場合に、if文のネストを避けたいとき

判断に迷ったときは、この処理はループ全体を終わらせたいのか、それとも特定の要素だけ除外したいのかを考えると、自然と正しい選択ができます。また、どちらを使っても実現できる場合は、コードを読む人にとって意図がわかりやすい方を選びましょう。

よくある質問(Q&A)

Q: break文は関数の戻り値に影響しますか?

A: break文自体は戻り値に直接影響しません。ループを抜けた後の処理で戻り値が決まります。関数全体を終了させたい場合はreturn文を使用してください。

Q: continueでwhile文が止まらないのはなぜ?

A: ループ変数の更新処理がcontinue文によってスキップされている可能性があります。更新処理をcontinue文より前に配置するか、for文の使用を検討してください。

Q: 入れ子ループで外側も抜けるには?

A: フラグ変数を使用するか、処理を関数化してreturn文で終了させる方法があります。Pythonには他言語のlabeledbreakに相当する機能はありません。

def search_animal(): areas = [["イヌ", "ネコ"], ["ゾウ", "キリン"]] for area in areas: for animal in area: if animal == "ゾウ": return f"{animal}を発見" return "見つかりませんでした" print(search_animal())

出力結果

ゾウを発見

Q: passとcontinueはどう違いますか?

A: pass文は何もしないプレースホルダーで、continue文はループの次の繰り返しに進む制御文です。pass文はループの流れに影響せず、構文上必要な場合に使用します。

まとめ

Pythonのbreak文とcontinue文は、ループ処理の流れをコントロールする基本的な制御文です。

この記事では、それぞれの動作の違いから実践的な使い方、使い分けの基準まで解説しました。

break文とcontinue文を活用したいのは、次のような場面です。

break文が活躍する場面

  • 目的のデータが見つかったらループを終了したいとき
  • 条件を満たしたら無限ループから抜け出したいとき
  • 入れ子ループの内側だけを終了させたいとき

continue文が活躍する場面

  • 特定の条件のときだけ処理をスキップしたいとき
  • 無効なデータを除外して処理を続けたいとき
  • 条件分岐のネストを浅くして見通しを良くしたいとき

break文とcontinue文を使う上で、押さえておきたいポイントは次の通りです。

重要なポイント

  • break文はループを完全に終了させる
  • continue文は現在の繰り返しだけをスキップする
  • pass文はループ制御を行わず、「何もしない」ことを明示するプレースホルダー
  • break文はループのみを終了するが、return文は関数全体を終了する
  • whileループでcontinue文を使う際は、ループ変数の更新タイミングに注意が必要
  • 入れ子ループでは、break文もcontinue文も最も内側のループにのみ影響する

初めてループ制御を学ぶ方も、この記事で紹介した基本的な使い方と実用例を参考に、実際にコードを書いてみてください。

最初のうちは、どちらがどちらの役割か混同することもあるでしょう。しかし、「完全に終わらせるのか、それともスキップするのか」という視点さえあれば、適切な制御文を自然と選択できるようになります。

ループ処理はプログラミングの根幹を支える極めて重要な概念です。breakやcontinueを使いこなすことで、より効率的で、無駄のない洗練されたコードを書けるようになります。

ぜひループ処理をマスターし、確かなスキルを身に付けましょう。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. ナレッジ
  3. Pythonのナレッジ記事一覧
  4. Pythonのbreakとcontinueの違いを理解しよう!ループ制御の使い分けを解説