2012-01-11 69 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