2013-10-13 43 views
0

我已經創建了一個函數來查找一個硬編碼二維列表的列總和,所以即時通訊只是試圖打印出硬編碼列總和的值。我基本上添加了列索引並將它們的總和添加到了emptist中。然後我回到那個空的列表。當我嘗試打印空列表的值時,出現錯誤,有幫助嗎?如何調用一個函數來處理列表

#Function that returns column sums for list1 

    def columnsumsfunction(a) : 

     rowsize = len(list1) 
     columnsize = len(list1[0]) 
     csum =[] 
     c = 0 
     while c < columnsize : 
      totalsum = 0 
      r = 0 
      while r < rowsize : 
      mysum = list1[r][c] 
      totalsum = totalsum + mysum 
      r = r + 1 
      c = c + 1 
      csum.append(totalsum) 
     return csum 


    for a in list1 : 
     csum = columnsumsfunction(a) 
     print csum 



#main 
list1 = [[1, 2, 3], 
     [4, 5, 6] ] 

我只是不確定如何調用函數來處理list1。李

我只是試圖在函數調用打印

5 7 9 
+0

1.刪除'list2',如果它與問題無關。 2.你有什麼錯誤? 3.如果輸入是「list1」,預期的輸出是多少? 4.該函數接受一個從未使用過的參數「a」......這是怎麼回事? – kojiro

+0

我得到以下錯誤NameError:name'list1'未定義。當我把我的邏輯代碼部分出來,只是打印填充emptylist「csum」我得到[5,7,9]所以邏輯是正確的,但我不知道如何調用函數來打印這些值 –

+0

您的縮進是不正確:'for'循環不在函數中,這就是爲什麼'list1'不會被定義的原因(除非你粘貼錯誤 –

回答

0

在你的問題中的代碼是一個小故障,但如果你修復和改變的list所有實例a內工作,你會設置:

#Function that returns column sums for list1 

def columnsumsfunction(a) : 
    rowsize = len(a) 
    columnsize = len(a[0]) 
    csum =[] 
    c = 0 
    while c < columnsize : 
     totalsum = 0 
     r = 0 
     while r < rowsize : 
     mysum = a[r][c] 
     totalsum = totalsum + mysum 
     r = r + 1 
     c = c + 1 
     csum.append(totalsum) 
    return csum 

list1 = [[1, 2, 3], 
     [4, 5, 6] ] 

csum = columnsumsfunction(list1) 
print csum 
0
def columnsumsfunction(): 
    index = 0 
    rowsize = len(list1) 
    columnsize = len(list1[0]) 
    csum =[] 
    c = 0 
    while c < columnsize : 
     totalsum = 0 
     r = 0 
     while r < rowsize : 
      mysum = list1[r][c] 
      totalsum = totalsum + mysum 
      r = r + 1 
     c = c + 1 
     csum.append(totalsum) 
    return csum 

#main 
list1 = [[1, 2, 3], 
     [4, 5, 6] ] 

csum = columnsumsfunction() 
print csum 

如果你要打印5 7 9此代碼工作正常。
根本不需要list2。在定義list1之後調用columnsfunction()。
for循環也不是必需的。

相關問題