python3.6のチュートリアルでループ制御でのelse
節について知ったのでメモです.
ループのelse
節の動作についてはチュートリアルに書いてある通りでたぶん理解できたと思います.
チュートリアルにあったサンプルプログラムについて考えてみます.
>>> for n in range(2, 10): #ループ1 ... for x in range(2, n): #ループ2 ... if n % x == 0: ... print(n, ‘equals’, x, ‘*’, n//x) #処理1 ... break ... else: ... # loop fell through without finding a factor ... print(n, ‘is a prime number’) #処理2
このプログラムのフローチャートは次のように書くことができると思います.
ループ2のなかでbreak
が実行されると,ループ2を抜けると同時にelse
節に記述されている処理2もスキップされます.
break
が一度も実行されずにループ2が終わればそのまま処理2を実行します.