Python使用for循环求列表排除null的总和仅返回最后一个值问题排查
代码问题排查与修复方案
错误原因
你的代码存在两处逻辑问题:
- 缩进错误:
a = float(n)被错误放在if not n:的代码块内,且位于continue语句之后。continue会直接终止当前轮次循环进入下一轮遍历,因此这行代码在任何情况下都不会执行。当遍历到非空有效值时,if not n:判断不成立,整个if块都不会运行,你始终没有将当前遍历的n转换为浮点数赋值给a,sum1 += a实际累加的是之前循环遗留的a值,这就是结果仅等于最后一个元素的核心原因。 - 变量未初始化:
sum1使用前需要先赋值为0,否则运行时会抛出变量未定义的报错。
修正后代码
sum1 = 0 for n in ages: if not n: continue a = float(n) sum1 += a
简化写法
你也可以用生成器表达式一行实现相同需求:
sum1 = sum(float(n) for n in ages if n)
内容的提问来源于stack exchange,提问作者sxyxxn
相关产品推荐
相关产品推荐

