Pythonでbreakを使う方法について書いています。
breakについて解説した後に、下記のことについて書いています。
・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
します。
そして、ループの先頭に戻って、次の要素のwater
がdrink
変数に格納されて処理を続けます。
プログラムを実行すると、下記のようになります。
cola
wine
water
beer
drink
変数がcoffee
のときに、ループの先頭に戻って、後続の処理をスキップしました。
結果、coffee
以外の要素が全て出力されました。
終わりに
今回はPythonのbreakの使い方について書きました。
記事の内容をまとめると、下記のようになります。
・breakはwhile文のループ処理でも使える。
・2重ループなどの深い階層で使ったときは、呼び出した箇所にのみ適用される。
・ループ外でbreakすると、SyntaxErrorが発生する。
・breakはループ処理を抜けて、continueはループ処理の先頭に戻って、処理が継続した。
コメント