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

Python购物车代码仅累加最后一项商品价格的问题求助

问题分析与修复

核心问题

你的代码存在几个关键错误,导致输入done后仅计算最后一项商品的价格:

  • stock字典语法非法:直接在字典中写入"Fruit"这类分类文本但未设置对应值,会触发语法报错,程序根本无法正常运行。
  • 购物车混入无效项:输入的done、cart、stock这些命令会被加入购物车,计算总价时需要排除这类非商品项。
  • 计价函数逻辑混乱:shopping_bill里的三层嵌套循环完全错误,break语句导致循环仅执行一次,item == key in prices的判断逻辑也不成立,最终只累加了最后一个匹配项的价格。

修复后的完整代码

# 初始化购物车,移除多余的空字符串初始值
shopping_cart = []
food = shopping_cart

# 库存字典:修正语法错误,用注释分类而非非法键值对
stock = {
    # Fruit
    "banana": 50,
    "apple": 15,
    "orange": 32,
    "pear": 15,
    # Drinks
    "apple juice": 10,
    "orange juice": 10,
    "pineapple juice": 10,  # 修正拼写错误:pinapple → pineapple
    "milk": 15,
    # Snacks
    "chips": 20,
    "cookies": 20,
    "chocolate": 25,
    "lollies": 50
}

# 价格字典
prices = {
    # Fruit
    "banana": 10,
    "apple": 5,
    "orange": 5,
    "pear": 5,
    # Drinks
    "apple juice": 5,
    "orange juice": 5,
    "pineapple juice": 5,  # 同步拼写修正
    "milk": 4.80,
    # Snacks
    "chips": 7,
    "cookies": 4,
    "chocolate": 6,
    "lollies": 5.50
}

# 交互循环:先处理命令,再添加商品到购物车
while True:
    item = input("Enter an item: ").lower()
    
    if item == 'done':
        break
    if item == 'cart':
        print(shopping_cart)
        continue  # 跳过添加到购物车的步骤
    if item == 'stock':
        for k, v in stock.items():
            print(f"{k}: {v}")
        continue  # 跳过添加到购物车的步骤
    
    # 仅将非命令的商品项加入购物车
    shopping_cart.append(item)

# 计价函数:简化逻辑,遍历购物车有效项计算总价
def shopping_bill(food):
    total = 0.0
    for item in food:
        # 检查商品是否在价格表中,避免触发KeyError
        if item in prices:
            total += prices[item]
    print(f"Your bill total equals $ {total:.2f}")  # 格式化显示两位小数
    print("Thank you for shopping at B&K Supermarket!")

shopping_bill(food)

关键修复说明

  1. 修正字典语法:将分类文本改为注释,确保stock字典结构合法,同时修正了pinapple的拼写错误。
  2. 优化交互逻辑:先处理done、cart、stock命令,用continue跳过添加到购物车的步骤,避免无效项混入。
  3. 重构计价逻辑:直接遍历购物车中的每一项,检查是否在价格字典中后累加对应价格,逻辑清晰且正确。
  4. 格式化输出:用:.2f确保总价以两位小数的货币格式显示。

内容的提问来源于stack exchange,提问作者Swift AU

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 12:48:16