2017-03-27 38 views
1

對於問答題必須使用嵌套列表來查找每行的總和,而無需使用內置的總和()和列表的列表行的,不使用內置的總和()

我的代碼(1)

def row_sums(square): 
    """ Takes a nested list and returns the sum of the row""" 
    row_1 = square[0] 
    for sum_1 in row_1: 
     for sum_r_1 in sum_1: 
      sum_row_1 = 0 
      sum_r_1 += sum_row_1 
      return sum_r_1 

的問題,這是我得到的int對象不是可迭代

我的代碼(2)

def row_sums(square): 
    """ Takes a nested list and returns the sum of the row""" 
    row_1 = square[0] 
    for sum_1 in row_1: 
      sum_r_1 = 0 
      sum_r_1 += sum_1 
      return sum_r_1 

我只得到第1行中列表的第一項在這種情況下是2號

從測驗服務器

square = [ 
    [2, 7, 6], 
    [9, 5, 1], 
    [4, 3, 8] 
] 
print(row_sums(square)) 

預期的結果 [15,15輸入,15

我知道我在試圖讓大氣壓只有第一排,但一旦我有我可以輕鬆地做其他行

+1

我可能會寫一些愚蠢像'高清totally_not_the_built_in_sum(項目)寫法:return eval( '+' 加入(STR(它),它在項目))' –

回答

1

找你e極接近:

def row_sums(square): 
    sums = [] 
    for row in square: 
     rowsum = 0 
     for num in row: 
      rowsum += num 
     sums.append(rowsum) 
    return sums 
+0

我沒想到它更改爲 的x = [] 現在我覺得啞巴 –

1

您的代碼不工作是因爲

for sum_1 in row_1: 
    sum_r_1 = 0 
    sum_r_1 += sum_1 
    return sum_r_1 

每次你去到一個新的號碼設置sum_r_10,然後return它......如此這般通過第一個數字添加它,然後立即返回它而不查看任何其他數字。

相反,你要設置的起始值和返回循環:

sum_r = 0 
for sum_1 in row: 
    sum_r += sum_1 
return sum_r 

這將讓你在第一行。我會建議再次嘗試,而不是從SO中獲得完整的解決方案。

1

這裏有一個簡單的方法,它遍歷列表列表,將內部列表元素添加到一起並將它們附加到另一個列表中。

square =[ 
    [2,2,2], 
    [1,1,1], 
    [3,3,3] 
] 
sumLine=[] 

for i in range(len(square)): 
    s =0 
    for n in square[i]: 

     s = s + n 


    sumLine.append(s) 
    #results in [6, 3, 9]