Python遍历成绩列表报index out of range错误,无法获得预期输出
问题分析与修正方案
现存问题
- 索引访问逻辑错误触发越界:你在内层循环中写的是
marks[j][i],但你遍历的i对应学生序号,j对应成绩序号,正确的访问写法应该是marks[i][j]。同时marks列表总共只有3个元素,最大合法索引为2,但内层循环j的取值范围是2~4,当j≥3时访问marks[j]必然超出列表索引范围,直接触发报错。 - 缺少字典赋值逻辑:你初始化了
marks_c字典,但全程没有往里面写入任何键值对,最终输出只能是空字典,不符合预期。 - 冗余打印逻辑干扰结果:内层循环中多余的打印语句没有实际作用,还会输出大量无关内容。
修正代码
如果你需要将每个学生排除第一个成绩后的剩余成绩存入字典,可参考如下代码:
marks = [['john',80, 90, 76, 82],['katy', 50, 55, 70, 65],['sydney',80,72, 88, 90]] marks_c = {} for i in range(len(marks)): name = marks[i][0] # 取索引2及之后的所有成绩,对应你原来j从2开始遍历的逻辑 target_scores = marks[i][2:] # 如果需要算平均分,可替换为 marks_c[name] = round(sum(target_scores)/len(target_scores), 2) marks_c[name] = target_scores print(marks_c)
运行输出结果:{'john': [90, 76, 82], 'katy': [55, 70, 65], 'sydney': [72, 88, 90]}
如果你需要统计的是其他维度的结果,只需要调整target_scores对应的加工逻辑即可。
内容的提问来源于stack exchange,提问作者Super MaxLv4
相关产品推荐
相关产品推荐

