2015-10-13 152 views
-1

好吧,所以我需要編寫代碼,以便基本充當收銀員。要做到這一點,收銀員必須詢問用戶他們想要什麼,他們想要多少,然後詢問他們是否需要別的東西,直到他們完成訂單。用戶輸入打破while循環?

我已經設置了我將使用的任何變量的值。

while (order != 'done' or 'Done'): #goal: repeat "can I take your order" 
    order == input("Can I take your Order? (Enter food item or 'done' to complete order) ") 
    if (order == 'burger' or 'Burger'): 
     a = float(input("How many would you like? ")) 
     break 

當我做了類似上面的代碼時,我的程序會在輸入'漢堡'後中斷。

while (order != 'done' or 'Done'): #goal: repeat "can I take your order" 
    order == input("Can I take your Order? (Enter food item or 'done' to complete order) ") 
    if (order == 'burger' or 'Burger'): 
     a = float(input("How many would you like? ")) 

    elif (order == 'cheeseburger' or 'Cheeseburger'): 
     b = float(input("How many would you like? ")) 
     break 
    elif (order == 'fries' or 'Fries'): 
     c = float(input("How many would you like? ")) 
     break 
    elif (order== 'done' or 'Done'): 
     break 

當我剛當輸入被認爲是「漢堡包」,那麼不管輸入會不斷地問我的訂單刪除休息。

  1. 我可以接受您的訂單嗎? (輸入食物項目或「完成」完成訂單)漢堡
  2. 你想要多少? 3
  3. 我可以接受您的訂單嗎? (輸入食物項目或'完成'完成訂單)完成
  4. 你想要多少? 0
  5. 我可以接受您的訂單嗎? (輸入食物項目或'完成'完成訂單)巧克力
  6. 你想要多少? 0
  7. 我可以接受您的訂單嗎? (輸入食品項目或'完成'完成訂單)薯條
  8. 你想要多少? 2 我可以接受您的訂單嗎? (進入「完成」即可完成點菜項目或)

我不知道什麼是錯我的代碼。有人能指引我朝着正確的方向嗎?

+0

你錯過了'break' ... – jonrsharpe

回答

0

那是因爲你沒有分配「訂單」,你只是比較它。 != '完成'=和==

order = input("Can I take your Order? (Enter food item or 'done' to complete order) ") 

while (order.lower() != 'done'): 

因爲訂購!= '完成' 或爲了區別將總是導致

order != 'burger' or 'Burger' 

wil損益結果在漢堡如果順序「漢堡」其他明智它會導致「漢堡」

>>> order = raw_input() 
burger 
>>> order == 'burger' or 'Burger' 
True 
>>> order = raw_input() 
done 
>>> order == 'burger' or 'Burger' 
'Burger' 

所以,在某種程度上你的第一個如果始終是真實的

0

的問題是你的循環的選擇表達式。簡而言之,or不會像你認爲的那樣工作。我將專注於while循環,但您在if聲明中犯了同樣的錯誤。

考慮以下代碼:

while (order != 'done' or 'Done') 

這是一樣的:

while ((order != 'done') or ('Done')): 

...這是大致相同

while ((order != 'done') or ('Done' != "")): 

換句話說,語句將是真實的,因爲'Done'被認爲是「truthy」。

解決方案:寫這樣的:

while (order != 'done' and order != "Done"): 

...甚至更好,捕捉所有情況:

while (order.lower() != "done"): 
+0

嘿感謝!我們班的案例還沒有完成,但是這個任務需要輸入較低或較高。這對我有意義。 – JimmyGatz