You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用csv库计算成绩平均值时结果不准确问题求助

成绩平均值计算错误的问题修复

你的代码中平均值不准确的核心原因是:grades列表在循环外部初始化,每次处理新学生时未清空,导致之前学生的成绩被累积,最终计算的是所有已处理学生成绩的总平均值,而非当前学生自己的成绩平均值。

修正方案

将成绩列表的初始化放到遍历学生的循环内部,或者直接用列表推导式生成当前学生的成绩列表,避免成绩累积。

修正后的代码(重置成绩列表)

from collections import OrderedDict
import csv
from statistics import mean

def calculate_averages(input_file_name, output_file_name):
    average = OrderedDict()
    with open(input_file_name, newline='') as csvfile:
        reader = csv.reader(csvfile)
        try:
            for lines in reader:
                name = lines[0]
                grades = []  # 每次处理新学生时重置成绩列表
                for row in lines[1:]:
                    grades.append(int(row))
                grades_mean = mean(grades)
                average[name] = grades_mean
        except csv.Error as e:
            exit(f"file name {input_file_name}, line {reader.line_num} : {e}")
    
    # 将输出文件操作移出try块,避免嵌套过深
    with open(output_file_name, 'w', newline='') as output:
        writer = csv.writer(output)
        for key, values in average.items():
            writer.writerow([key, values])

更简洁的写法(列表推导式)

from collections import OrderedDict
import csv
from statistics import mean

def calculate_averages(input_file_name, output_file_name):
    average = OrderedDict()
    with open(input_file_name, newline='') as csvfile:
        reader = csv.reader(csvfile)
        try:
            for lines in reader:
                name = lines[0]
                # 直接生成当前学生的成绩整数列表,无需额外维护grades变量
                grades = [int(row) for row in lines[1:]]
                grades_mean = mean(grades)
                average[name] = grades_mean
        except csv.Error as e:
            exit(f"file name {input_file_name}, line {reader.line_num} : {e}")
    
    with open(output_file_name, 'w', newline='') as output:
        writer = csv.writer(output)
        for key, values in average.items():
            writer.writerow([key, values])

内容的提问来源于stack exchange,提问作者user23561367

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:25:17