Python超市结账程序实现Loop循环功能求助
可循环运行的Python结账程序实现
你提供的原有代码存在多处语法、逻辑错误,首先需要修正这些问题再添加循环逻辑:
- 函数定义写在if判断分支内,结构不合理
- 缩进混乱,else分支和对应if的匹配逻辑错误
- return语句后仍有打印代码,属于永远不会执行的死代码
tax3等变量未定义就直接使用- 折扣比例描述前后不一致,一会标注11%一会用8%计算
- 内置多余的死循环逻辑,无全局循环控制
以下是修正后支持循环运行的完整代码,支持用户多次录入商品结算,直到主动选择退出:
# 定义土豆结算函数 def calculate_potatoes(quantity, price=5.99): total = quantity * price tax_rate = 0.0529 # 对应5.29%的税率 if quantity > 15: print("恭喜你,符合11%折扣条件") total_with_discount = total * 0.89 print("折扣后不含税总价:$", round(total_with_discount, 2)) else: print("很抱歉,你不符合11%折扣条件,购买超过15磅土豆才可享受折扣") total_with_discount = total print("无折扣不含税总价:$", round(total_with_discount, 2)) # 计算含税总价 total_with_tax = total_with_discount * (1 + tax_rate) print("含5.29%税费的最终总价:$", round(total_with_tax, 2)) print("感谢你光临沃尔玛,期待下次再见!") return total_with_tax # 全局循环逻辑 while True: print("\n===== 沃尔玛结账系统 =====") ask = input("请输入购买的商品名称,可选:土豆(Potatoes)、火腿(Ham)、苹果汁(AppleJuice)、佳得乐(Gatorade),输入quit可退出系统:").lower() if ask == 'quit': print("系统已退出,欢迎下次使用") break elif ask == "potatoes" or ask == "土豆": try: quantity = int(input("请输入购买的土豆重量(磅):")) if quantity <= 0: print("输入的重量必须大于0,请重新操作") continue calculate_potatoes(quantity, 8.99) except ValueError: print("输入的重量不是有效数字,请重新操作") else: print("你输入的商品暂未录入系统,目前仅支持土豆结算,请重新输入")
代码主要调整说明:
- 把商品结算函数移到全局位置,结构更规范
- 修正了原有代码的所有语法、逻辑错误,统一了折扣、税费的计算逻辑
- 外层添加
while True循环实现多次运行,用户输入quit即可终止程序 - 增加输入校验逻辑,避免用户输入非法内容导致程序崩溃
- 适配中英文商品名输入,打印信息全部汉化
内容的提问来源于stack exchange,提问作者user15984194
相关产品推荐
相关产品推荐

