需要向字典中添加项目,给它们提供值,然后从字典中选择添加的项目并打印所选项目的值的总和

时间:2018-10-30 21:25:49

标签: python dictionary sum

我对Python和 我正在做一个“餐厅订购项目”。我需要实现的步骤如下:

  1. 创建一个新的空菜单(作为餐厅中的菜单)字典

  2. 从键盘上读取几个值-键和值

  3. 从一个团体那里订购一个已经到我餐厅的订单

    • 打印所有菜单项
    • 从菜单中选择食物(通过输入名称),当订单为空时结束。 (重复直到返回空值为止)
  4. 打印订购的餐点和整个订单的价格

目前,我的代码接受键和值,但是当我尝试打印多个订单时,它仅求和添加到字典中的值,而不求和实际订单。

对不起,我的代码不好,我真的很陌生,被困住了,不胜感激。

这是到目前为止的代码:

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)

1 个答案:

答案 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)

现在,如果您有重复的订单,它将得到处理,并且不会被覆盖。