為什么這段代碼回傳多個輸出 代碼
a = ["w", "u", "i", "r"]
count = 0
d = input("choose: ")
for c in a:
count = 1
if d == c:
print(count)
else:
print("wrong")
如果我選擇一個滿足條件“d==c”的字串,它會回傳字串的位置加上“錯誤”3次,
如果我選擇的字串不滿足條件,則輸出錯誤四次。
如果我不包括 else 部分,它只輸出一次字串的位置。
請問代碼有什么問題,因為我需要包含 else 部分
uj5u.com熱心網友回復:
如果我選擇一個滿足這個條件“d==c”的字串,它會回傳字串的位置加上“錯誤”3次,
這是你想要做的嗎?
a = ["w", "u", "i", "r"]
d = input("choose: ")
for index, c in enumerate(a):
if d == c:
print(f"At index {index}")
else:
print("wrong")
輸出 :
>>> choose: i
wrong
wrong
At index 2
wrong
uj5u.com熱心網友回復:
如果您要查找串列中元素的索引,請使用以下.index方法:
a = ["w", "u", "i", "r"]
print(a.index("u")) -> 1
如果元素不在串列中,它會回傳一個錯誤,您可以通過使用 atry-except或檢查元素是否在串列中來解決這個問題:
i = input("choose: ")
if i in a:
print(a.index(i))
else:
print("wrong")
或者
try:
print(a.index(i))
except ValueError:
print("wrong")
uj5u.com熱心網友回復:
你的邏輯都很好,但我們需要在這里做一個小的修改,因為你知道當d==c的值時它會列印索引,如果我們需要就在那里停下來,那么如果我們簡單地增加計數,如果找到然后停止回圈,請嘗試:
a = ["w", "u", "i", "r"]
count = 0
d = input("choose: ")
for c in a:
if d == c:
print(count)
break
count = 1
else:
print("wrong")
如果在串列 a 中找到 d,這將列印索引,否則它將列印“錯誤”
uj5u.com熱心網友回復:
我認為您想要做break的是找到匹配項時,并取消縮進else:
a = "wuir"
count = 0
for c in a:
count = 1
if d == c:
print(count)
break
else:
print("wrong")
取消縮進else使其成為for陳述句的一部分,而不是if. 這意味著只有當整個for回圈結束時它才會被執行break——這意味著"wrong"如果d == c條件從未滿足,你只會在回圈結束時獲得輸出。
結果:
choose: i
3
choose: f
wrong
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/367409.html
