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

Python商店代码修复求助:库存总额与商品选购功能异常

修复后的商店类代码及问题说明

原问题代码(模拟常见错误版本)

class Store:
    def __init__(self):
        self.stock = {"apple": {"price": 5, "quantity": 10}, "banana": {"price": 3, "quantity": 20}}

    def stock_display(self):
        total_value = 0
        for item in self.stock.values():
            total_value += item["price"]  # 错误:仅累加单价,未计算库存总价
        print(f"库存商品:{self.stock}")
        print(f"库存总额:{total_value}")

    def customer(self):
        choice = input("请选择商品:")
        if choice in self.stock:
            quantity = int(input("请输入购买数量:"))
            if quantity > self.stock[choice]["quantity"]:
                print("库存不足")
            else:
                self.stock[choice]["quantity"] -= quantity
                print(f"购买成功,剩余库存:{self.stock[choice]['quantity']}")
        else:
            print("商品不存在")  # 错误:无重试逻辑,输入非数字会崩溃

修复后的代码

class Store:
    def __init__(self):
        self.stock = {"apple": {"price": 5, "quantity": 10}, "banana": {"price": 3, "quantity": 20}}

    def stock_display(self):
        total_value = 0
        for item in self.stock.values():
            # 修复1:计算单类商品库存总价后累加
            total_value += item["price"] * item["quantity"]
        print(f"库存商品:{self.stock}")
        print(f"库存总额:{total_value}")

    def customer(self):
        while True:
            choice = input("请选择商品(输入q退出):").strip().lower()
            if choice == 'q':
                break
            if choice in self.stock:
                try:
                    quantity = int(input("请输入购买数量:"))
                    if quantity <= 0:
                        print("请输入大于0的有效数量")
                        continue
                    if quantity > self.stock[choice]["quantity"]:
                        print(f"库存不足,当前{choice}仅剩余{self.stock[choice]['quantity']}件")
                    else:
                        total_cost = self.stock[choice]["price"] * quantity
                        self.stock[choice]["quantity"] -= quantity
                        print(f"购买成功!共花费{total_cost}元,{choice}剩余库存:{self.stock[choice]['quantity']}")
                except ValueError:
                    print("请输入有效的数字数量")
            else:
                print(f"商品「{choice}」不存在,请重新选择")

修复细节说明

  • 库存总额计算修复:
    原代码仅累加商品单价,修改为单价 × 库存数量后再累加,确保库存总额是所有商品的实际库存价值总和。
  • 商品选购逻辑修复:
    1. 增加循环机制,支持用户重复选购直到主动退出;
    2. 对商品名称输入做了去空格、转小写处理,避免因输入格式问题导致匹配失败;
    3. 加入try-except捕获非数字输入异常,防止程序崩溃;
    4. 增加数量合法性校验,拒绝非正整数输入;
    5. 优化提示信息,明确告知用户错误原因;
    6. 补充购买花费计算,提升交互体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:30:21