2016-12-05 105 views
0

有問題的代碼是這樣的:解釋忽略的elif子句完全

if條款,似乎觸發罰款,一樣的「別人」的條款,而如果按預期運行,應該打印給定的消息並關閉程序,如果給定的輸入不是數字。問題是elif條款,解釋者似乎完全忽略。即使我將1,2,3或4放入節目中 - 無可爭議地低於12節 - 它只是繼續打印「恭喜!」。線。我非常困惑,對此很感興趣 - 任何見解都將受到高度讚賞。提前致謝!

+1

在分配給「age」之前,將用戶輸入轉換爲「int()」。確實是一個非常常見的錯誤。 – DyZ

+0

請不要在你的條件下加上多餘的括號。 –

+0

另外,請謹慎使用標籤。例如,「解釋者」標籤不應該用於這個問題,「標籤[解釋者]應該應用於解釋者的編程問題或解釋者的詳細內部問題。」這是一個基本的Python問題。 –

回答

1

if int(age)。這是幹什麼的?它只是檢查一個真實的布爾值。如果這是真的,那麼它會一直進入if聲明。在Python中,每件事物都有「真實性」,因此任何不等於零的數字都將導致輸入if

這裏有更接近你想要實現的東西(我認爲?)。您可以編輯以重新提示輸入,引發錯誤,無論其他情況如何。

age = input("How old are you? ") 
if not age.isdigit(): 
    print("Invalid age, must be numeric") 
elif int(age) < 12: 
    print("You're way too young to hear all this swearin'. Get out.") 
else: 
    print("Congratulations! Some people die before they get to be %s years old!" % (age)) 
+0

啊,我明白了。你寫的東西肯定更有意義,非常感謝你 - 我仍然對你提到的'真實性'方面有點困惑,但是我確信這是無法用額外的方法糾正的。閱讀和研究。我非常感謝幫助,祝你有美好的一天! – sanityrepresent