while文の終了時の処理(while...else)

広告

「while」文は条件式が真の間ブロック内の処理を繰り返しますが、条件式が偽になりwhile文が終了する時に実行される処理を記述することも可能です。書式は次のようになっています。

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

条件式が真(true)の間は「while」文のブロック内の処理が繰り返し実行されますが、条件式が偽になった時にwhile文は終了します。この時「else」文が記述されていれば「else」文のブロック内の処理が実行されます。「else」文のブロックは一度実行された後で「while」文全体が終了します。

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

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

print "End"

上記では変数「num」に代入されている数値が2以上になった場合に「else」文のブロック内に記述された「print "last = " + str(num)」が実行されて終了します。

ここで「else」文を使わずに次のように記述した場合と比較してみます。

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

print "last = " + str(num)
print "End"

この場合でも「while」文が終了すると「print "last = " + str(num)」が実行されて終了します。「else」文は必要無いように思われますが、繰り返しが終了時に実行すべき処理と言うことを明確に表すことが出来ます。

また「while」文の中で、「break」文が実行されうことにより「while」文が終了した場合には「else」文は実行されません。

サンプルコード

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

#coding: UTF-8

num = 0

print u"繰り返し開始"

while num < 2:
  print "num = " + str(num)
  num += 1
else:
  print u"繰り返しが終了した時の最後の値", 
  print "num = " + str(num)

print u"繰り返し終了"

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

while文の終了時の処理(while...else)

( Written by Tatsuo Ikura )