Pythonのbreakの使い方!サンプル5選(ループを抜ける)

Python Python

Pythonでbreakを使う方法について書いています。
breakについて解説した後に、下記のことについて書いています。

・breakはwhileで使えるか?
・2重ループなど、深い階層で使うと?
・ループの外でbreakする
・breakとcontinueの違い

載せているコードはPythonの3.11.0で動作を確認しました。

breakの使い方

Pythonのbreakは、ループ処理の中で使うことができます。
ループ処理の中でbreakすると、ループ処理を抜けます。

例えば、下記のように使うことができます。

for number in range(10):
    if number == 5:
        break
    print(number)

for文を使って、0から9まで、10回繰り返しています。
number変数にループされるたびに、0からカウントアップしながら値が代入されます。

ループ処理の最初にnumber変数が5だったときに、breakを呼び出しています。
breakは呼び出されると、ループ処理を抜けるため、処理が終わります。

ループの最後で、number変数の値を出力しています。
そのため、このプログラムを実行すると、下記のように出力されます。

0
1
2
3
4

number変数の値が「5」のときに、breakしています。
そのため、0から4までしか出力されなかったことが確認できました。

breakをwhileで使う

先ほどはbreakをfor文の中で使いましたが、while文で使うこともできます。
例えば、下記のように使うことができます。

count = 0
while count < 10:
    if count == 3:
        break
    print(count)
    count += 1

最初にcount変数に0を代入しています。

その後にwhile文を使って、ループ処理をしています。
count変数の値が0から9までの10回繰り返されます。

ループ処理の最初にcount変数が「3」だったときに、breakを呼び出しています。
ループ処理の最後にcount変数の値の出力と、count変数をカウントアップしています。

このプログラムを実行すると、出力結果は下記のようになります。

0
1
2

count変数が「3」だったときにbreakしました。
そのため、0から2までの出力で処理が終わりました。

深い階層でbreakを使う

2重ループなど、深い階層でbreakを使ったときです。

for i in range(5):
    for j in range(5):
        if j == 2:
            break
        print(f'i:{i} j:{j}')

変数iの箇所のループが0から4までの5回繰り返します。
変数jの箇所のループも0から4までの5回繰り返します。

変数jの箇所のループで、値が「2」だったときにbreakを呼び出しています。
これで、値が「2」だったときには変数jの箇所のループのみを抜け、1段目のループに戻ります。
そのため、変数jの箇所のループは、値が「0」と「1」だったときの2回しか繰り返されません。

出力結果を確認すると、下記のようになります。

i:0 j:0
i:0 j:1
i:1 j:0
i:1 j:1
i:2 j:0
i:2 j:1
i:3 j:0
i:3 j:1
i:4 j:0
i:4 j:1

変数iの箇所のループは、全て繰り返されています。
変数jの箇所のループは、値が「2」だったときに抜けているので、2回しか繰り返されませんでした。

このように、ネストされた階層で呼ばれたときには、呼ばれた箇所のループのみに適用されます。

ループ外でbreakする

ループ外でbreakを使ったときにはエラーになります。
例えば、下記のように、ループ外にbreakを書きます。

number = 3

if number == 3:
    break

そうすると、下記のようにSyntaxErrorになります。
SyntaxError: 'break' outside loop

特定の条件のときに処理を終了させたいときには、sysモジュールのexitメソッドを使いましょう。
先ほどのプログラムのbreakの箇所を修正すると、下記のようになります。

import sys

number = 3

if number == 3:
    sys.exit()

print('test')

これで、number変数が「3」だったときには、後続の処理がされずにプログラムが終了します。

breakとcontinueの違い

breakはループの中で呼び出すことで、ループを抜けることができました。
continueはループの中で呼び出すと、ループの先頭に戻って、後続の処理をスキップします。

下記は、それぞれ同じプログラムのbreakとcontinueの箇所を変えて、比べてみました。

breakのとき

例えば、下記のようにbreakを使います。

drinks = ['cola',  'wine', 'coffee', 'water', 'beer']

for drink in drinks:
    if drink == 'coffee':
        break
    print(drink)

drinks変数に5つの文字列でリストを作りました。

その次の処理で、drinks変数の要素分、繰り返し処理をしています。
繰り返しの最初でdrink変数がcoffeeだったら、breakするようにしました。
その後に、print関数でdrink変数の値を出力しています。

プログラムを実行すると、下記のようになります。

cola
wine

drink変数がcoffeeのときに処理を抜けるので、最初の2つの要素しか出力されませんでした。

continueのとき

次に、同じコードでcontinueを使ったときです。

drinks = ['cola',  'wine', 'coffee', 'water', 'beer']

for drink in drinks:
    if drink == 'coffee':
       continue 
    print(drink)

同じプログラムで、breakを使っていた箇所をcontinueに変えました。

こうすると、drink変数がcoffeeだったらcontinueします。
そして、ループの先頭に戻って、次の要素のwaterdrink変数に格納されて処理を続けます。

プログラムを実行すると、下記のようになります。

cola
wine
water
beer

drink変数がcoffeeのときに、ループの先頭に戻って、後続の処理をスキップしました。
結果、coffee以外の要素が全て出力されました。

終わりに

今回はPythonのbreakの使い方について書きました。

記事の内容をまとめると、下記のようになります。

・breakを使うと、ループ処理の途中で抜けることができる。
・breakはwhile文のループ処理でも使える。
・2重ループなどの深い階層で使ったときは、呼び出した箇所にのみ適用される。
・ループ外でbreakすると、SyntaxErrorが発生する。
・breakはループ処理を抜けて、continueはループ処理の先頭に戻って、処理が継続した。

コメント

タイトルとURLをコピーしました