首页 > 解决方案 > 对函数 Python 中的数字列表求和

问题描述

我有点卡在我的一个作业问题上。有人能指出为什么我的总和返回 7 而不是 22?

def getEven(list):
   
    even = 0
    odd = 0
    sum = 0
    ratio = 0
    
    
    for nmbr in list:
        if nmbr % 2 == 0:
           even+=1 
        
        else:
            odd+=1  
    sum += nmbr 
    ratio = even/odd  

    return even, odd, sum, ratio


list=[1,2,3,4,5,7]

even, odd, sum, ratio = getEven(list)
dict={'even': even, 'odd':odd, 'sum': sum, 'ratio': ratio}

print(dict)

标签: python

解决方案


首先,将任何 Python 变量命名为与内置 Python 函数或对象相同的名称并不是一个好主意。它可能会在您的代码中导致各种问题。所以我建议更改您sum和您的dict变量的名称。

现在回答你的实际问题。问题是表达式

sum += nmbr 

实际上不在您的 for 循环中!小心你的缩进。这是具有正确缩进的代码,您可以看到它将返回 sum 为 22。

def getEven(list):
   
    even = 0
    odd = 0
    sum = 0
    ratio = 0
    
    
    for nmbr in list:
        if nmbr % 2 == 0:
           even+=1 
        else:
            odd+=1  
        sum += nmbr 
    ratio = even/odd  

    return even, odd, sum, ratio


list=[1,2,3,4,5,7]

even, odd, sum, ratio = getEven(list)
dict={'even': even, 'odd':odd, 'sum': sum, 'ratio': ratio}

print(dict) # Prints {'even': 2, 'odd': 4, 'sum': 22, 'ratio': 0}

推荐阅读