Python breakの使い方

この記事のポイント

Pythonのbreak文は、for文やwhile文などの繰り返し処理を、途中で終了させるために使われます。この記事では、初めてPythonに触れる方でも理解できるように、次の3点を順に説明します。

  • breakの役割と、繰り返し処理が止まる仕組みの基礎知識
  • for文とwhile文それぞれでのbreakの基本的な書き方
  • リスト検索や素数判定など、実際の場面で役立つ8つの使用例

記事中には、学んでおきたいポイントと共に、簡単なサンプルコードと出力結果を掲載しています。実際に動かしながら、breakの役割を学習していきましょう

目次

breakとは?

Pythonにおけるbreakは、Pythonのプログラムでループ処理(forループやwhileループ)を途中終了させるための制御文です。一般ではbreak文と呼ばれたりもします。

ループ処理は通常、「条件が満たされるまで」または「全ての要素を処理するまで」継続するものです。しかし、場合によっては、特定条件が発生した時点でループを抜け出したいこともあるでしょう。

Pythonのbreak文は繰り返し処理(ループ)の途中で、強制的にループを終了させるための構文です。

Pythonには主なループ構文として、for文とwhile文があります。for文は要素などを順番に取り出しながら処理を繰り返し、while文は指定した条件が成り立つ間、処理を繰り返します。 しかし、ループの途中で「目的のデータが見つかったので、これ以上続ける必要がない」という場面も少なくありません。

そんなときにbreakを使うと、その場でループを即座に抜け出し、ループの次の処理へ進むことができます。

たとえば、10種類の動物が並ぶリストからネコを探す場面を考えてみます。3番目でネコが見つかったなら、残りの7種類を調べる必要はありません。この調べなくてよいという判断をプログラムに伝えるのがbreakです。

continue との違い

役割が似ている構文にcontinueがあります。両者の違いは以下の通りです。

break:ループそのものを完全に終了する
continue:現在の周回の残りの処理をスキップし、次の周回へ進む 

上記のように覚えておくと、分かりやすいでしょう。

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

基本構文

breakは、ループの内側にあるif文と組み合わせて使うことが多い文です。if文の条件が成り立ったときにbreakが実行され、その瞬間にループが終了します。まずは、for文で使う例を見てみましょう。1から9までの数を順に表示しますが、5になった時点で止めます。

def main(): """カウントを3まで増やし、ループを終了""" count = 0 while True: count += 1 if count == 3: break print(count) if __name__ == "__main__": main()

出力結果

3

上記はwhile Trueとbreakを組み合わせて、ループを終了する条件を処理の途中で指定するサンプルです。あらかじめ繰り返す回数を決めておかず、特定の条件を満たした時点でループを終了したい場合などに使われます。

実用例

ここからは、break文が実際のプログラミングでどのように使われるのか、8つのサンプルコードを通じて見ていきましょう。

どのコードもすぐにコピー&実行できるコンパクトな構成にし、「概要」「詳しい解説」「出力結果」をあわせて掲載しています。

学習を進める際は、「どの行でbreakが実行されるか」と「どのタイミングでループが終了するか」 に注目してみてください。

サンプルでは、リストの検索や合計の上限、while Trueを使った繰り返し、for文のelse、二重ループ、素数の判定といった場面を順に取り上げます。これらの事例を通して、breakによって残りの繰り返しを行わずに済む場合や、処理の流れを制御する方法を確認できます。

なお、コード内の動物の名前や数値は、動きを分かりやすくするための例です。自分で値を書き換えて実行し、結果がどう変わるかを試すと、理解がいっそう深まります。

リストから目的の動物を探して止める

リストに並んだ動物の名前を順に表示し、ウサギが出てきた時点で処理を終えるコードです。探している対象を見つけたら、それ以降の要素を調べずに処理を終了するという、検索処理の基本的な形です。

def main(): """リストの動物名を表示し、ウサギを検出したら終了""" animals = ["イヌ", "ネコ", "ウサギ", "ライオン"] for animal in animals: print(animal) if animal == "ウサギ": break if __name__ == "__main__": main()

出力結果

イヌ
ネコ
ウサギ

