Python变量不更新且无法读取字典值完成累加怎么办?
问题原因
- 你将
num1~num6这些用于累加金额的变量,初始化放在了内层点餐循环的内部,每次用户输入一个商品时,程序都会先将所有计数变量重置为0,上一次选择商品累加的金额会被直接清空,最终只能统计到最后一次输入的商品价格,自然不会有累加效果。 - 额外问题:代码中存在单词拼写错误,提示商品不存在的输出里
exit应为exist,商品字典里的dount应为donut,同时变量命名可读性差,结构可大幅简化。
修复后可直接运行的代码
import time coffee = { "hot brew": 4.25, "latte": 4.75, "mocha": 4.99, "cold brew": 3.95, "cappuccino": 4.89, "donut": 1.50 } program_running = True while program_running: goods_total = 0 ordering = True while ordering: items = input("请输入你要购买的商品名,留空即可结束订单:") if items == "": ordering = False elif items in coffee: goods_total += coffee[items] print(f"已添加{items},当前商品总价为{goods_total}$") else: print("该商品不存在,请重新输入") # 计算7%税费后的最终总价,保留两位小数 final_total = round(goods_total * 1.07, 2) print(f"你的订单含税总价为:{final_total}$") time.sleep(5) leave = input("是否要关闭程序?输入yes即可关闭:") if leave.lower() == "yes": program_running = False
优化说明
- 无需为每个商品单独定义累加变量,直接用一个
goods_total变量即可完成所有商品金额的累加,后续新增商品只需要在coffee字典中添加对应条目即可,无需修改逻辑代码 - 新增了金额四舍五入保留两位小数的处理,避免浮点运算出现多位小数的异常显示
- 直接用
in判断输入的商品是否在字典中,代码更简洁易维护 - 变量命名更清晰,降低后续修改的成本
内容的提问来源于stack exchange,提问作者Jaho Becon
相关产品推荐
相关产品推荐

