Python使用while循环计算列表负数总和输出为0问题求助
负数求和代码问题排查
错误原因
- 你编写的while循环设置了并联判断条件,必须同时满足
i < len(given_list3)和given_list3[i] < 0才会执行循环体 - 给定列表的首个元素是正整数7,第一次判断时
given_list3[i] < 0就不成立,循环直接终止,累加变量total7始终为初始值0 - 核心逻辑偏差:你需要的是「遍历全列表,仅累加符合负数要求的元素」,但原代码逻辑是「遍历到第一个非负数就直接停止所有操作」
修复代码
方案1:保留while循环,调整判断逻辑
将负数判断移到循环体内部,保证遍历覆盖所有元素:
given_list3 = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7] total7 = 0 i = 0 while i < len(given_list3): # 仅当元素为负数时执行累加 if given_list3[i] < 0: total7 += given_list3[i] i += 1 print(total7)
运行输出结果为:-17
方案2:简化写法,使用Python内置sum函数
通过生成器表达式过滤负数后直接求和,代码更简洁易读:
given_list3 = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7] total7 = sum(num for num in given_list3 if num < 0) print(total7)
运行输出结果同样为:-17
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