for文でリストの要素を1つずつ取り出し、表示した後にウサギかどうかを調べています。ウサギと一致するとbreakが実行されるため、ライオンは表示されません。もしbreakがなければ、リストの最後まで処理が続きます。要素が数百件、数千件と多くなるほど、途中で止める効果は大きくなります。検索処理では、目的のデータを見つけた時点でbreakを使うのが定番の書き方です。

終了の合図が来たらコマンドの処理を止める

ゲームやメニュー画面のように、利用者の操作を待つプログラムの動きをイメージしたサンプルです。コマンドを順番に処理し、終了を示すコマンドが現れたら、その時点で処理を終了します。

def main(): """終了コマンドが現れた時点で繰り返し処理を終了""" commands = ["歩く", "走る", "終了", "食べる"] for command in commands: if command == "終了": break print(command) if __name__ == "__main__": main()

出力結果

歩く
走る

commandsには4つの命令が入っています。for文で1つずつ取り出し、「終了」と一致したらbreakでループを抜けます。そのため、「終了」の後ろにある「食べる」は処理されません。breakの前にあるprint関数は実行されないので、「終了」自体は表示されない点もポイントです。

実際のプログラムでは、キーボードからの入力を受け取りながら、終了と入力されたら止める形でよく使われます。このように、特定の条件を満たした時点で、それ以降の処理を打ち切りたい場合にbreakが役立ちます。

合計が上限を超えたら足し算を止める

1から順に整数を足していき、合計が20を超えたところで止めるコードです。range(1, 100)と大きな範囲を指定していますが、実際にはそこまで繰り返しません。上限のある処理の例です。

def main(): """合計が20を超えたら繰り返し処理を終了""" total = 0 for number in range(1, 100): total += number if total > 20: break print(total) if __name__ == "__main__": main()

出力結果

21

変数totalに数を足し、20を超えたかどうかをif文で確認しています。1から6までを足すと合計は21になり、条件が成り立ってbreakが実行されます。ループを抜けた後で、print関数が合計を表示します。

range(1, 100)では1から99までの整数を順に取り出しますが、breakによって6回でループが終了するため、7以降の数は処理されません。このように、指定した範囲の途中でも、合計値などの条件を満たした時点でループを終了できます。

最初に見つかった偶数だけを取り出す

数値のリストから、最初に見つかった偶数を表示して終了するコードです。数値を2で割った余りが0なら偶数と判断します。条件に合うものを1つだけ探したいときに使われる方法です。   

def main(): """リストから最初に見つかった偶数を表示""" numbers = [3, 7, 8, 11, 12] for number in numbers: if number % 2 == 0: print(number) break if __name__ == "__main__": main()

出力結果

8

%は割り算の余りを求める演算子です。numberを2で割った余りが0であれば偶数なので、値を表示してからbreakを実行します。リストの先頭から調べると、3と7は奇数のため何も起こらず、3番目の8で条件が成り立ちます。この時点でbreakによってループを終了し、その後の11と12は調べていません。

偶数がすべて必要な場合はbreakを使わずに最後まで回しますが、最初の1つだけで足りる場合はbreakが向いています。目的に合わせて使い分けることが大切です。

エサの残りがなくなったらループを抜ける

動物園でエサを配る場面を想定したコードです。エサの量が0以下になるまで繰り返し、なくなったら配るのをやめます。while Trueと組み合わせて、ループの途中に終了条件を設定する形です。

def main(): """エサの残量を表示し、残量が0以下になったら終了""" food = 5 while True: print("エサの残り:", food) food -= 2 if food <= 0: break if __name__ == "__main__": main()

出力結果

エサの残り: 5
エサの残り: 3
エサの残り: 1

while Trueは条件が常に成り立つため、そのままでは繰り返し処理が終わりません。そこで、ループの中で変数foodを2ずつ減らし、0以下になったらbreakで抜けています。最初は5、次は3、その次は1と表示され、foodが-1になったところでif文の条件が成り立ちます。

繰り返す回数が事前に分からない処理では、このように条件を内側に書く方法がよく使われます。ただし、breakに到達しない条件を書くと無限ループになるので、注意が必要です。

