2014-01-07 63 views
0

我正在用Python編寫一個程序來計算1-100之間數字的平方和。 我試過用這個製作一個程序來計算python中的總和

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

我收到一個錯誤,指出語法不正確。

+0

@falsetru感謝您的回答。 []和()之間的區別是什麼? – vivek27

+0

[el ** 2 for el in range(1,101)]返回一個列表,其中el(el ** 2代表範圍內的el(1,101))返回一個生成器。 – Roshan

回答

1

錯誤的解釋 - 整型轉換設置整個列表清單上不能被轉換爲int。在這種情況下不需要轉換,因爲所有變量都是整數,但是如果您確實想要使用它。使用它的總和或每個部分的總和(int(el ** 2))

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 
0

刪除int

total = sum([(el**2) for el in range(1, 101)]) 
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 
+3

*你也可以使用數學*:touché –

0

所有的答案都很好。正如一個側面說明:

def sum_of_squares(end): 
    return end * (end+1) * (2*end + 1)/6 

total = sum_of_squares(100) 

的公式是更普遍的等冪求和的一個特殊情況:

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

+0

計算應該是'total = sum_of_squares(100)' –

+0

@InbarRose是的,固定的。 – freakish