[英]Working out number of years in compound interest using python function
學校問題:
構建一個函數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()
來解決所有問題。
首先,我將注意到,像SO這樣的廣泛調試問題並不十分合適。
話雖如此,我還是嘗試了一下,再次閱讀規格后,發現了問題所在。 我想我也應該發布它。
您只需要在本金小於終值時繼續進行計算。 當它們相等時,您可以停止。
但是,主要問題是您每年沒有增加任何錢。 您只是對初始本金積累了興趣。 和...
您立即投資了PMT
。 按照說明,直到年底才進行投資。 這意味着在循環開始時,他投入了0。 這意味着他直到第二個循環/年開始才開始積累興趣。
def retirement_age(PMT, i, FV, start_age):
age = start_age
p = 0
while p < FV:
p = PMT + p * (1+i)
age += 1
return int(age)
print(retirement_age(20000, 0.1, 635339.63, 20))
# 35
我介紹了p
來跟蹤運行余額,因為它與每年添加的余額分開。 您跟蹤年齡的邏輯也有些復雜,因此我將其簡化了一些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.