[b]print('--------single else:if break--------')
for l in [1, 9, 0]:
if l % 3 == 0:
print("if")
break
else:
print("else")
print(l)
print('--------single else:no if--------')
for m in [1, 9, 0]:
print("for")
break
else:
print("else")
print(m)
為什么第二個情況會報Unresolved Reference 'm'
uj5u.com熱心網友回復:
for while 回圈中用else,是在for while陳述句運行正常時才會執行,要不然不會執行else‘if 陳述句中是 if 不成立時運行else。
uj5u.com熱心網友回復:
回圈使用else 是在break退出回圈時不會呼叫,否則會呼叫if使用else 是在if為假時呼叫
uj5u.com熱心網友回復:
縮進,縮進格式不對吧,第二個else沒有對應的if?uj5u.com熱心網友回復:
看到你的問題之后寫了一篇博客,希望可以幫到你 [Python] for或while回圈后面加else的妙用https://blog.csdn.net/ftimes/article/details/106753286
我測驗了你的代碼,樓上應該都答偏了,代碼沒有問題,應該是編譯器的原因;
3.6.5 下,IDLE無提示,PyCharm內部紅線,但可以正常運行;
猜測是因為PyCharm編譯器認為m那時候應該被回收了吧…
至于為啥 l 不紅線,大概是因為l 在for 里被標黃線了吧…
教程里是寫在else里的嗎?這部分print(m)和print(l)應該頂格寫可能才是作者原意 (:
uj5u.com熱心網友回復:
'm'for m in [1, 9, 0]:
print("for")
break
只定義在這一段,在其他地方是沒有定義的
uj5u.com熱心網友回復:
而l在以下都有定義for l in [1, 9, 0]:
if l % 3 == 0:
print("if")
break
else:
print("else")
print(l)
uj5u.com熱心網友回復:
for回圈正常結束,else中陳述句執行。如果是break的,則不執行轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/34968.html
