ゼロからのPython入門講座while文による繰り返し break文による中断

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

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

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

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

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

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

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

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

  1. 変数 counter に初期値として 1 を設定します。
  2. whileループを開始し、条件式 counter <= 5Trueの間、以下の処理を繰り返します。

    1. input() で文字列を入力し、結果を変数 text に代入します。
    2. 変数 textの入力文字列を、int() で整数に変換して変数 number に代入します。
    3. 変数 counter の値と、変数 number を2乗した値を print() します。
    4. 変数 counter1 を加算します。
  3. ループを脱出したら、終了メッセージを print() します。

最初、変数 counter に設定されている値は 1 ですので、 while ループの条件式 counter <= 5True(真)となり、ループ内の処理が実行されます。

ループを一度実行すると、「4. 変数 counter1 を加算します。」 という処理で counter の値が加算され、2度目に while 文で条件を判定するときには、counter の値は 2 になっています。

同様に、3度目には counter3、4度目には 41ずつ加算されて行き、最後に 6 になると、while ループの条件式 counter <= 5False(偽)となって、ループを終了します。

ループ途中での脱出

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

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

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

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

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

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

print("終了しました")
数字を入力してください 123
1 回目: 15129
数字を入力してください 234
2 回目: 54756
数字を入力してください 999
中断します
終了しました

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

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

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

Copyright © 2001-2021 python.jp Privacy Policy python_japan
Amazon.co.jpアソシエイト
Amazonで他のPython書籍を検索