You need to enable JavaScript to run this app. Python超市结账程序实现Loop循环功能求助
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 17:06:06