尝试进行数学运算,无法调用int对象

时间:2019-11-22 18:03:13

标签: python math first-class-functions

def square(x):
    int(x)
    return 2(x * x)

def my_map(func, arg_list):
    result = []
    for i in arg_list:
        result.append(func(i))
    return result

squares = my_map(square, [1,2,3,4,5])

print(squares)

我正在尝试将数字传递给函数,并使其打印结果,我有一个方程def square()的函数,以及一个接收数字和函数的函数

我不断收到此错误:

  

“ TypeError:'int'对象不可调用”

我是编程的新手,正在YouTube上看核心的shaffer,他编写了与此类似的程序。我开始尝试它,现在被卡住了。

我希望print语句打印出arg_list(i)并让我经历def square(x)并将答案存储在结果中

3 个答案:

答案 0 :(得分:3)

这是您的square函数的修复程序(您缺少*运算符)

def square(x):
    int(x)
    return 2*(x * x)

但是,根据您的函数名称,我猜测您希望该函数返回x的平方:

2 --> 4
3 --> 9
4 --> 16

在这种情况下,这也是一个错误修复程序:

def square(x):
   return x**2

答案 1 :(得分:2)

2(x * x)行导致python将整数2视为具有参数x*x的函数,因此错误"TypeError: 'int' object is not callable"

In [16]: x = 1                                                                                                 

In [17]: 2(x*x)                                                                                                
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-17-14e610e542ba> in <module>
----> 1 2(x*x)

TypeError: 'int' object is not callable

要平方一个数字,您需要使用x**2,或者使用内置的pow pow(x, 2)

def square(x):
    int(x)
    return x**2

答案 2 :(得分:0)

问题出在2(x * x)语句上。在Python编程语言中,我们需要在表达式中明确提及所有运算符。例如,该语句应为2*(x*x),并且在使用圆括号时,实际上是在调用函数。

此外,上述程序可以简化为

In [54]: list(map(lambda no: int(no)**2, [1, 2, 3, 4, 5]))
Out[54]: [1, 4, 9, 16, 25]