为何代码无法正确对列表正数求和?请求错误排查
问题分析与代码修正
你的代码问题出在对for循环迭代逻辑的误解上,直接导致了求和结果错误,我们来拆解问题并修正:
错误点详解
- 循环变量误用:你写的
for p in given_list3是直接迭代列表中的元素值,而非索引。比如第一次循环时p的值是列表第一个元素5,此时你用given_list3[p]相当于取given_list3[5](也就是-2),完全偏离了“判断当前元素是否为正”的逻辑。 - 多余的
p += 1:Python的for循环会自动推进迭代流程,手动修改循环变量p会打乱迭代顺序,导致部分元素被错误跳过或重复处理。
这两个错误叠加后,你实际求和的元素并非列表里的正数,最终得到了错误的12,而正确的正数和应该是5+4+4+3+1=17。
修正后的代码
直接对迭代的元素进行判断即可,不需要通过索引访问,这是Python列表迭代的常规写法:
given_list3 = [5,4,4,3,1,-2,-3,-5] total5 = 0 for num in given_list3: if num > 0: total5 += num print(total5)
如果一定要用索引方式迭代(不推荐,没必要),可以改用while循环:
given_list3 = [5,4,4,3,1,-2,-3,-5] total5 = 0 p = 0 while p < len(given_list3): if given_list3[p] > 0: total5 += given_list3[p] p += 1 print(total5)
运行以上修正后的代码就能得到正确结果17了。
内容的提问来源于stack exchange,提问作者user13505486
相关产品推荐
相关产品推荐

