语法Sum + = 1无效

时间:2018-03-19 17:59:55

标签: python list int

它说Sum += 1语法无效。如果我的代码不正确,那么计算列表中有多少偶数的更好的方法是什么?

def countEvens(listOfInts):
    '''
    - Returns an integer value representing the number of even numbers that
    exist in listOfInts.
    - Return 0 if listOfInts is not a list type or if no even number exists
    in listOfInts.
    - Note: elements in listOfInts can contain any data type.
    '''
    Sum = 0
    for x in listOfInts:
        if x % 2 == 0:
            return Sum += 1
    if type(listOfInts) != list:
        return 0

2 个答案:

答案 0 :(得分:2)

在Python中,您无法return分配。 Sum += 1是一项任务,它会将Sum + 1分配给Sum

实际上return不仅仅是一个SyntaxError,它也是错误的(在逻辑意义上),所以只需删除它:

Sum = 0
for x in listOfInts:
    if x % 2 == 0:
        Sum += 1
return Sum

或者,您可以将sum与生成器一起使用:

return sum(1 for value in listOfInts if value % 2 == 0)

答案 1 :(得分:0)

语法错误来自此行,正如您所说

return Sum += 1

因为(Sum + = 1)不是从函数返回的有效值。这是一个单独的陈述

让代码尽可能接近,试试这个

Sum += 1
return Sum

或者更简单地说

return Sum+1

关于更加pythonic的方法

def countEvens(listOfInts):
    return sum( x % 2 == 0 for x in listOfInts )

完成整个事情