代码中Sum += 1报语法错误,求统计列表偶数的正确实现方法
搞定统计列表偶数数量的代码问题
嘿,先看看你原代码里的几个明显问题:
- 语法错误:
return Sum += 1完全不合法哦——return后面不能直接跟赋值操作,而且你这逻辑一碰到第一个偶数就直接返回了,根本没法统计所有符合条件的数。 - 漏了输入类型检查:题目要求如果输入不是列表直接返回0,但你没做这个判断,会导致非列表输入直接报错。
- 没处理非整数元素:题目说列表里元素可以是任意类型,你直接对所有元素用
x%2,要是碰到字符串、字典这类元素,直接就抛出异常了。
下面给你两种靠谱的实现方式,完全符合需求:
基础易懂版
def countEvens(listOfInts): ''' - 返回一个整数值,表示listOfInts中存在的偶数数量。 - 若listOfInts不是列表类型或其中无偶数,返回0。 - 注意:listOfInts中的元素可以是任意数据类型。 ''' # 先确认输入是列表,不是的话直接返回0 if not isinstance(listOfInts, list): return 0 count = 0 for item in listOfInts: # 先过滤出整数类型的元素,避免报错 if isinstance(item, int): # 判断是否是偶数,是就计数+1 if item % 2 == 0: count += 1 # 遍历完所有元素后返回总计数 return count
简洁高效版(用生成器表达式)
如果你喜欢更紧凑的代码,这个版本同样健壮,效率也不错:
def countEvens(listOfInts): ''' - 返回一个整数值,表示listOfInts中存在的偶数数量。 - 若listOfInts不是列表类型或其中无偶数,返回0。 - 注意:listOfInts中的元素可以是任意数据类型。 ''' if not isinstance(listOfInts, list): return 0 # 用生成器遍历元素,符合条件就生成1,最后sum求和得到总数 return sum(1 for item in listOfInts if isinstance(item, int) and item % 2 == 0)
为啥这两个版本更靠谱?
- 先做输入类型校验,严格符合题目要求;
- 过滤非整数元素,避免运行时异常;
- 遍历所有元素统计总数,不会中途提前返回;
- 变量名用
count比Sum更贴合语义(毕竟是计数,不是求和)。
内容的提问来源于stack exchange,提问作者jennie saldana
相关产品推荐
相关产品推荐

