2013-04-18 59 views
0

假設您有一個投資計劃,您在每年年初投資一定的金額。計算去年年底投資的總價值。投入將是每年投資的金額,利率和投資年限。年度投資的未來價值

該程序計算每年不斷投資的未來值 。 輸入年度投資:200 輸入年利率:0.06 輸入的年數:12 在12年的值是:3576.427533818945

我已經嘗試了一些不同的東西,像下面,但它不會給我那3576.42,它只給我400美元。有任何想法嗎?

principal = eval(input("Enter the yearly investment: ")) 
apr = eval(input("Enter the annual interest rate: ")) 
years = eval(input("Enter the number of years: ")) 
for i in range(years): 
    principal = principal * (1+apr) 
print("The value in 12 years is: ", principal) 
+6

誰的想法是它使用'eval',而不是'float'?普拉克! – 2013-04-18 06:39:19

+0

@gnibbler +1指出。無關緊要的寵物peeve:你的意思是*誰的,而不是*誰的*。 – 2013-04-18 06:57:58

+1

@DarshanComputing,當然。你也必須討厭[HTTP_referer](http://en.wikipedia.org/wiki/HTTP_referer):) – 2013-04-18 07:06:39

回答

0

正如評論中所建議的,您不應該在這裏使用eval()。 (有關eval的更多信息,請參見in the Python Docs)。 - 請改爲使用float()int()(如適用),如下所示。

此外,您的print()聲明打印出括號和逗號,我希望你不想這樣做。我在下面的代碼中清理了它,但是如果你想要的是你可以隨意放回去的東西。

principal = float(input("Enter the yearly investment: ")) 
apr = float(input("Enter the annual interest rate: ")) 

# Note that years has to be int() because of range() 
years = int(input("Enter the number of years: ")) 

for i in range(years): 
    principal = principal * (1+apr) 
print "The value in 12 years is: %f" % principal 
2

如果它是每年進行投資,你應該每年進行添加:

yearly = float(input("Enter the yearly investment: ")) 
apr = float(input("Enter the annual interest rate: ")) 
years = int(input("Enter the number of years: ")) 

total = 0 
for i in range(years): 
    total += yearly 
    total *= 1 + apr 

print("The value in 12 years is: ", total) 

有了您的輸入,這個輸出

('The value in 12 years is: ', 3576.427533818945) 

更新:在回答您的問題從意見,以澄清是怎麼回事:

1)你可以使用int()作爲yearly並獲得相同的答案,如果您始終投資整個貨幣數量,這很好。例如,使用浮動工具也可以工作,但也允許數量爲199.99

2)+=*=是方便的速記:total += yearly表示total = total + yearly。打字有點容易,但更重要的是,它更清楚地表達了意思。我的理解是這樣的

for i in range(years): # For each year 
    total += yearly # Grow the total by adding the yearly investment to it 
    total *= 1 + apr # Grow the total by multiplying it by (1 + apr) 

更長的形式僅僅是不清晰:

for i in range(years):  # For each year 
    total = total + yearly # Add total and yearly and assign that to total 
    total = total * (1 + apr) # Multiply total by (1 + apr) and assign that to total 
+0

這個致命的''年''必須是'int()' – mdierker 2013-04-18 06:49:05

+0

@mdierker謝謝,我實際上在你的評論之前解決了這個問題。我在發佈之前發佈了它,並且在SO向您展示我的編輯之前肯定有一段延遲。 – 2013-04-18 07:07:58

+0

gotcha,很好的抓住:) – mdierker 2013-04-18 07:48:07