制作程序来计算python中的总和

时间:2014-01-07 08:35:22

标签: python

我正在用Python编写一个程序来计算从1-100开始的数字平方和。 我试过用这个

total = sum(int [(el**2) for el in range(1, 101)])

我收到一条错误,指出语法不正确。

5 个答案:

答案 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公式的特例:

http://en.wikipedia.org/wiki/Faulhaber%27s_formula#Examples