Pythonのfor文をbreak文で中断する方法
- 作成日: 2022-04-07
- 更新日: 2023-12-25
- カテゴリ: Python
Pythonのfor文をbreak文で中断する方法
Pythonではfor文を使ったループ処理を書くことができます。
このループを途中で中断するにはどうしたらいいのでしょうか?
そういう時はbreak文を使います。
この記事ではPythonのfor文をbreak文で中断する方法を解説します。
関連記事
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
形態素解析で代名詞+助詞+名詞を文章から抜き出す【Python, 自然言語処理, Janome】
在宅・未経験、Pythonで稼ぐ方法は?【取引・宣伝・広告】
for文でbreak文を使う
break文はループ処理の途中でループから脱出しループを中断させます。
↓のように使います。
for i in range(4):
print(i)
break
print('ループが終了しました')
↑のコードを実行すると↓の結果になります。
0
ループが終了しました
↑のfor文はrange(4)
になっていますので、0
から3
までカウント変数が増加します。
しかし、print(i)
で出力されるカウント変数は0
のみです。
これはprint(i)
の直後にbreak
でループから脱出しているからです。
このようにbreak文はループを中断し、処理をループから脱出させます。
if文とbreak文
break文はif文と組み合わせることもできます。
for i in range(4):
if i == 2:
break
print(i)
print('ループが終了しました')
0
1
ループが終了しました
break文は最寄りのfor文から脱出します。
↑のコードではfor文はrange(4)
, つまり0
から3
まで回ります。
if文はi == 2
でカウント変数i
が2
の時に真になります。
つまりループ中のカウント変数が2
になったらループがbreak文によって終了します。
入れ子になったfor文とbreak文
for文が入れ子(ネスト、2重になっているループ)になっている場合はどうでしょうか。
たとえば↓のようなコードです。
for i in range(2):
for j in range(4):
if j == 2:
break
print(j)
print('ループが終了しました')
実行結果は↓になります。
0
1
0
1
ループが終了しました
if j == 2:
break
というbreak文は内側のfor文のカウント変数j
が2
になった時に実行されます。
このbreak文が実行されると内側のfor文が中断します。
つまりprint(j)
で出力されるカウント変数の値は「0」「1」だけになります。
内側のfor文が中断すると外側のfor文のカウント変数がインクリメントされます。
そして再び内側のfor文が実行されます。
このように内側のfor文で実行されるbreak文は、内側のfor文を中断させますが、外側のfor文には影響がありません。
2つのfor文をどちらも終了させたい場合はフラグを作る方法があります。
loop = True
for i in range(2):
for j in range(4):
if j == 2:
loop = False
break
print(j)
if not loop:
break
print('ループが終了しました')
0
1
ループが終了しました
あるいは少しトリッキーですが、例外を使う方法もあります。
try:
for i in range(2):
for j in range(4):
if j == 2:
raise RuntimeError
print(j)
except RuntimeError:
pass
print('ループが終了しました')
0
1
ループが終了しました
例外を使った方法はエラーハンドリングに影響が出る可能性もあるので、あまりおすすめはできません。
フラグを使った方法のほうが安全でしょう。
🦝 < goto文があればね
🐭 < ほんまやね
おわりに
今回はPythonのfor文をbreak文で中断させる方法について解説しました。
break文やcontinue文はループ文を使う場合に便利な文です。
覚えておいて損は無いでしょう。
🦝 < breakしようぜ
🐭 < ループをぶっこわせ