python问题求解答

img


def sum_of_evens(*n):
if isinstance(n,list) or isinstance(n,tuple) or isinstance(n,set):
for i in n:
if i % 2 == 0:
sum = 0
sum += i
return sum
else:
return False
我这么写错在哪呢

def sum_of_evens(*n):
    if not n:
        return False
    lis = []
    for each in n:
        if isinstance(each, list) or isinstance(each, tuple) or isinstance(each, set):
            lis.extend([*each])
        else:
            lis.append(each)
    return sum(filter(lambda x: x % 2 == 0, lis))

测试结果如下:

img

if的情况考虑少了,sum=0要放在第一个if之前,不然每次都会归0

sum = 0这个要放在for 循环在外,不然每次循环sum都重置为0了