Python字典值累加求和问题:循环输入直至Ctrl+D终止
解决方法
你的代码核心问题是没有维护一个累计总金额的变量,每次只输出当前菜品的价格。只需要做以下修改就能实现累加功能:
- 在
order函数的循环开始前,初始化一个变量来保存累计总金额 - 每次匹配到菜单中的菜品时,将对应价格累加到总金额里
- 打印时输出累计的总金额,而不是单份菜品的价格
修改后的完整代码:
def main(): order() menu = { "Baja Taco": 4.00, "Burrito": 7.50, "Bowl": 8.50, "Nachos": 11.00, "Quesadilla": 8.50, "Super Burrito": 8.50, "Super Quesadilla": 9.50, "Taco": 3.00, "Tortilla Salad": 8.00 } def order(): total = 0.0 # 初始化累计总金额 while True: try: i = input("Input: ") i = i.title() if i in menu: total += menu[i] # 将当前菜品价格累加到总金额 print("total: ${:.2f}".format(total)) except EOFError: print('') break main()
说明:
- 新增的
total变量会在每次输入有效菜品时持续累加价格 - 用
menu[i]直接取值比menu.get(i)更简洁,因为已经判断过i在菜单里了 - 按下Ctrl+D触发EOFError时,会打印空行并终止循环,符合需求
内容的提问来源于stack exchange,提问作者Jesse_D
相关产品推荐
相关产品推荐

