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}」不存在,请重新选择")
修复细节说明
- 库存总额计算修复:
原代码仅累加商品单价,修改为单价 × 库存数量后再累加,确保库存总额是所有商品的实际库存价值总和。 - 商品选购逻辑修复:
- 增加循环机制,支持用户重复选购直到主动退出;
- 对商品名称输入做了去空格、转小写处理,避免因输入格式问题导致匹配失败;
- 加入
try-except捕获非数字输入异常,防止程序崩溃; - 增加数量合法性校验,拒绝非正整数输入;
- 优化提示信息,明确告知用户错误原因;
- 补充购买花费计算,提升交互体验。
内容的提问来源于stack exchange,提问作者IMissHer
相关产品推荐
相关产品推荐

