おぼえがき

過ちては則ち改むるにうんぬんかんぬん

while文とbreakとcontinueとelseについて(Python)

f:id:feci:20210726231508j:plain

Python3

 
Python3.8.5でのwhile文について。

count1 = 0
while count1 < 5:
  print(count1)
  count1 = count1 + 1


count2 = 0
while count2 < 5:
  print(count2)
  count2 += 1

count1もcount2も、どちらも出力結果は同じです。

5行にわたり、各行の頭に0、1、2、3、4と出力されてからプログラムが終了します。

 

 

while文とbreakについて

count = 0

while True:
  if count >= 5:
    break
  print(count)
  count = count + 1

if文のとおり、countの値が5以上になった時点でbreakが実行されます。

その結果、while構文はbreakが実行された時点でプログラムが終了します。

 

 

while文とcontinueについて

count = 0

while True:
  if count >= 5:
    break

  if count == 3:
    count += 1
    continue

  print(count)
  count = count + 1

if文のとおり、countの値が3になった時点で、countの値に+1をしたあとにcontinueが実行されます。

その結果、プログラムは4行目の if count>=5: の部分に戻り、そのままwhile文が実行され続けます。

 

このとき、continueの下の行であるprintは実行されません。

つまり、breakがプログラムを強制的に終了させるのに対して、continueはその下の行のプログラムをすべて飛ばしてプログラムの先頭に戻る、という挙動をします。

 

その後、countの値が5になった時点でbreakが実行され、その時点でこのプログラムは動作を終了します。

 

 

while - else文について

#breakがないパターン
count1 = 0
while count1 < 5:
  print(count1)
  count1 += 1
else:
  print('ご')


#breakがあるパターン
count2= 0
while count2 < 5:
  if count2 == 3:
    break
  print(count2)
  count2 += 1
else:
  print('ご')

上のパターンを実行すると、6行にわたり、各行の頭に0、1、2、3、4、ご、と出力されます。

count1の値が5になった時点でwhile文のcount1<5の条件を満たさなくなってしまうので、4が出力された後はelse文のprintが実行されて「ご」が出力されて、その時点でこのプログラムは終了します。

 

下のパターンを実行すると、3行にわたって各行の頭に0、1、2と出力したあとにif文のcount2==3の条件を満たしてしまいます。

なのでこの時点でbreakが実行されてしまい、そのあとはelse文が実行されることもなく、breakが実行された時点でこのプログラムは終了となります。

 

 

以上です。