while文

広告

繰り返し処理の1つである「while」文について確認します。書式は次のようになっています。

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

「while」文では、条件式が真(true)の間繰り返しを行います。

「while」文も複合文の1つです。条件式が真だった場合、ブロック内の処理を実行します。「if」文と異なる点は、「if」文が条件式に従って1回だけブロック内の処理を実行するものですが、「while」文はブロック内の処理を実行した後は改めて条件式を評価します。そして条件式が真の間は繰り返しブロック内の処理を実行します。

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

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

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

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

このように「while」文は条件式を評価し、真(true)であればブロック内の処理を実行し再度条件式の評価へ戻ります。このように条件式が変化しない場合、繰り返し処理は無限に実行されてしまいますのでブロック内に条件式が変化するような処理を記述しなければなりません。

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

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

今度は繰り返し処理の中で変数「num」に代入されている値に「1」を加算して再度変数「num」に格納しています。今回の処理の流れは次のようになります。

 1) 変数「num」に「0」を代入
 2) 条件式を評価。変数「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より小さいくない為「while」文を終了
11) 「End」を出力

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

このように「while」文では条件式を変化させながら、条件式が真の間は繰り返し同じ処理を実行させたい場合に使用できます。

サンプルコード

では実際に試してみます。

#coding: UTF-8

num = 0

print u"繰り返し開始"

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

print u"繰り返し終了"

上記を「test1-1.py」として保存します。保存する時の文字コードはUTF-8です。そして次のように実行して下さい。

if文

( Written by Tatsuo Ikura )