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

MIT OCW 6.0001 Pset1 Part B:半年度加薪代码逻辑错误排查

问题排查与修复

核心错误点

  • 条件判断逻辑错误:原代码用num_months / 6 == 0判断是否满6个月,这完全不成立——num_months从1开始递增,除以6的结果永远不可能为0。正确的判断应该是用取模运算num_months % 6 == 0,用来检查当前月份数是否是6的整数倍。
  • 重复计算当月储蓄:原if块内再次执行了current_savings += ...,这会导致加薪当月的储蓄被计算两次,既不符合逻辑,也会打乱储蓄增长节奏。

修正后的代码

annual_salary     = float(input('Your starting annual salary : '))
semi_annual_raise = float(input('Your semi-annual salary raise (express in a decimal) : '))
total_cost        = float(input('The cost of your dream home : '))
portion_saved     = float(input('The portion of salary you want to be saved (express in a decimal) : '))

portion_down_payment = total_cost * 0.25
r = 0.04
monthly_salary = annual_salary / 12

num_months = 0
current_savings = 0
while current_savings <= portion_down_payment:
    # 每月固定计算储蓄:利息+当月工资存款
    current_savings += current_savings * r / 12 + monthly_salary * portion_saved
    num_months += 1
    # 每满6个月(第6、12、18...个月结束后)执行加薪
    if num_months % 6 == 0:
        monthly_salary += monthly_salary * semi_annual_raise

print('Number of months =', num_months)

验证结果

输入参数120000、0.03、500000、0.05时,运行修正后的代码会输出Number of months = 142,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:42:07