Pythonの繰り返し:while文

他の言語と同様、Python にも繰り返しを実現するために for 文と while 文があります。ここでは Python における繰り返し文の while文について説明します。

while 文の使い方

Python における while 文の記述方法は以下の通りです。

while 条件式:
    条件が真の間繰り返し実行する処理

条件式は if 文と同様に比較演算子、論理演算子を使って記述します。while 文は条件が真である間、ブロック内の処理を繰り返し実行します。Pythonには他の言語で見られる do while 文はありません。

while 文による繰り返し

次の例は、0から5の整数を出力するサンプルプログラムです。

# -*- coding: utf-8 -*-

i = 0           # ループ用変数
while i <= 5:   # iが5以下である限り、インデントされたブロックの処理を実行する
    print i       
    i = i + 1   # iの値を1増やす

実行結果

0
1
2
3
4
5

上のサンプルムログラムの解説をします。まず、 変数 i は 0 で初期化され、 while 文の条件式 i <= 5 が評価されます。0 <= 5 は真なので、while ループ内の print 0 が実行されます。そして i = i + 1 が実行し  i の値を 1 増やします(これをインクリメントと呼びます)。1回目のループ内の処理が終了すると、 また i <= 5 すなわち 1 <= 5 の条件式が評価されます。これも真なので、またループ内の処理が実行されます。最終的に i が 6 になると 6 <= 5 は偽となるので、while ループから抜け出しプログラムが終了します。

i をインクリメントすることを書き忘れてしまうと、i の値は 0 のままとなるため、永遠に条件式が真となり、ループが止まらなくなり無限ループが発生してしまうので注意が必要です。ちなみに i = i + 1 は i += 1 と記述することもできます。

while ループを抜け出す:break

ループ内である条件になったときにループを抜け出したい場合は break 文を使用します。

# -*- coding: utf-8 -*-

i = 0           # ループ用変数
while i <= 5:   # iが5以下である限り、インデントされたブロックの処理を実行する
    print i
    if i == 2:
        break   # iが2になったときにループを抜け出す
    i = i + 1   # iの値を1増やす

実行結果

0
1
2

1つ目の例と同じように i の値を出力しながらループが繰り返されますが、 i が  2 になったとき print i が表示された後に break 文が実行されループから抜け出し処理が終了します。したがって、 i = 2 のときは break 文の後の i = i + 1 は実行されません。

while ループの処理を次へジャンプする:continue

ループ内である条件のときに処理をジャンプしたい場合は continue 文を使用します。

# -*- coding: utf-8 -*-

i = 0             # ループ用変数
while i <= 5:     # iが5以下である限り、インデントされたブロックの処理を実行する
    if i == 2:
        i = i + 1 # iの値を1増やす
        continue  # iが2のときに次の繰り返しへジャンプする
    print i
    i = i + 1     # iの値を1増やす

実行結果

0
1
3
4
5

1つ目の例と同じように i の値を出力しながらループが繰り返されますが、 i が 2 になったときに i をインクリメントし continue 文で次の繰り返しへジャンプしています。したがって、 continue 文が実行された後の print i と i = i + 1 は実行されないので、2 が出力されていないのことが実行結果から確認できます。

意図的に無限ループを作る

無限ループを意図的に実現したい場合は、条件式に true を指定します。次のサンプルプログラムを見てみましょう。

# -*- coding: utf-8 -*-

i = 0
while true:      # 無限ループ
    if i > 100:
        break    # iが100以上になったらループから抜ける
    i = i + 1

print i          # 101

上記のプログラムでは、無限ループを使って i の値をインクリメントしていきますが、i の値が 100 以上になった時点で breakを使ってループから抜け出しています。このような無限ループは標準入力待ちやリクエスト待ちなどの際によく使用されます。


イベント

2017/12/05(火)
Design Thinking Square