You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:54:03