【发布时间】:2018-09-25 06:11:57
【问题描述】:
学校问题:
构建一个函数retirement_age(PMT, i, FV, start_age),计算您的客户可以退休的(整体)age,如果他们:
- 每年年底投资
PMT一年后付款), - 年利率为
i%,年复利。 - 他们需要至少
FV才能负担得起 退休。 - 他们刚满
start_age岁。
我正在努力解决PMT 需要多少年才能达到FV
这是我的代码:
def retirement_age(PMT, i, FV, start_age):
count = 0
while PMT <= FV: #PMT set to loop till it reaches FV
PMT = PMT * (1+i)
count = count + 1 #adds 1 to count value until while loop satisfied
age = count + start_age #adds count value to start_age to determine retirement age
return int(age) #returns age
print (retirement_age(20000, 0.1, 635339.63, 20))
我对此代码的回答:
57
答案应该是:
35
我不知道我做错了什么。而且任务特别提到我们不允许导入像math这样的外部函数,这意味着我不能使用math.log(),这可能会解决我所有的问题。
【问题讨论】:
-
可能不是您的问题,但
<=应该只是<。循环只需要在它们太少时继续,而不是在数量等于 FV 时继续 -
我明白了,谢谢您的意见
-
而且这段代码似乎没有考虑到每年的新投资。它只是复合了现有的原则。那不应该是
PMT = PMT + (PMT * (i + 1))吗?或类似的东西。您需要每年添加新的 PMT。 -
是的,我确实尝试过,然后我得到了 25 的答案
-
好吧,我会做出改变然后从那里开始工作。至少更近了。
标签: python-3.x function math