如何编写Python程序实现棒球订单折扣计算及含礼品包装的总价输出
修正后的Python程序实现
先指出你现有代码的几个问题:
- 折扣计算逻辑错误:你直接用购买数量乘折扣率,但正确逻辑应该是**总金额(数量×单价)**乘折扣率
- 折扣的打印语句仅在购买51个及以上时执行,其他情况无输出
- 未处理礼品包装的2美元额外费用
- 打印购买数量时,整数与字符串直接拼接会触发类型错误
- 未计算并输出折扣后的最终订单总价
下面是符合需求的正确代码:
# 定义固定常量 BASEBALL_PRICE = 1.99 WRAPPING_FEE = 2.0 # 获取用户输入的购买数量 baseball_count = int(input("请输入购买棒球的数量:")) # 计算原价总金额 original_total = baseball_count * BASEBALL_PRICE # 根据数量确定折扣率并计算折扣金额 discount_rate = 0.0 if 10 <= baseball_count <= 50: discount_rate = 0.05 elif baseball_count >= 51: discount_rate = 0.10 discount_amount = original_total * discount_rate # 处理礼品包装费用 wrapping_choice = input("是否需要礼品包装?(是/否):").strip().lower() wrapping_cost = WRAPPING_FEE if wrapping_choice in ["是", "y", "yes"] else 0.0 # 计算最终总价 final_total = original_total - discount_amount + wrapping_cost # 输出结果 print(f"购买棒球数量:{baseball_count} 个") print(f"折扣金额:${discount_amount:.2f}") print(f"折扣后订单总价(含礼品包装):${final_total:.2f}")
代码说明:
- 用常量定义单价和包装费,后续修改参数更方便
- 折扣计算基于总金额,完全符合给定的折扣规则
- 兼容多种礼品包装的输入形式(比如"是"、"y"、"yes"均视为需要包装)
- 输出保留两位小数,符合美元金额的显示习惯
- 修复了原代码的类型拼接错误
内容的提问来源于stack exchange,提问作者TheWellAchieved
相关产品推荐
相关产品推荐

