[Python] try else文、while else文、for else文
こんにちは、@yasuです。
今回は、else文について学習したいと思います。
elseと言えば、ifですが、、、
pythonには、try else文、while else文、for else文があります。(私が知っている限り^^)
結構便利かも^^
環境
https://repl.it/ で確認しました。Visual Studio Codeでも可能です。
try文で例外が発生しなければ、finallyの前にelseを実行します。
コード
def test_try(flag):
print("try...except...else...finally文")
try:
if flag:
raise Exception
except:
print("■except")
else:
print("■else")
finally:
print("■finally")
print("■end\n")
test_try(False)
test_try(True)
実行結果
whileの条件で抜け出した場合、elseを実行します。途中breakで抜け出した場合は、elseを実行しません。
def test_while(flag):
print("while...else文")
while flag:
if flag:
print("breakでwhileを抜ける")
break
flag = True
else:
print("■else")
print("■end\n")
test_while(False)
test_while(True)
実行結果
forの条件で抜け出した場合、elseを実行します。途中breakで抜け出した場合は、elseを実行しません。
def test_for(flag):
print("for...in...else文")
for i in range(1):
if flag:
print("breakでforを抜ける")
break
else:
print("■else")
print("■end\n")
test_for(False)
test_for(True)
実行結果
応用編、2重ループを一気に抜け出すには、以下のようにします。
内側のループでelse continue文を記述して、外側のループでbreakします。
def test_for_for(flag):
print("2重のfor...in...else文")
for i in range(3):
for j in range(3):
print(f"i+{i},j+{j}")
if flag:
print("breakでforを抜ける")
break
else:
print("■else j")
continue
print("breakで2重forを抜ける")
break
else:
print("■else i")
print("■end\n")
test_for_for(False)
test_for_for(True)
@yasu transfered 0.5 KRWP to @krwp.burn. voting percent : 7.17%, voting power : 62.91%, steem power : 1935960.59, STU KRW : 1200.
@yasu staking status : 250 KRWP
@yasu limit for KRWP voting service : 0.5 KRWP (rate : 0.002)
What you sent : 0.5 KRWP [47617087 - fb70a1c807fb2acd0443fa763f60f6c64614ac39]