Python入門講座while文による繰り返し

break文による中断

whileループbreak文による中断代入文と等号continue文

while 文によるループは、指定した条件式が False になると、ループを終了しますが、それ以外にも、ループの途中で break 文を実行すると、途中からループを抜け出せます。

たとえば、こんなプログラムを考えてみましょう。

  1. input() 関数で10回、数字を入力して、その2乗の値を表示する
  2. ただし、入力された数字が 999 なら、10回繰り返さずに処理を終了する

input()を10回繰り返す処理は、次のように書けます。

In [ ]:
counter = 1 # 現在、何回目かを記録する変数

while counter <= 10:  # counterの値が10以下なら繰り返す
    text = input("数字を入力してください")
    number = int(text) # 入力した文字列を数値に変換する
    print(counter, "回目:", number * number) # 入力した数値の2乗を表示する
    counter = counter + 1  # counter の値に 1 を加算する
    
print("終了しました")

このプログラムを実行すると、次のような動作をします。

  1. 変数 counter に初期値として 1 を設定します。
  2. 条件式を counter <= 10 として、while ループを開始します。counter1 より大きくなったら、条件式が False となってループを終了します。
  3. input() で文字列を入力し、結果を変数 text とします。
  4. 変数 textの入力文字列を、int() で整数に変換して変数 number に代入します。
  5. 変数 counter の値と、変数 number を2乗した値を print() します。
  6. 変数 counter1 を加算します。
  7. ループの先頭に戻ります。
  8. ループを脱出したら、終了メッセージを print() します。

ループ途中での脱出

この処理を、999 と入力されたら中断するようにしてみましょう。

Pythonのループは、break文を実行すると中断してループを終了します。ここでは、入力した文字列 text999に等しいとき、break文を実行するようにしてみましょう。

In [1]:
counter = 1 # 現在、何回目かを記録する変数

while counter <= 10:  # counterの値が10以下なら繰り返す
    text = input("数字を入力してください")

    # 入力された文字が '999' なら
    if text == '999':
        # ループを中断する
        print("中断します")
        break

    number = int(text) # 入力した文字列を数値に変換する
    print(counter, "回目:", number * number) # 入力した数値の2乗を表示する
    counter = counter + 1  # counter の値に 1 を加算する

print("終了しました")
1 回目: 15129
2 回目: 54756
中断します
終了しました

修正した処理では、ループの途中に次のような処理が入っています。

# 入力された文字が '999' なら
if text == '999':
    # ループを中断する
    print("中断します")
    break
  1. input() で入力された文字列が 999 なら、 text == '999' という条件式が真となり、if 文の条件が成立します。
  2. if 文の条件が成立した場合は、if文のブロックで 中断します というメッセージを出力してから break 文を実行します。break 文を実行すると、そのとき実行している while ループを中断します。

ループが中断すると、while 文の条件式が False となった場合とおなじように、whileブロックのループの外側に移動して print("終了しました") という行を実行します。



【Copyright © 2001-2020 python.jp】 【Privacy Policy】 python_japan