将值添加到python中的字典吗?

问题描述 投票:0回答:1

我下面有一个基本的菜单程序。我在将商品的“价格”添加到最终的“订单”字典时遇到了麻烦,因此创建的“ txt”文件会适当地显示商品和价格。在代码中,您可以看到“ orders”目前不是字典,而是一个“列表”(这是我目前可以使它工作的唯一方法。此外,我还有一个硬编码的“价格为3.00”,而不是该人选择的商品的实际价值(我知道我需要用其他东西代替“ 3.00”。)感谢您的提前帮助...

def print_menu(menu):
    for name, price in menu.items():
        print(name, ': $', format(price, '.2f'), sep='')


def get_order(menu):
    orders = []
    order = input("What would you like to order? (Q to Quit)")

    while order.upper() != 'Q':

        found_boolean = menu.get(order)
        if found_boolean:
            orders.append(order)

        else:
            print("Menu item does not exist")
            order = input("Anything else? (Q to Quit)")

    return orders


def total_bill(orders, menu):
    total = 0

    for order in orders:
        total += menu[order]

    return total


def write_sales_log(orders, total):
    sales_log = open('sales.txt', 'a')

    for item in orders:
    sales_log.write(item + ' ' + format(price, ' .2f') + '\n')
    sales_log.write('total = ' + format(total, '.2f') + '\n\n')
    sales_log.close()


def main():
    menu = {'Roast Beef': 2.5, 'Hot Dog': 3.0, 'Hamburger': 3.5}  
    print_menu(menu)
    orders = get_order(menu)
    total = total_bill(orders, menu)
    print("You ordered:", orders,
          "Your total is: $", format(total, ' .2f'), sep='')
    write_sales_log(orders, total)


main()
python dictionary pycharm
1个回答
0
投票
首先,在此代码中:

found_boolean = menu.get(order) if found_boolean: orders.append(order)

似乎您误解了get函数的功能。它在字典中查找键,并返回关联的值。它不返回布尔值。如果您只想查看order是否是menu词典中的键之一,请尝试以下操作:

if order in menu:
    orders.append(order)

[其次,请参阅如何在total_bill函数中正确编写menu[order]以在order词典中查找menu并取回相关值(价格)?使用相同的语法获取write_sales_log函数中每个项目的价格。因此,例如:

for item in orders:
    price = menu[item]
    sales_log.write(.......

第三,在get_order功能中,仅当用户的第一笔订单无效时才要求用户提供另一笔订单。如果他们给您有效的命令,那么您的代码将陷入无限循环并陷入困境。您可能想将order = input("Anything else? (Q to Quit)")行移到else块之外。

[第四,您写了您想orders作为字典。如您所指出的,当前该变量保存一个列表。您为什么宁愿它拿着字典?如果您宁愿使用字典,那么该字典的结构如何?词典将键与值相关联(例如,将食品与其价格相关联的词典menu)。 orders词典的键和值是什么?实际上,orders继续成为列表似乎是完全合理的。
© www.soinside.com 2019 - 2024. All rights reserved.