2015-12-20 63 views
-1

我是一名新程序員,我在24小時內教自己使用Sams Teach Yourself Python,其中一個excersises告訴我要重寫一段代碼,以允許職員在一個約束條件下制定訂單,它告訴我改變它以包含價格,所以我做了,但是我想用用戶輸入的價格並把它放在一個列表中總結出來並打印總數。但是,它不起作用。我該怎麼辦?我的追加命令不起作用(Python)

下面是代碼:

breakfast_special = "Texas Omelet" 
breakfast_notes = "Contains brisket, horseradish cheddar" 
lunch_special = "Greek patty melt" 
lunch_notes = "Like the regular onem but with tzatziki sauce" 
dinner_special = "Buffalo Steak" 
dinner_notes = "Top loin with hot sauce and blue cheese, NOT BUFFALO MEAT" 

while True: 
    meal_time = raw_input("Which mealtime do you want? [breakfast, lunch, dinner, q to quit]") 
if meal_time == "q": 
    break 
price = raw_input("Price: $") 
price.append(price) 
total_price = sum.price 

if meal_time == "breakfast": 
    print "Specials for {} :".format(meal_time) 
    print breakfast_special 
    print breakfast_notes 
elif meal_time == "lunch": 
    print "Specials for {} :".format(meal_time) 
    print lunch_special 
    print lunch_notes 
elif meal_time == "dinner": 
    print "Specials for {} :".format(meal_time) 
    print dinner_special 
    print dinner_notes 
else: 
    print "Sorry, but {} isn't a valid choice".format(meal_time) 

print "Goodbye!" 
print "Price: ${}".format(total_price) 
+1

先修正您的縮進。 –

+0

你的變量和列表都得到相同的名稱'價格'。將列表名稱更改爲「價格」。然後調用它上面的'sum'函數。像這樣:'sum(prices)' –

+0

「把它列入一個列表」 - 什麼列表?你從來沒有做過。你不能只追加到一個數字,並期望它爲你創建一個「列表」。 – TigerhawkT3

回答

0

raw_input()採用一個字符串輸入。

因此,當您嘗試執行price = raw_input()時,用戶輸入將作爲字符串類型保存到變量'price'中。要將該值轉換爲int/float,可以執行int(price)float(price)

注意:您必須確保user_input實際上是一個數字。如果變量'price'包含字符,則將其轉換爲int/float將導致產生ValueError

要實現您正在嘗試執行的操作,請執行以下操作。

第一:分配一個新的列表來保存所有的價格作爲輸入。我們稱它爲price_list。

price_list = []

現在讓我們浮點輸入形成價格的用戶,並追加到PRICE_LIST

price = float(raw_input('Price for the item :')) 
price_list.append(price) 

現在我們有價格清單,讓我們所有的價格總和。

sum(price_list) 

這應該給你總數。

希望它有幫助!

+0

我不知道爲什麼這個答案有一個downvote ...我沒有看到任何錯誤 –

+0

作爲一個最佳實踐的問題,而不是建議OP使用input(),你應該建議他使用'raw_input()'和然後將結果轉換爲他需要的任何類型。 Python 2中的input()是危險的。 – senshin

+0

@ senshin是的。我明白那個。我建議'input'因爲使用'raw_input()'然後將其轉換爲int/float類型,要求他有額外的邏輯以確保user_input有效並且不會導致'ValueError'。 因爲這是一個初學者,我認爲這會使答案複雜化。 –