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

whileループ

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

条件式と分岐 で、コンピュータプログラムの三つの制御構造を紹介しました。ここではその三番めの構造である 反復(ループ) を紹介します。

反復処理は、決まった条件が満たされているあいだは、何度でも同じことを繰り返す、という処理です。たとえば、銀行のキャッシュディスペンサーでお金を引き出すとき、暗証番号を入力して、間違えたらもう一度入力をやり直します。これは反復処理で、手順は次のようになります。

  1. 正しい暗証番号が入力されていなければ、以下の処理を繰り返します。

    A. 暗証番号を入力します。

  2. 引き出す金額を入力します。

  3. ...

これは、正しい暗証番号が入力されてない という条件が満たされているあいだは、A. 暗証番号を入力します という処理を繰り返します。正しい暗証番号が入力されれば、正しい暗証番号が入力されてない という条件が満たされなくなり、ループを終了してつぎの処理に移動します。

while文

Pythonでは、反復処理は while 文で記述します。

while 条件式:
    処理1
    処理2
    ...

while 文は、条件式 が満たされ、結果が True (真) であるあいだ、処理 を繰り返して実行します。

if文 とおなじように、while 文に続いて条件式を指定します。行の末尾に : が必要ですので気をつけてください。

次の行から、条件式が成立するあいだ実行する処理を記述します。この処理は、行の先頭にスペース4文字で インデント して記述します。

while 条件式
    処理
^^^^
スペースを4文字入力

while文と、その後に続くインデントされたブロックを、while節 と言います。

次の例は、finish と入力されるまで何度でも文字入力を繰り返すプログラムです。

In [ ]:
text = "" # text に初期値として "" を設定する

while text != "finish": # text が "finish"ではない間、処理を繰り返す
    # 文字を入力する
    text = input("finishと入力してください:")  # text に文字を読み込む

print("終了しました")

このプログラムは、関数で文字列を変数 textfinish では ない 場合、input() 関数を呼び出してキー入力を受け取り、text に設定する処理を繰り返します。

  1. プログラムを実行すると、変数 text に空の文字列 "" を設定します。

  2. 次に、while 文を実行します。while 文の条件式

    text != "finish"
    

    は、変数 text と、文字列 'finish' が等しくないときに True となります。

    一番最初は、変数 text'' が設定されているので、文字列 finish と等しくありません。したがってtext != 'finish' の値は True となり、while 文はループを実行します。

  3. input() 関数を実行し、ユーザが入力した文字列を変数 text に設定します。

  4. while ループ内の処理が終わり、while 文の先頭まで戻ります。再び条件式

    text != "finish"
    

    を判定しますが、このとき、 変数 text には 2. でユーザが入力した文字列が入っています。ユーザが finish と入力していれば text != 'finish' の値は False となり、while ループは終了します。finish 以外なら、もう一度ループを再実行します。

止まらなくなってしまったら

whileループを使ったプログラムは、書き間違えると永久にループを実行し続ける事になってしまいます。

たとえば、次のプログラムはループを終了する条件が成立することがないので、いつまでも終わりません。

while True:
    text = input()
    print(text)

Colabでは、こういったプログラムを実行して終了できなくなってしまったら、実行中のセルの左側にあるボタンをクリックすると、中断できます。



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