ユーニックス総合研究所

  • home
  • archives
  • python-for-break

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でカウント変数i2の時に真になります。
つまりループ中のカウント変数が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文のカウント変数j2になった時に実行されます。
この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しようぜ

🐭 < ループをぶっこわせ