计算存入房屋所需的月份数的功能

时间:2018-08-06 22:49:47

标签: python function math finance

这是针对一项作业的完整披露,但我的输出与给定测试用例的作业之间存在一些差异。

该功能将您的年薪,每月您将节省的薪水的一部分作为百分比以及房屋成本。

假设我需要房屋总成本的25%。薪水的一部分用于每月的积蓄,我也每月积蓄4%的利息。

def house_hunting(annual_salary, portion_saved, total_cost):

    portion_down_payment = 0.25 * total_cost
    current_savings = 0
    r = 0.04
    months = 0

    while current_savings < portion_down_payment:
        current_savings += (annual_salary * portion_saved) / 12
        current_savings += current_savings * r / 12
        months += 1

    return months

print( house_hunting(120000,0.1,1000000) )
print( house_hunting(80000,0.15,500000) )

第一个电话给了我182个月,而测试用例说是183个月。 第二个电话给了我105个月,根据测试案例,这是正确的。

所以我的数学在某处是错误的;谁能看到我要去哪里错了?

2 个答案:

答案 0 :(得分:3)

问题是您给每个新存款一个月的利息。相反,您必须等到下个月。因此,对于每个月,您应该计算整个月持有的余额的利息,然后然后进行新的存款。很简单,切换这两行:

while current_savings < portion_down_payment:
    current_savings += current_savings * r / 12
    current_savings += (annual_salary * portion_saved) / 12
    months += 1

现在您将获得正确的结果。

答案 1 :(得分:2)

只需像这样修改顺序:

while current_savings < portion_down_payment:
    current_savings += current_savings * r / 12
    current_savings += (annual_salary * portion_saved) / 12

您对储蓄(上个月的当前储蓄)产生了兴趣,然后增加了新收入。