このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】繰り返しを中断するbreak文

繰り返しを中断するbreak文

 Pythonのbreak文は、ループ処理中に特定の条件が成立した際、その反復の残りの処理をスキップして、即座にループ全体を終了するための制御構造です。これにより、不要な処理を回避し、プログラムの実行効率を向上させることができます。
 ここでは、while文とbreak文を組み合わせた例として、ユーザから数値を入力させ、負の数が入力されたらループを終了し、これまで入力された正の数の合計を出力するプログラムを紹介します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.break文の基本概念

1.1. 基本構文

break文は、以下のようにループ内部で単独の文として記述されます。

while 条件式:
    文1
    if 条件:
        break  # この行が実行されると、ループが中断される
    文2

解説

  • ループ内でif文と組み合わせ、特定の条件がTrueになった場合にbreak文を実行します。
  • break文が実行されると、その反復の残りの文(ここでは文2)はスキップされ、ループが終了してループの外側の文に処理が移ります。

1.2. 処理の流れ

break文を含むループの基本的な処理の流れは、次の表のとおりです。

ステップ説明
1. 条件式の評価ループ開始時および各反復の先頭で条件式が評価される
2. if文による判断if文内で特定の条件がTrueになれば、break文が実行される
3. ループの中断break文実行後、その反復の残りの文はスキップされ、ループが終了する
4. ループ外の処理ループ終了後、ループ外に記述された文が実行される

2.実践例:正の数を合計するプログラム(負の数でループ終了)

2.1. プログラムの概要

 このプログラムは、ユーザに正の数を入力してもらい、その合計を計算します。ただし、ユーザが負の数を入力した場合、break文を使ってループを中断し、現在までの合計を表示します。

2.2. サンプルプログラム

# 合計値を保持する変数totalを初期化
total = 0

# 無限ループを開始する(while True)
while True:
    # ユーザから数値を入力してもらい、浮動小数点数に変換して変数numに代入する
    num = float(input("Enter a positive number (or a negative number to stop): "))
    
    # 入力された数値が負の場合、break文を実行してループを終了する
    if num < 0:
        print("Negative number encountered. Exiting loop.")
        break  # ここでループが中断され、以下の文は実行されない
    
    # 負でない場合、numをtotalに加算する
    total += num

# ループ終了後、合計値を表示する
print("Total sum:", total)

実行結果

Enter a positive number (or a negative number to stop):  3.1
Enter a positive number (or a negative number to stop):  6.5
Enter a positive number (or a negative number to stop):  -2
Negative number encountered. Exiting loop.
Total sum: 9.6

解説

  • while True: により無限ループを開始します。
  • input("Enter a positive number (or a negative number to stop): ") によって、ユーザからの入力を促し、float() 関数で数値に変換して変数 num に格納します。
  • if num < 0: で入力された数値が負であるかを評価し、負の場合は警告メッセージを表示して break 文によりループを終了します。
  • 正の数の場合は、total += num により合計値を更新します。
  • ループが終了した後、print("Total sum:", total) で合計値を出力します。

3.注意点と利用上のヒント

3.1. ループ中の条件チェック

 ループ内でbreak文を使う際は、必ず終了条件が正しく設定されていることを確認し、無限ループに陥らないように注意する必要があります。

3.2. 複数のループがネストされている場合

 break文は、最も内側のループのみを中断します。複数のネストされたループ全体を中断する場合は、適切なフラグ変数や他の制御構造を組み合わせる必要があります。

【break文の基本的な流れ】

ステップ説明
1. 入力の受け取りユーザから数値を入力し、変数numに代入
2. 終了条件の評価numが負かどうかを評価し、負ならbreakでループ終了
3. 合計値の更新正の場合は合計値totalにnumを加算
4. ループの終了と出力breakまたは条件を満たすまでループが継続し、終了後に合計を表示

まとめ

 break文は、while文やfor文の中で特定の条件が成立した場合に、即座にそのループを中断するための重要な制御構造です。

  • 基本構文: 単独でbreakと記述し、if文と組み合わせて条件に応じた中断処理を実装します。
  • 処理の流れ: ループ内で条件がTrueになると、break文が実行され、その時点で残りの処理がスキップされ、ループを抜け出します。
  • 実践例: ユーザが負の数を入力した場合にループを終了し、これまでの合計を出力するプログラムを通して、break文の利用方法と効果を示しました。
  • 注意点: ループ中のデータの変更や、ネストされたループの場合の制御に注意し、必要な場合は適切な構造やフラグを用いることで、より堅牢なプログラムを作成できます。

 これらの知識を応用することで、不要な反復処理を回避し、効率的なループ制御を実現できるようになります。