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

break文による中断

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

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

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

  1. input() 関数で5回、数字を入力して、その2乗の値を表示する

  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. 条件式を counter <= 5 として、while ループを開始します。counter5 に等しいか 5 より小さいときには以下の処理を実行し、counter5 より大きくなったら、条件式が False となって、ループを終了します。

    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("終了しました") という行を実行します。



Python.jp Discordサーバ

Discord によるチャットサービスです。情報交換・質問・雑談などにご利用ください。

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