TypeError:'int'对象在第2行不可调用

时间:2015-05-26 22:07:34

标签: python python-2.7 python-3.x

我是Python的新手所以我正在浏览runestone的互动指南并输入以下代码:

t = int(input("number of yrs plsz"))
a = 10000(1+(0.08/12))**12t
print(a)

我收到此错误

  

TypeError:'int'对象在第2行不可调用

5 个答案:

答案 0 :(得分:2)

10000()是调用函数(myfunction())的语法。相反,与*运算符相乘。

通过使用括号,您试图调用无法完成的函数10000,因为10000是整数,而不是函数。

答案 1 :(得分:0)

你不能用括号乘以,你需要明确地输入所有乘法运算符,如下所示:

a = 10000 * (1 + (0.08 / 12)) ** (12 * t) # basically you can't call 10000() as a func

答案 2 :(得分:0)

您不能使用您在第2行使用的符号。

当你写一个= 1000(某事)时,python认为你正试图调用名为“1000”的方法。

重写为

a = 10000 *(1+(0.08 / 12))** 12t)

另外我假设你试图做12 * t,你不能只说12t。这也是无效的语法。

所以真的应该

a = 10000 * (1+(0.08/12))**12*t

我不确定在数学方面以这种方式重写它,但至少它会运行。

答案 3 :(得分:0)

我认为你想写的是:

a = 10000 * (1 + (0.08 / 12)) ** (12 * t)

这会像魅力一样,但错误的起源可能会让你感到困惑。问题是,只要Python在任何对象之后看到括号,比如说

obj(p1)

它会像这样调用对象的__call__方法

obj.__call__(p1)

如果未定义,则会收到错误消息。所以你的代码中发生的事情是Python到达了a = 10000(...部分,它试图做这样的事情

10000.__call__(1 + (0.08 / 12))

由于10000int类的实例,它试图找到该类的__call__方法的定义。正如您所猜测的那样,int类没有定义__call__方法,因此错误。

答案 4 :(得分:-1)

试试这个 -

a = 10000*(1+(0.08/12))**12*t.

如果您将t乘以12,请放置括号。