elseと組み合わせて見つからなかった場合を判定する

リストの中にライオンがいるかを調べ、見つからなかった場合にメッセージを表示するコードです。for文にelseを付ける、Python特有の書き方を使っています。

def main(): """リストにライオンが存在するか確認""" animals = ["イヌ", "ネコ", "ウサギ"] for animal in animals: if animal == "ライオン": break else: print("ライオンはいませんでした") if __name__ == "__main__": main()

出力結果

ライオンはいませんでした

for文のelseは、ループ中にbreakが実行されず、最後まで処理してループが終了した場合に実行されます。breakでループを終了した場合は、elseの処理は実行されません。

このコードでは、リストにライオンが含まれていないため、breakは一度も実行されません。そのため、リストの最後まで処理した後にelseが実行され、メッセージが表示されます。リストにライオンが含まれていれば、その時点でbreakが実行されるため、elseは実行されません。

このようにfor文のelseを使うと、見つかったかどうかを記録する変数を用意せずに、探索対象が見つからなかった場合の処理を書けます。慣れないうちは動作が分かりにくいため、breakが実行された場合とされなかった場合の流れを確認すると理解しやすくなります。

二重ループで内側のループだけを抜ける

行と列を表すように二重のループを作り、内側のループだけをbreakで止めるコードです。breakの影響が及ぶ範囲を確認できます。

def main(): """二重ループで列の値を判定し、条件を満たすと内側のループを終了""" for row in range(1, 4): for column in range(1, 4): if column == 2: break print(f"Row: {row}, Column: {column}") if __name__ == "__main__": main()

出力結果

Row: 1, Column: 1
Row: 2, Column: 1
Row: 3, Column: 1

外側のfor文は1から3まで、内側のfor文も1から3まで繰り返す設定です。内側でcolumnが2になるとbreakが実行され、内側のループだけが終わります。外側のループは終了しないため、次のrowに進み、再び内側のループが開始されます。その結果、各行でcolumnが1のときだけ表示されます。

breakは、それが記述されている最も内側のループだけを終了します。二重ループで外側のループまで終了させたい場合は、returnやフラグ変数などを使って処理を制御する方法があります。

割り切れる数が見つかったら素数判定を終える

ある整数が素数かどうかを調べるコードです。素数とは、1より大きく、1とその数自身でしか割り切れない数のことです。ここでは9を調べ、割り切れる数が見つかった時点で判定を終えます。

def main(): """数値が素数かどうかを判定""" number = 9 is_prime = number >= 2 # 2未満の数字を除外 for divisor in range(2, number): if number % divisor == 0: is_prime = False break print(is_prime) if __name__ == "__main__": main()

出力結果

False

2から8までの数で順に9を割り、余りが0になったら素数ではないと判断します。9は3で割り切れるため、divisorが3のときにis_primeがFalseになり、breakでループを抜けます。4以降の数は調べません。

仮にbreakを書かなくても結果は変わりませんが、不要な計算を続けることになります。また、最初にTrueとしておき、割り切れる数が見つかったらFalseにして止める流れは、判定処理の定番です。

まとめ

Pythonの break文は、for文やwhile文の途中でループを終了するために使う文です。if文などと組み合わせることで、条件を満たした時点で処理を終了できます。ここまでの内容を、活躍する場面と覚えておくべき重要なポイントに分けておさらいしましょう。

breakの活躍する場面

  • リストやデータの中から目的の値を探す検索処理
  • 終了の合図が来るまで続けるwhile Trueの繰り返し
  • 合計や回数が上限に達した時点で止める制限処理

重要なポイント

  • breakは最も内側のループだけを終了させる命令
  • 多くの場合、if文と組み合わせて条件付きで実行
  • for文のelseは、breakを使わずにループが終了したときに実行

break を適切に使いこなせるようになると、無駄な繰り返し処理を省き、効率的で見通しの良いコードが書けるようになります。まずは短いサンプルコードを自身で動かして、「どのタイミングでループが止まるのか」をぜひ確かめてみてください。

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

  1. paizaトップ
  2. リファレンス
  3. Pythonのリファレンス記事一覧
  4. Python breakの使い方