2014-11-22 32 views
1

我試圖找到一種方法來添加一個數字列表,而不使用sum函數。我有點新本,到目前爲止,這是我有:我似乎無法得到此功能來將列表添加在一起

def findSum(nbr_list): 
    total = 0 
    nbr_list = [] 
    for nbr in nbr_list: 
     total = total + nbr 
    print 'Total: ', total 

In [32]: nbr_list = [1,2,3,4,100] 

In [33]: findSum(nbr_list) 
Total: 0 

回答

2

的問題是,你在這條線重新定義nbr_list

nbr_list = [] 

這樣做會導致nbr_list到不再引用您傳入該函數的[1,2,3,4,100]列表,而是參考空列表[]。這意味着for循環將遍歷空列表,並且total將永不增加。因此,打印0是因爲這是total的初始值。

只需刪除該行讓您的功能,做工精細:

>>> def findSum(nbr_list): 
...  total = 0 
...  for nbr in nbr_list: 
...   total += nbr # Same as 'total = total + nbr' 
...  print 'Total: ', total 
... 
>>> nbr_list = [1,2,3,4,100] 
>>> findSum(nbr_list) 
Total: 110 
>>> 

而且,你通常不想讓你的打印功能的值,而不是返回任何東西。更好的方法是讓findSum返回total,然後打印調用函數的結果:

def findSum(nbr_list): 
    total = 0 
    for nbr in nbr_list: 
     total += nbr 
    return total 

nbr_list = [1,2,3,4,100] 
print 'Total: ', findSum(nbr_list)