请你解释一下,它为什么不能正常工作?
print([sum(a)**2 for a in range(100)] - [sum(a*a) for a in range(100)])我在努力解决

一条龙
Traceback (most recent call last):
File "C:/Users/1/PycharmProjects/Python_DevOps/hw/hw9.py", line 15
print([sum(a)**2 for a in range(1,100)] - [sum(a*a) for a in range(1,100)])
File "C:/Users/1/PycharmProjects/Python_DevOps/hw/hw9.py", line 15, in <listcomp>
print([sum(a)**2 for a in range(1,100)] - [sum(a*a) for a in range(1,100)])
TypeError: 'int' object is not iterable发布于 2021-08-22 09:38:54
当您编写sum(a)和sum(a*a)时,它们都不和多个值,您需要将列表理解中构建的所有值加在一起。
sum([a ** 2 for a in range(100)])然后是a**2 == a*a,所以您的实际值是0,第一个参数是和的平方,您可以直接将range传递给sum,因为它需要一个可迭代的
i = 11
print(sum(range(1, i)) ** 2 - sum(a ** 2 for a in range(1, i))) # 2640发布于 2021-08-22 09:39:02
您的问题是,在python中,sum接收一个可项目的(在本例中是一个列表),而不是一个整数,因此您应该简单地在和的括号中添加理解。
像这样的:
>>> print(sum(a**2 for a in range(100)) - sum(a*a for a in range(100)))输出:
0发布于 2021-08-22 09:41:26
根据文档的说法:
和、开始和可从左到右迭代的项,并返回总计。
因此,当您执行sum(a)时,a是一个由range()函数生成的整数。由于整数不可迭代,因此会引发类型错误。
而且,a**2等于a*a,所以输出为零。根据这个问题的答案是:
print(sum(a for a in range(1,11))**2 - sum(a**2 for a in range(1,11))) https://stackoverflow.com/questions/68880040
复制相似问题