我是Python的新手所以我正在浏览runestone的互动指南并输入以下代码:
t = int(input("number of yrs plsz"))
a = 10000(1+(0.08/12))**12t
print(a)
我收到此错误
TypeError:'int'对象在第2行不可调用
答案 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))
由于10000
是int
类的实例,它试图找到该类的__call__
方法的定义。正如您所猜测的那样,int
类没有定义__call__
方法,因此错误。
答案 4 :(得分:-1)
试试这个 -
a = 10000*(1+(0.08/12))**12*t.
如果您将t乘以12,请放置括号。