2013-10-21 182 views
0

我正在努力學習更多關於if的陳述。我試圖創建一個程序,要求用戶輸入數量的啤酒,並在數量增加時輸出不同的答案。我無法弄清楚我做錯了什麼。爲什麼我的Python代碼學習「if」語句,失敗?

我想要發生的是當我輸入數字,例如。 5結果應該是「啤酒真棒」。因爲它低於50.如果我輸入60,它應該輸出「這是很多啤酒。」因爲它高於50且低於100.

我讀過Python文檔,但仍然沒有弄明白。這是我的代碼:

print "How many cans of beer do you want?" 

beer = raw_input("Enter your amount: ") 

if beer >= 1: 
    print "Beer is awesome." 
elif beer >= 50: 
    print "That's a lot of beer." 
elif beer >= 100: 
    print "You're drinking way too much beer, man." 
else: 
    "Did you make a choice larger than 100? If yes, then you're crazy!" 

回答

5

raw_input返回一個字符串,你應該轉換爲一個int來做數學運算。

beer = int(raw_input("Enter your amount: ")) 

而且,總是提什麼不順心/反對在您的文章您的期望,在這種情況下,很容易看到,但更復雜的代碼,它迅速變硬的實際問題是什麼。

編輯:你的程序還有另外一個問題,但我想你可以在沒有錯誤的情況下自己找出一個問題。

+0

謝謝Azeirah!它運作良好。是的,我會在將來提到這一點。 – lol5433

+0

@Cybe以防萬一,另一個問題是任何大於等於50或大於等於100的值也大於等於1,因爲那些條件在'elif'子句中,那些塊永遠不會被執行。 – OdraEncoded

+0

@Azeirah是的,我想通了,正如我評論大安的答案。我用<=而不是> =。它工作完美。 – lol5433

0

問題是,raw_input返回一個字符串 - = ,以便與返回的值進行數字比較,您必須將其轉換爲int

試着改變你的輸入線路 beer = int(raw_input("Enter your amount: "))代替

+0

該代碼行很有趣。你根本沒有改變什麼=) – aIKid

0

如果始終是真實的,你會得到你應該使用上限而不是下限,否則你的第一個「啤酒是真棒。」

if beer < 50: 
    print "Beer is awesome." 
elif beer < 100: 
    print "That's a lot of beer." 
elif beer < 500: 
    print "You're drinking way too much beer, man." 
else: 
    "Did you make a choice larger than 500? If yes, then you're crazy!" 
0

讓我們來看看你的if聲明是做什麼的。

if beer >= 1: 

這意味着當的beer的值大於或等於一,則執行下面的代碼。

elif beer >= 50 

elif是,你可以在其他語言如「否則,如果」查找的關鍵字。它的意思是:如果前面的語句是假的(else),但下面的語句是真(if),則執行下面的塊。這意味着你只能得到「這是很多啤酒」的輸出。當beer >= 1爲假時,beer >= 50爲真 - 這從不,因爲beer不能小於1且大於50。其他elif聲明也是如此。

如果所有其他陳述都是錯誤的 - 換句話說,當beer等於或更少時,您可能會得到最後一個輸出:「您做出的選擇是否大於100?如果是,那麼您瘋了!比零。

我希望你明白你現在如何得到正確的表述,以得到你想要的。

+0

謝謝大安。我已經計算出來了,並把<=而不是> =並添加了一個新的elif,並刪除了else:'if beer <= 10中的文本:print「Beer is awesome。」 elif啤酒<= 50: \t print「這是很多啤酒。」 elif啤酒<= 100: \t print「你喝得太多啤酒,男人。」 elif beer> = 100: \t print「你做出了超過100的選擇嗎?如果是,那麼你瘋了!」其他: \t print「」' – lol5433