2012-01-11 73 views
1

我想這個例子:int對象不可調用的錯誤

enter image description here

p = 10000 
n = 12 
r = 8 
t = int(input("Enter the number of months the money will be compounded ")) 

a = p (1 + (r/n)) ** n,t 

print (a) 

..但錯誤是:

TypeError: 'int' object is not callable

是Python的看到P作爲功能?如果是這樣,沒有導入模塊我沒辦法做到嗎?

謝謝!

回答

1

假設你正在使用Python 3 ..

p = 10000 
n = 12 
r = 8 
t = int(input("Enter the number of months the money will be compounded: ")) 

a = p * (1 + (r/n)) ** (n * t) 

print(a) 

而且仔細檢查單位t,是它在幾個月或幾年?該公式似乎暗示了幾年(如果n = 12是每年的幾個月),但你提示數月。

如果在python 2.x中,您需要從__future__導入除法,或者先將r轉換爲浮點數。並且您將使用raw_input作爲提示。

+0

輸入工作,但不是raw_input'NameError:名稱'raw_input'未定義' – 3zzy 2012-01-11 05:43:13

+0

然後你在python 3上。 – wim 2012-01-11 06:25:42

5

行更改爲

a = p * (1 + (r/n)) ** (n * t) 

Python不解釋是因爲乘以彼此相鄰(也不將其解釋n, t作爲。

+1

注意:如果OP是使用Python 3(他們似乎被賦予打印功能語法),然後除以在默認情況下理智和''//是整數除法。 – wim 2012-01-11 05:31:39

+1

我也認爲p應該超出指數。 – wim 2012-01-11 05:32:25

+1

'float(r)/ n'的替代方法是在任何其他導入之前使用'from __future__ import division'。 – detly 2012-01-11 05:33:30

-1

您正在嘗試用p乘變量,所以你應該是明確的,並使用*

a = p * ((1 + (float(r)/n)) ** n,t) 

演員浮動(感謝大衛·R),以防止格INT四捨五入問題ision。

-1
  1. 您需要的「*」操作員乘號
  2. 分INT通過INT不給一個浮動這麼一個float投一分的浮動乘(你會看到「* 1。」中一些代碼可以做到這一點「
  3. 你的輸入行與上面的變量不匹配(即t應該是年份而不是月份,n是每年複合的次數... 12月份和季度4等)
  4. 還需要將您的8改爲0.08(百分比)

嘗試:

p * (1 + (r/100.0/n)) ** (n * t) 
+0

A down vote?..我唯一的抱怨就是最高的upvoted和接受的答案不給正確答案與提供的變量輸入。不算正確的數字?.....現在你已經得到了一些投票....打我......哈哈 – 2012-01-12 01:59:25