我正在用Python编写一个程序来计算从1-100开始的数字平方和。 我试过用这个
total = sum(int [(el**2) for el in range(1, 101)])
我收到一条错误,指出语法不正确。
答案 0 :(得分:4)
您不需要括号或对int
的调用:
>>> sum([el**2 for el in range(1, 101)])
338350
您甚至不需要括号:
>>> sum(el**2 for el in range(1, 101))
338350
你也可以use math:
def sum_of_squares(n):
return (n * (n + 1) * ((2 * n) + 1))/6
>>> sum_of_squares(100)
338350
答案 1 :(得分:1)
这有效:
sum([int(el**2) for el in range(1, 101)])
请注意int()
[...]
列表理解。
或更简单:
sum(int(el**2) for el in range(1, 101))
因为您无需为sum()
创建完整列表。
更好的是,完全放弃int()
调用,整数的指数仍然是整数:
sum(el ** 2 for el in range(1, 101))
演示:
>>> sum(el ** 2 for el in range(1, 101))
338350
答案 2 :(得分:1)
错误说明 - 在整个列表中设置了int转换,列表无法转换为int。在这种情况下不需要转换,因为所有变量都是整数,但如果您确实想要使用它。在总和或每个部分使用它(int(el ** 2))
答案 3 :(得分:0)
删除int
:
total = sum([(el**2) for el in range(1, 101)])
答案 4 :(得分:0)
所有答案都很棒。正如旁注:
def sum_of_squares(end):
return end * (end+1) * (2*end + 1) / 6
total = sum_of_squares(100)
该公式是更为一般的Faulhaber公式的特例: