Python .count()计数失效问题:统计列表中的偶数、奇数与零
问题分析
你的代码里第5行zero = numbers.count(0)不生效的核心原因是:input().split()返回的是字符串列表——比如输入0 2 3,numbers实际是["0", "2", "3"],而你用count(0)查找的是整数0,自然匹配不到任何元素,导致zero始终为0,后续第15行even = even - zero也等于没执行。
修复方案
有两种简洁的修复方式:
方式一:直接统计字符串"0"的数量
修改第5行代码,把查找的目标改成字符串类型的"0":
zero = numbers.count("0")
这样就能正确统计输入中的零的数量,后续even = even - zero也能正常减去零的个数,得到真正的非零偶数统计结果。
方式二:先将所有元素转为整数
先把整个输入列表转换成整数类型,后续的统计和判断都基于整数,逻辑更清晰:
numbers = list(map(int, input("Numbers separated by space:").split())) print("Numbers:" + str(numbers)) zero = numbers.count(0) even = 0 odd = 0 for i in numbers: if i % 2 == 0: even += 1 else: odd += 1 even = even - zero print("Even:" + str(even)) print("Odd:" + str(odd)) print("Zero:" + str(zero))
这种方式从根源上避免了字符串与整数混淆的问题,后续的取余判断和统计操作都更直观。
测试示例
假设输入0 1 2 3 0 4,两种修复方式都会输出:
Numbers:[0, 1, 2, 3, 0, 4] Even:2 Odd:2 Zero:2
这里的Even统计的是2、4两个非零偶数,Odd是1、3两个奇数,Zero是两个0,结果符合预期。
内容的提问来源于stack exchange,提问作者eSabit
相关产品推荐
相关产品推荐

