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

如何不使用pandas读取CSV的姓名成绩并将平均分写入新CSV文件

问题解决方法

完全可以只用Python标准库的csv模块完成需求,你现有代码的问题主要出在迭代器使用、数据暂存、csv写入方法这几个地方,以下是修正后的可运行代码:

import csv
from statistics import mean

# 自行替换为你的输入输出文件实际路径
input_file_name = "grades.csv"
output_file_name = "average_grades.csv"

# 提前声明列表存储所有计算好的结果
result_list = []

with open(input_file_name, encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        # 跳过可能存在的空行
        if not row:
            continue
        name = row[0]
        # 批量将成绩转为整数
        grades = list(map(int, row[1:]))
        # 计算当前学生的平均分
        avg = mean(grades)
        result_list.append([name, avg])

# 批量写入结果到新CSV文件
with open(output_file_name, 'w', newline='', encoding='utf-8') as new_f:
    writer = csv.writer(new_f)
    writer.writerows(result_list)

原有代码的问题说明

  • 导入了多余的from os import name,会覆盖你自定义的姓名字段,直接删除即可
  • csv.reader是一次性迭代器,第一次遍历读取所有行之后就为空了,不能重复遍历,所以需要提前把计算好的结果存到列表里,再统一写入
  • csv.writer的writerow方法接收的是列表类型的参数,不需要手动拼接逗号字符串,直接传[姓名, 平均分]即可
  • 原有平均分计算逻辑放在了成绩遍历循环内部,不需要重复计算,等所有成绩转成整数后计算一次即可

内容的提问来源于stack exchange,提问作者Marzieh-Rhm77

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:06:00