【发布时间】:2014-10-28 10:13:52
【问题描述】:
这是我为学校项目编写的程序。在最后一个 else 函数中,您可以看到我正在尝试删除之前的披萨订单,因为用户打错了。但是,使用简单的 -= 会授予 TypeError: unsupported operand type(s) for -=: 'str' and 'str'。这是我第一次在 Scratch (:P) 以外的地方写任何东西,因此不胜感激。
item_names = ["0","Super Supreme\n","Meat Lovers\n","BBQ Chicken & Bacon\n",\
"Apricot Chicken\n","Satay Chicken\n","Pepperoni Feast\n",\
"Beef Italiano\n","Seafood Deluxe\n","BBQ Hawaiian\n",\
"Peperoni Lover\n","Veg Supreme\n","Trio of Cheese\n",\
"Beef Hot 'n Spicy\n","Roma\n","Hawaiian\n","Classic Cheese\n",\
"Veg Hot 'n Spicy\n","Ham and Cheese\n","Beef and Onion\n",\
"Margherita\n","Large Fries\n","Garlic Bread\n","Onion Rings\n",\
"5 Spicy Chicken Wings","Dipping Sauce (","Orange Juice\n",\
"Bottled Water\n","355ml Soft Drink (","1.5L Soft Drink ("];
item_prices = [0,10.50,10.50,10.50,10.50,10.50,10.50,10.50,10.50,8.00,8.00,\
8.00,8.00,8.00,8.00,5.00,5.00,5.00,5.00,5.00,5.00,3.50,3.50,\
3.50,5.00,0.50,3.50,3.50,1.90,3.90];
print('Hello and welcome to the Shinanigan Pizzary!')
start =1
while start == 1:
menu_prompt = str(input("Would you like to open the menu? y/n\n"))
if menu_prompt == "y":
start =0
menu()
running_total =0
running_names =''
loop1 =1
while loop1 == 1:
try:
items_number = int(input("Please insert your desired item's number\n"))
running_total += float((item_prices[items_number]))
running_names += item_names[items_number]
query1 = str(input("Is that all? y/n\n\n"))
except IndexError:
print("Please enter a valid item number.\n\n")
if query1 == "y":
loop1 =0
print(running_names)
print("Running total:","$",(running_total))
print("\nThank you for coming! Your order is being made!")
elif query1 == "n":
print(running_names)
print("Running total:","$",(running_total))
else:
running_total -=float((item_prices[items_number]))
running_names -= item_names[items_number]
print("Please enter 'y' or 'n'")
elif menu_prompt == "n":
print("Okay. Thanks for coming. See you next time.")
break
【问题讨论】:
-
您可能希望将
running_names设为包含字符串而不是字符串本身的列表。然后您可以轻松地从列表中删除该项目。 -
您的姓名和价格应分组为元组或创建一个类。并行数组是不好的做法。
items = [('Super Supreme', 10.50), ('Meat Lovers', 10.50), ...]您可以轻松创建一个 for 循环,即for name, price in items:
标签: python string variables if-statement typeerror