如何修复Python代码以正确计算列表中所有偶数的和?
Python偶数求和逻辑错误
原代码(存在问题)
numbers = [1, 2, 3, 4, 5, 6] even_sum = 0 for num in numbers: if num % 2: # 错误的偶数判断条件 even_sum += num print("Sum of even numbers:", even_sum)
问题说明
这段代码本意是计算列表中所有偶数的和(预期结果为12,即2+4+6),但实际输出的是奇数的和9,核心问题出在偶数的判断条件上。
错误原因
在Python中,非零整数会被视为布尔值True,0会被视为False:
- 奇数对2取余结果为1(非零,对应
True),会触发if条件执行累加 - 偶数对2取余结果为0(对应
False),无法进入if块,因此被排除在求和范围外
修正方案
只需将判断条件改为验证余数是否为0,有两种常用写法:
写法1:直观判断余数等于0
numbers = [1, 2, 3, 4, 5, 6] even_sum = 0 for num in numbers: if num % 2 == 0: # 正确的偶数判断逻辑:余数为0 even_sum += num print("Sum of even numbers:", even_sum)
写法2:利用布尔取反简化代码
因为偶数取余结果是0(False),取反后为True,可以写成:
if not num % 2:
额外优化(可选)
如果追求代码简洁,可直接用生成器表达式一步完成求和:
numbers = [1, 2, 3, 4, 5, 6] even_sum = sum(num for num in numbers if num % 2 == 0) print("Sum of even numbers:", even_sum)
内容的提问来源于stack exchange,提问作者AKSHAJ THENUA
相关产品推荐
相关产品推荐

