我对Python和 我正在做一个“餐厅订购项目”。我需要实现的步骤如下:
创建一个新的空菜单(作为餐厅中的菜单)字典
从键盘上读取几个值-键和值
从一个团体那里订购一个已经到我餐厅的订单
打印订购的餐点和整个订单的价格
目前,我的代码接受键和值,但是当我尝试打印多个订单时,它仅求和添加到字典中的值,而不求和实际订单。
对不起,我的代码不好,我真的很陌生,被困住了,不胜感激。
这是到目前为止的代码:
menu={}
while True:
key=input("Give meal name: ")
if len(key)==0:
break
price=input("Price of "+key+" is ")
menu[key]=price
sum=0
for key, value in menu.items():
print(key, value)
sum+=float(value)
order={}
while True:
for key, value in menu.items():
print(key, value)
mealKey=input("Order, choose meal: ")
if mealKey in menu.keys():
order[mealKey]=menu[mealKey]
elif mealKey=="":
break
elif mealKey not in menu:
print("Meal does not exist")
sum=0
for key, value in order.items():
print(key, value)
sum+=float(value)
print("Price of the order is: ",sum)
print("Sum=",sum)
答案 0 :(得分:0)
菜单创建(第一个while循环)基本上是可以的。仅求和部分是怪异的,因为在该循环之后会更好。
应该重新考虑订单的数据结构。在您的代码中,它将顺序放在字典中的同一键下。因此,两次添加相同的菜单项将覆盖之前的菜单项。
我建议您对订单使用元组数组:
menu={}
while True:
# Get meal name
key=input("Give meal name: ")
if len(key)==0:
break
# Get meal price
price=input("Price of "+key+" is ")
# Add to dictionary
menu[key]=price
# Print all menu items
print("Here's the menu so far")
for key, value in menu.items():
print(key, value)
order=[]
while True:
# Print options
print("Menu options:")
for key, value in menu.items():
print(key, value)
mealKey=input("Order, choose meal: ")
if mealKey in menu:
# Append a tuple of menu items name and price to order
order.append((mealKey, menu[mealKey]))
print("Order accepted")
elif mealKey=="":
break
elif mealKey not in menu:
print("Meal does not exist")
sum=0
# Iterate over the tuples we added to order array
print("You ordered: ")
for key, value in order:
# Print order
print(key, value)
sum+=float(value)
print("Price of the order is: ",sum)
print("Sum=",sum)
现在,如果您有重复的订单,它将得到处理,并且不会被覆盖。