Python餐费加15%小费平摊代码计算错误排查
问题背景
- 训练任务要求:两位朋友餐厅聚餐账单金额为47.28美元,需在账单基础上追加15%的服务小费后平摊全部费用,需分别计算小费金额、应付总金额、每人应付份额,最终输出固定前缀
Each person needs to pay:拼接每人应付金额的结果。 - 提交后提示计算错误的初始代码如下:
bill = 47.28 tip = 15 // bill * 100 total = bill + tip share = total // 2 print("Each person needs to pay:" + str(share))
代码存在的具体错误
- 小费计算公式完全错误:15%比例的小费计算逻辑应为「账单金额 * 0.15」,原代码用整数除法
//写的15 // bill * 100按照Python从左到右的运算优先级,会先计算15整除47.28得到结果0,再乘以100最终得到tip=0,完全不符合小费比例要求。 - 平摊金额时错误使用整数除法:总金额包含小数,使用
//做整数除法会直接截断小数部分取整,导致金额计算结果失真,平摊计算应该使用普通除法/保留小数结果。 - 输出格式不符合要求:要求的输出前缀冒号后带有一个空格,原代码中
"Each person needs to pay:"冒号后没有空格,和任务要求的输出格式不匹配。
修正方案
首先明确正确计算步骤:
- 小费金额:
47.28 * 0.15 = 7.092美元 - 应付总金额:
47.28 + 7.092 = 54.372美元 - 每人应付份额:
54.372 / 2 = 27.186美元
修正后可正常运行的代码:
bill = 47.28 tip = bill * 0.15 total = bill + tip share = total / 2 print("Each person needs to pay: " + str(share))
如果需要按照日常货币计数规则保留两位小数,可以将输出语句调整为格式化输出:
print(f"Each person needs to pay: {share:.2f}")
调整后输出结果为Each person needs to pay: 27.19。
内容的提问来源于stack exchange,提问作者Jaya Asiri Prem
相关产品推荐
相关产品推荐

