TypeError:'int'对象不可调用Python 3

时间:2019-02-25 19:09:00

标签: python python-3.x debugging

这里是编程的新手,它一直在尝试编写简单的代码来实现1D黄金搜索方法,以找到函数的最小化器。似乎找不到我在做什么导致此TypeError

import math
def function(float):
  fx = 8*(exp(1-float))+7(log1p(float))
  return fx

while (xmax-xmin) > u:
  if function(x1) < function(x2):

错误消息:

TypeError                                 Traceback (most recent call last)
<ipython-input-37-a126a69b14a7> in <module>()

---> 12   if function(x1) < function(x2):


<ipython-input-37-a126a69b14a7> in function(float)
      1 import math
      2 def function(float):
----> 3   fx = 8*(exp(1-float))+7(log1p(float))


TypeError: 'int' object is not callable

2 个答案:

答案 0 :(得分:1)

更改此

def function(val):
  fx = 8*(math.exp(1-val))+7*(math.log(val)) # added * between 7 and parenthesis
  return fx

此外,对变量使用内置名称也是一种不好的做法,因此float已更改

编辑: 根据@tobiask的评论,您将需要exp才能像math.exp一样被调用,而log将需要math.log的调用,除非在其他地方定义了log1p

答案 1 :(得分:0)

表达式第二部分中的7后面缺少*。因此python理解您正在尝试像调用int 7一样调用print("hello")(例如,实际上是8*(exp(1-float))+7*(log1p(float))的函数)。

应为fill

希望有帮助!