2014-02-13 52 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

相關問題