while文を使った繰り返し

Python で繰り返し処理を行う時に利用できる while 文の使い方について解説します。 while 文は条件式が真の間、続くブロック内の処理を繰り返します。

(Last modified: )

while文の処理の流れ

while 文は指定した条件式が真の間、処理を繰り返し実行します。基本的な書式は次の通りです。

while 条件式:
    条件式が真の時に実行する文

条件式が真となった場合、その後に記述されたブロックの中の文を順に実行します。複数の文を実行させたい場合にはブロック内に記述してください。

while 条件式:
    条件式が真の時に実行する文1
    条件式が真の時に実行する文2
    条件式が真の時に実行する文3

※ Python ではブロックをインデントを使って定義します。詳しくは「Pythonにおけるインデントを使ったブロックの定義」を参照されてください。

次のような例で考えてみます。

num = 0
while num < 2:
    print("num = " + str(num))

print("End")

この時実行される流れは次のようになります。

 1) 変数 num に 0 を代入
 2) while 文の条件式を評価。変数 num は 2 より小さいので条件式は真
 3) 変数 num の値を出力
 4) ブロックの最後まで達したので再度 while 文の条件式を評価
 5) 変数 num は 2 より小さいので条件式は真
 6) 変数 num の値を出力
 7) (4)から(6)を無限に繰り返し実行

このように while 文は条件式を評価し、真であればブロック内の処理を実行し再度条件式の評価へ戻ります。今回の例ではブロック内で条件式が変化するような処理がないため、繰り返しが無限に繰り返されてしまいます。

では先ほどの例を少し変更します。

num = 0
while num < 2:
    print("num = " + str(num))
    num += 1

print("End")

今度はブロック内で変数 num に代入されている値に 1 を加算しています。今回の処理の流れは次のようになります。

 1) 変数 num に 0 を代入
 2) while 文の条件式を評価。変数 num は 2 より小さいので条件式は真
 3) 変数 num の値を出力
 4) 変数 num に 1 を加算 (num は 1)
 5) ブロックの最後まで達したので再度 while 文の条件式を評価
 6) 変数 num は 2 より小さいので条件式は真
 7) 変数 num の値を出力
 8) 変数 num に 1 を加算 (num は 2)
 9) ブロックの最後まで達したので再度 while 文の条件式を評価
10) 変数 num は 2 より小さくないので条件式は偽
11) while 文を終了し次の処理へ
12) "End" を出力

while 文の繰り返し処理が 1 回実行されるたびに変数 num の値が変化しています。その結果 while 文の条件式は3回目で偽となり while 文は終了します。

サンプルコード

次のサンプルを見てください。

num = 1
print("Start")

>> Start

while num < 6:
    print("num = " + str(num))
    num += 1

>> num = 1
>> num = 2
>> num = 3
>> num = 4
>> num = 5

print("End")

>> End

変数 num の値を変化させて num の値が 5 以上になるまで繰り返しを行いました。

while文の最後に実行される処理を記述する(while..else文)

while 文は指定した条件式が真の間、処理を繰り返し実行しますが、条件式が偽になった時に実行される処理を else 節のあとに記述することができます。

while 条件式:
    条件式が真の時に実行する文1
    条件式が真の時に実行する文2
else:
    条件式が偽の時に実行する文1
    条件式が偽の時に実行する文2

これは単に while 文の次に記述した場合と基本は変わりありません。 while 文が終了すると、 while 文の次に記述されている文が実行されるためです。

while 条件式:
    条件式が真の時に実行する文1
    条件式が真の時に実行する文2

実行する文1
実行する文2

ただ while 文の中で break 文が実行された場合だけ異なります。 break 文が実行されると else 節のあとに記載されているブロック内の処理は実行せずに while 文の次へ処理が移るためです。 else 節を使わなかった場合は break 文が実行されたかどうかに関わらず while 文の次に記述された処理が実行されます。(break 文については「break文を使った繰り返し処理の強制終了とcontinue文を使った繰り返し処理のスキップ」を参照されてください)。

サンプルコード

次のサンプルを見てください。

num = 1
total = 0
print("Start")

>> Start

while num < 6:
    print("num = " + str(num))
    total += num
    num += 1
else:
    print("Total = " + str(total))

>> num = 1
>> num = 2
>> num = 3
>> num = 4
>> num = 5
>> Total = 15

print("End")

>> End

else 節を使って while 文の最後に実行される処理を記述しました。

-- --

Python で繰り返し処理を行う時に利用できる while 文の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。