反復処理 (while)

whileは、最初に評価式を評価してからTrueであればループ内の処理を実行します。

while 評価式:
    実行文

例えば、このコードではiが0、1、2のときは評価式がTrueなので実行文が実行されましたが、iが3になると評価式がFalseになるのでループが終了します。

>>> i=0
>>> while i < 3:
...     print(i)
...     i=i+1
...
0
1
2
>>>

目次

  1. ループを抜ける
  2. 処理を1回とばす
  3. ループが正常終了したときに実行する

ループを抜ける

whileループ内でbreakを実行すると、そのwhileループから抜けます。

例えば下記はiが100未満の間は反復するのですが、iが3になった周回でif文の評価式がTrueになりbreakが実行されます。そのため、print(i)はiが2のときまでしか実行されません。

>>> i=0
>>> while i<100:
...     if i>2:
...         break
...     print(i)
...     i=i+1
...
0
1
2
>>>

無限ループを作っておいて、if文で条件を判断してbreakで無限ループから抜けるというような使い方に使えます。

処理を1回とばす

whileループ内でcontinueを実行すると、ループ内のそれ以降の処理は実行されずにwhileの評価式の評価に戻ります。

例えば下記は、iが5未満のときcontinueが実行されてprint(i)以降の処理がとばされます。

>>> i=0
>>> while i<10:
...     if i<5:
...         i=i+1
...         continue
...     print(i)
...     i=i+1
...
5
6
7
8
9
>>>

ループが正常終了したときに実行する

elseを使うと、whileの反復処理が正常に終了したときだけ実行する実行文を指定できます。whileループをbreakで抜けると、elseの実行文は実行されません。

下記は、iが4になるとwhileループをbreakで抜けます。この場合、elseのところに書いてあるprint関数が実行されません。

>>> i=0
>>> while i<5:
...     if i>3:
...         break
...     print(i)
...     i=i+1
... else:
...     print('completed')
...
0
1
2
3
>>>

下記は単純にiが5未満の間だけ反復処理するものですが、breakでwhileループを抜けるわけではないので、elseに書かれているprint関数が実行されます。

>>> i=0
>>> while i<5:
...     print(i)
...     i=i+1
... else:
...     print('completed')
...
0
1
2
3
4
completed
>>>

公開日

広告