为什么我的Python代码无法计算列表中所有负数的和?
代码问题排查及修正
存在的3个核心问题
- 循环条件逻辑错误:while语句将「索引边界判断」和「元素是否为负的判断」用
and关联,只要任一条件不成立就会终止循环。你提供的列表第一个元素是7>0,given_list3[i] <=0直接不成立,循环全程没有执行,total7始终保持初始值0,最终输出0。 - 变量名拼写错误:你定义的列表变量名为
given_list3,但循环累加时写的是givenlist3,缺少下划线,实际运行会直接触发NameError报错。 - 索引边界错误:Python列表索引从0开始,有效索引范围是
0 ~ len(列表名)-1,你写的i <= len(given_list3)会在i等于列表长度时出现索引越界,触发IndexError。
修正后的代码
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)
更简洁的Python原生写法
given_list3 = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7] total7 = sum(x for x in given_list3 if x < 0) print(total7)
两种写法运行后都能输出预期结果-17。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

