如何用Python的模运算(%)修复英尺转码程序的计算Bug?
问题分析与修复方案
核心问题
你的代码存在两个关键错误:
- 判断逻辑完全错误:
(firstFeet + secondFeet) % 3的结果只能是0、1、2,永远不可能大于2,所以那个if语句根本不会触发,自然没法把多余的英尺转换成码。 - 执行顺序颠倒:你先打印了总码数,之后才尝试调整码数,就算
if语句能生效,打印的也是未调整前的数值。
修复后的代码
firstYard = int(input("Enter the Yards: ")) firstFeet = int(input("Enter the Feet: ")) secondYard = int(input("Enter the Yards: ")) secondFeet = int(input("Enter the Feet: ")) total_feet = firstFeet + secondFeet # 计算总英尺可转换的额外码数,以及剩余英尺数 extra_yards = total_feet // 3 remaining_feet = total_feet % 3 total_yards = firstYard + secondYard + extra_yards print("Yards: ") print(total_yards) print(" Feet: ") print(remaining_feet)
修复说明
- 先计算总英尺数,用
//3得到可转换的额外码数,%3得到剩余的英尺数,这才是英尺转码的正确逻辑。 - 先把所有码数(原始码数+转换来的码数)计算完成,再打印结果,确保输出的是最终正确数值。
测试输入(3,2,4,1)时:
- 总英尺=2+1=3,
extra_yards=3//3=1,remaining_feet=0 - 总码数=3+4+1=8,输出就是8码、0英尺,完全符合预期。
内容的提问来源于stack exchange,提问作者Boss
相关产品推荐
相关产品推荐

