2015-10-30 181 views
0

我正在嘗試做一個練習問題,它涉及在一個循環中對數字求和。我認爲下面的代碼會起作用,但我的答案是錯誤的。有任何想法嗎??Python 2 - 在列表中總結數字

sortedList = map(int, "283 889 22 352 744 969 40 1248 309 197 1274 630 1040 1161 1040 338 486 295 202 914 778 428 405 483 662 363 1139 968 943 820 481 1217 408 493 268 1143 161 299 1090 461 486 1064 1081".split()) 

sum = 0 
for number in sortedList: 
    sum += sortedList.pop 

print sum 
+1

切換到'而排序列表:'(雖然它*不*排序)或'總和+ = number'或只使用'sum'。 **不要**在「for」循環時更改列表的長度。 – jonrsharpe

回答

0

您的代碼給出了一個錯誤,你忘了功能pop括號:你也可以使用了功能sum

for number in sortedList: 
    sum += sortedList.pop() 

注:

sum(sortedList) 

但因爲你使用變量sum,此功能無法使用。

編輯1:像jonrsharpe評論,你的方法其實是錯誤的!你正在通過for列表,但同時你彈出(即得到和刪除最後一項),這就是爲什麼你的答案是錯誤的:14866而不是28074.

你可以使用sum功能我提到的還是:

s = 0 
for number in sortedList: 
    s += number 

或與流行:

s = 0 
while sortedList: 
    s += sortedList.pop() 
+1

當它嘗試在縮小列表時迭代列表時,它會不會失敗? – jonrsharpe