类型错误:';int';对象不可调用-Python函数
我想写一个Python函数,它尽可能高效,插入整数后,会发现所有数对相加并除以2等于所有数的平均值 我的错误很不幸 TypeError:“int”对象不可调用类型错误:';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
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()
assignsa=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])。这里的预期答案是什么@幽默还有,你并不是把所有的对都放在这里,而是把连续的数字放在这里,你需要为此更新你的代码!同样,你也没有像你在问题中提到的那样被二除!我已经尝试修复代码中的语法错误,但是您的终端缺少核心功能!我的方法是寻找连续的对,如果出现一对,应该将其附加到列表中。但是谢谢你,现在我在逻辑上发现了错误。我重新修改了它,但是现在我得到了一个关于平均计算的错误。我把它编辑成了第一篇文章