You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我编写的Python小费计算器代码会重复打印两次百分比和小费金额?

小费计算器重复打印问题解决

问题原因

你代码里的三处for循环属于多余的错误写法:

  • str(15)会转为包含'1'、'5'两个元素的字符串,遍历的时候会执行2次循环内的打印语句,自然会输出两次15%的计算结果
  • 同理str(20)、str(25)都是双字符,对应循环各跑2次,所以三个比例的结果全都重复打印两次

修复方案

直接删掉三个多余的for循环,保留循环内部的打印语句即可,这里同时提供汉化优化后的简洁版本:

print("小费计算器")
print()

re_run = "y"
while re_run.lower() == "y":
    cost_of_meal = float(input("餐费金额:"))
    # 定义小费比例列表,后续调整比例只需修改该列表即可
    tip_percents = [15, 20, 25]
    
    print()
    for percent in tip_percents:
        tip = round(cost_of_meal * percent / 100, 2)
        total = round(cost_of_meal + tip, 2)
        print(f"{percent}%")
        print(f"小费金额:{tip}")
        print(f"总金额:{total}\n")
    
    print()
    re_run = input("\n是否继续计算?y/n:")
    if re_run.lower() != "y":
        break

print("\n感谢使用小费计算器,再见!")

如果你不想调整原有代码结构,仅需删除打印部分的三行for循环声明即可:

# 删掉for循环行,直接执行打印
print("15%")
print(("Tip amount: ") + str(tip_1))
print(("Total amount: ") + str(total_amount_1) + "\n")

print("20%")
print(("Tip amount: ") + str(tip_2))
print(("Total amount: ") + str(total_amount_2) + "\n")

print("25%")
print(("Tip amount: ") + str(tip_3))
print(("Total amount: ") + str(total_amount_3)+ "\n")

内容的提问来源于stack exchange,提问作者Ali250

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:39:01