Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类型错误:';int';对象不可调用-Python函数_Python - Fatal编程技术网

类型错误:';int';对象不可调用-Python函数

类型错误:';int';对象不可调用-Python函数,python,Python,我想写一个Python函数,它尽可能高效,插入整数后,会发现所有数对相加并除以2等于所有数的平均值 我的错误很不幸 TypeError:“int”对象不可调用 def avg(arr): avg = sum(arr) / len(arr) solution = [] for i in range(0, len(arr)): for j in range(i + 1, len(arr)): if ((arr[i] + arr[j

我想写一个Python函数,它尽可能高效,插入整数后,会发现所有数对相加并除以2等于所有数的平均值

我的错误很不幸 TypeError:“int”对象不可调用

def avg(arr): 
    avg = sum(arr) / len(arr)
    solution = []
    for i in range(0, len(arr)): 
        for j in range(i + 1, len(arr)): 
            if ((arr[i] + arr[j]) / 2 == avg): 
                solution.extend([arr[i], arr[j]]) 
    return solution
从文档中:

list.sort(key=None,reverse=False)
对列表中的项目进行适当排序(参数可用于排序自定义,请参阅sorted()以了解其解释)

这意味着a.sort()对数组进行适当排序,因此它不会返回任何内容,因此执行
a=a.sort()
assigns
a=None

In [11]: a = [1,3,5,6,2]                                                                                                                                                          

In [12]: a.sort()                                                                                                                                                                 

In [13]: a                                                                                                                                                                        
Out[13]: [1, 2, 3, 5, 6]
代码中还有一些问题

  • 您正在计算
    avg_sum
    中的平均值,然后使用
    average
    稍后,请确保在两个位置都使用
    avg_sum

  • solution.append(arr[i],arr[i+1])
    是一个语法错误。我假设您希望将这些元素添加到列表的末尾,在这种情况下,请使用
    list.extend
    ,它将两个元素都附加到列表的末尾

  • 您正在迭代列表中的元素,但将它们作为索引,这是不正确的,您需要使用
    for i in range(len(arr)-1):

因此,更新后的代码如下所示

def avg(arr):

    #Do in-place sort
    arr.sort()

    avg_sum = sum(arr) / len(arr)
    solution = []

    #Iterate on the indexes till len(arr)-1
    for i in range(len(arr)-1):

        #Use correct variable name avg_sum
        if arr[i] + arr[i+1] == avg_sum:

            #Append the two numbers at the end of the list
            solution.extend([arr[i],arr[i+1]])

    return solution

可以按数组中的每个元素进行迭代,但需要按索引进行

def avg(arr):
    arr.sort()
    avg_sum = sum(arr) / len(arr)
    solution = []
    for i in range(len(arr)):
        if arr[i] + arr[i+1] == avg_sum:
            solution.append(arr[i],arr[i+1])
    return solution

另外,您将得到一个索引器异常,因为您在执行arr[i+1]时超出了范围,所以您需要尝试/排除通过其他方式阻止或修改代码
arr=arr.sort()
应该是
arr.sort()
.sort()
已就位。它修改您的数组并返回
None
。这可以通过一些打印语句来解决。。。!你的代码还有其他明显的错误@HuMor!非常感谢你!不幸的是,列表仍然是空的。也许我处理这个问题的方式有点不正确?你能提供一个例子,说明你的列表实际上看起来像@HuMoravg([6,25,29,10,6,5,8,0,20,19])。这里的预期答案是什么@幽默还有,你并不是把所有的对都放在这里,而是把连续的数字放在这里,你需要为此更新你的代码!同样,你也没有像你在问题中提到的那样被二除!我已经尝试修复代码中的语法错误,但是您的终端缺少核心功能!我的方法是寻找连续的对,如果出现一对,应该将其附加到列表中。但是谢谢你,现在我在逻辑上发现了错误。我重新修改了它,但是现在我得到了一个关于平均计算的错误。我把它编辑成了第一篇文章