while文のelse節
入門Python3 4.4.3
PythonのwhileですがC#とかには無い機能があります。
else節を書いておくとwhileが正常終了した場合に一度だけ処理されます。
i = 0 while i < 5: print(i) i += 1 else: print("end")
$ py main.py 0 1 2 3 4 end
breakした場合にはelse節には遷移しません。
i = 0 while i < 5: print(i) i += 1 if i == 3: break else: print("end")
$ py main.py 0 1 2
ちなみに本書ではこの機能の事を仕様が若干わかりにくいのでbreakがあるときには呼ばれないので、breakチェッカーと考えようと書いていたが、関数内でreturnした時でも呼ばれなかったのでちょっと適切じゃないかなぁという気もします。
def while_check(): i = 0 while i < 5: print(i) i += 1 if i == 3: return # retunでループを抜けてみる else: print("end") while_check()
$ py main.py 0 1 2
returnでも「end」が出力されてませんね。