我无法对嵌套循环的数字求和。TypeError:“float”对象不能解释为整数 [closed]

I can't sum the numbers of a nested loop. TypeError: 'float' object cannot be interpreted as an integer [closed]

提问人:Drankenkin 提问时间:10/30/2023 最后编辑:Drankenkin 更新时间:10/30/2023 访问量:106

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

25天前关闭。

社区在 25 天前审查了是否重新讨论这个问题,并将其关闭:

原始关闭原因未解决

我想对所有元素求和并得到结果,但我得到错误:item18

TypeError: 'float' object cannot be interpreted as an integer

问题是我无法将values_subtraction_average值相加:5.0、0.0、-4.0、4.0、-2.0、-2.0、-1.0。所以我认为问题出在第二个循环上。

enter image description here

目标是使用第一个循环从平均值中减去每个单独的值,得到 5.0、0.0、-4.0、4.0、-2.0、-2.0、-1.0。接下来,在第二个循环中,我想将values_subtraction_average的所有结果相加并得到结果。我该如何解决问题?我需要哪一行代码?18

法典:

values = [29, 24, 20, 28, 22, 22, 23]
average = sum(values) / len(values)

for single_value in values:
    values_subtraction_average = single_value - average
    # >>> 5.0, 0.0, -4.0, 4.0, -2.0, -2.0, -1.0.

    for item in range(values_subtraction_average):
        x = sum(float(item))
python-3.x 循环 for 循环

评论

0赞 mkrieger1 10/30/2023
sum(float(item))没有意义。一个数字的总和是多少?
0赞 Drankenkin 10/30/2023
@mkrieger1我认为错误就在这里。我只想得到别的东西。我想把所有values_subtraction_average相加,分别是5.0、0.0、-4.0、4.0、-2.0、-2.0、-1.0。结果是 18:我想在第二个循环中得到 18
0赞 XMehdi01 10/30/2023
@Nonsaprei结果是 0 而不是 18 ?
0赞 Drankenkin 10/30/2023
@mkrieger1 我已经更新了问题,添加了上传到 StackOverflow 的安全图像的链接(我是新手,无法直接添加图像)。在图片中,您可以看到我如何以及为什么得到 18 岁。
1赞 mkrieger1 10/30/2023
啊,你应该把差值的绝对值相加。

答:

1赞 XMehdi01 10/30/2023 #1

你能显示变量存储totalabs(values_subtraction_average)

values = [29, 24, 20, 28, 22, 22, 23]
average = sum(values) / len(values)
total = 0
for single_value in values:
    values_subtraction_average = single_value - average
    total += abs(values_subtraction_average)
print(total)  
#18

评论

1赞 EJoshuaS - Stand with Ukraine 10/30/2023
这并不能提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论。 - 来自评论
0赞 XMehdi01 10/31/2023
@EJoshuaS-StandwithUkraine 也许你不明白需要什么
1赞 Andrej Kesely 10/30/2023 #2

尝试:

values = [29, 24, 20, 28, 22, 22, 23]

x = sum(values) / len(values)
y = sum(abs(v - x) for v in values)
print(y)

print(y / len(values))

指纹:

18.0
2.5714285714285716

评论

0赞 Drankenkin 10/30/2023
直到现在我才意识到,使用您的代码,我得到了一个关于行 x = sum(values) / len(values) 的错误。错误是 TypeError:“numpy.float64”对象不可调用。我该如何解决?:)
0赞 Andrej Kesely 10/30/2023
@Nonsaprei 您可能已经分配给 or 变量(不要使用与 python 内置变量相同的变量名称)sumlen
2赞 CoolDuck 10/30/2023 #3

如果要从平均值获得值的差值之和,可以遍历值并计算差值,然后将此差值添加到单独的总变量中,如下所示:

values = [29, 24, 20, 28, 22, 22, 23]
average = sum(values) / len(values)

total = 0

for single_value in values:
    values_subtraction_average = single_value - average
    # >>> 5.0, 0.0, -4.0, 4.0, -2.0, -2.0, -1.0.
    total += abs(values_subtraction_average)