Python循环输出重复且平均值异常的问题排查与修复
问题原因
- 重复输出:打印语句放在了内层遍历成绩的循环里,每个学生对应2个成绩,内层循环会执行2次,所以每个学生的信息会被重复打印2次。
- 平均值计算错误:平均值的计算逻辑同样放在内层循环中,第一次循环时仅累加了单个成绩,此时除以2得到的是单个成绩的一半,并非两个成绩的真实平均值。
修复方法
把平均值计算和打印代码移到内层循环外部,确保所有成绩累加完成后再执行这两步操作:
修复后的代码:
students = ["erick", "rafael", "marcel", "junior"] grades = [[1,2],[3,4],[5,6],[7,8]] for index in range(len(grades)): summ = 0 for grade in grades[index]: summ += grade # 所有成绩累加完成后计算平均值 average = summ / len(grades[index]) # 用成绩列表的长度代替固定的2,适配不同数量的成绩 print(students[index]) print(average)
优化写法(更简洁)
可以用zip同时遍历学生和对应的成绩列表,再借助内置函数sum()直接求和,代码更简洁易读:
students = ["erick", "rafael", "marcel", "junior"] grades = [[1,2],[3,4],[5,6],[7,8]] for student, grade_list in zip(students, grades): average = sum(grade_list) / len(grade_list) print(student) print(average)
修复后的运行结果
erick 1.5 rafael 3.5 marcel 5.5 junior 7.5
内容的提问来源于stack exchange,提问作者Erick Rocha
相关产品推荐
相关产品推荐

