0
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 上观看 corey shaffer,他编写了一个与此类似的程序。我开始玩它,现在我被卡住了。

我希望打印出打印语句,arg_list(i)并让我通过def square(x)并将该答案存储在结果中

4

3 回答 3

3

这是对您的功能的修复square(您缺少*操作员)

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

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

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

在这种情况下,这里还有一个错误修复:

def square(x):
   return x**2
于 2019-11-22T18:05:33.747 回答
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(x, 2)使用pow内置

def square(x):
    int(x)
    return x**2
于 2019-11-22T18:05:31.623 回答
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]
于 2019-11-22T18:47:08.490 回答