我正在用Python編寫一個程序來計算1-100之間數字的平方和。 我試過用這個製作一個程序來計算python中的總和
total = sum(int [(el**2) for el in range(1, 101)])
我收到一個錯誤,指出語法不正確。
我正在用Python編寫一個程序來計算1-100之間數字的平方和。 我試過用這個製作一個程序來計算python中的總和
total = sum(int [(el**2) for el in range(1, 101)])
我收到一個錯誤,指出語法不正確。
錯誤的解釋 - 整型轉換設置整個列表清單上不能被轉換爲int。在這種情況下不需要轉換,因爲所有變量都是整數,但是如果您確實想要使用它。使用它的總和或每個部分的總和(int(el ** 2))
這工作:
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
刪除int
:
total = sum([(el**2) for el in range(1, 101)])
您不需要括號或致電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
*你也可以使用數學*:touché –
所有的答案都很好。正如一個側面說明:
def sum_of_squares(end):
return end * (end+1) * (2*end + 1)/6
total = sum_of_squares(100)
的公式是更普遍的等冪求和的一個特殊情況:
計算應該是'total = sum_of_squares(100)' –
@InbarRose是的,固定的。 – freakish
@falsetru感謝您的回答。 []和()之間的區別是什麼? – vivek27
[el ** 2 for el in range(1,101)]返回一個列表,其中el(el ** 2代表範圍內的el(1,101))返回一個生成器。 – Roshan