2014-02-13 119 views
1

我有一个从1到5的范围。 该范围内的每个数字被平方。获取范围内所有数字的总和

for x in range(1, 5 + 1): 
    x = x ** 2 
    print(x) 

这样做,给了我: 1,4,9,16,25

,是完美的,但我怎么然后申请新的数字之和的范围,让他们等于55?

+2

数学来救援! http://en.wikipedia.org/wiki/Square_pyramidal_number – M4rtini

+0

谢谢! 我有它,我犯了2个错误,我使用sum作为变量,我有一个错字。 – Sinfamy

+0

@Sinfamy你甚至不需要迭代。有一个公式可以找到答案。请检查我的答案。 – thefourtheye

回答

6

累积的总和:

>>> total = 0 
>>> for x in range(1, 5+1): 
...  total += x ** 2 
... 
>>> total 
55 

更优选地,使用sumgenerator expression

>>> sum(x**2 for x in range(1, 5+1)) 
55 
1
total = 0 
for x in range(1, 5 + 1): 
    x = x ** 2 
    total = total + x 
    print(x) 
print total 

以上应该可以帮助你。当你计算X到另一个变量中时,你想要存储总和。然后,您可以在程序中进一步使用总和。

+0

啊,好点。对不起,我很久没有用过python了。 (回应关于不使用sum作为变量名称的评论,因为它隐藏了名为sum的函数) – TheOneWhoPrograms

1

一号线:

sum(x**2 for x in xrange(1,6)) 
+2

'[]'没有必要,没有它们,它是一个生成器表达式,它的工作方式同样出色。 – RemcoGerlich

4

替代square pyramidal number solution(由M4rtini建议):

(2*(5**3) + 3*(5**2) + 5)/6 

或一般N:

def square_pyramid(x): 
    return (2*(x**3) + 3*(x**2) + x)/6 
+1

您不需要围绕指数的括号。 – Tim

+2

@Tim - 当然这是真的,我发现它更具可读性,另外我发现自由使用括号而不是依赖于运算符优先级可以防止一些棘手的错误。 – WeaselFox

相关问题