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

Python实现文件成绩处理:计算均值、排序并写入新文件

CSV文件成绩处理与写入解决方案

问题说明

现有文件list1,内容格式为姓氏、名字、成绩1、成绩2,示例数据如下:

DUPOND, John, 12, 10
JAMES, Fil, 8, 10
KYLE, Gregor, 17, 7

需实现Python脚本完成以下操作:

  1. 将list1内容排序后写入新文件list2
  2. 每行添加两门成绩的平均分
  3. 输出格式调整为名字、姓氏、成绩1、成绩2、平均分,正确示例输出如下:
Fil, JAMES, 8, 10, 9
Gregor, KYLE, 17, 7, 12
John, DUPOND, 12, 10, 11

用户提供的测试代码仅能以列表形式输出内容,缺少均值计算与文件写入逻辑,以下是修正后的完整方案。

完整代码实现

import sys
import csv
import statistics

# 读取并处理输入数据
processed_data = []
with open(sys.argv[1], newline='') as input_file:
    # 跳过逗号后的空格,避免字段带多余空白字符
    csv_reader = csv.reader(input_file, skipinitialspace=True)
    for row in csv_reader:
        # 拆分原始字段
        surname, name, score1, score2 = row
        # 转换成绩为整数,确保均值计算准确
        score1_int = int(score1)
        score2_int = int(score2)
        # 计算平均分
        avg_score = statistics.mean([score1_int, score2_int])
        # 按要求重组字段顺序
        formatted_row = [name, surname, score1, score2, str(avg_score)]
        processed_data.append(formatted_row)

# 对处理后的数据排序(默认按名字升序,可按需调整)
processed_data.sort()

# 写入输出文件list2
with open('list2', 'w', newline='') as output_file:
    csv_writer = csv.writer(output_file)
    csv_writer.writerows(processed_data)

关键细节说明

  • 模块补充:导入statistics模块用于均值计算,原代码遗漏此步骤
  • CSV读取优化:skipinitialspace=True参数自动忽略逗号后的空格,避免字段包含多余空白
  • 数据转换:将成绩字符串转为整数,避免字符串类型导致的计算错误
  • 格式调整:重新排列字段顺序为「名字、姓氏、成绩1、成绩2、平均分」
  • 排序逻辑:默认按名字升序排序,若需按其他维度排序,可修改sort()的key参数,例如按平均分降序:
    processed_data.sort(key=lambda x: float(x[4]), reverse=True)
    
  • 文件写入:使用csv.writer批量写入处理后的所有行,保证输出格式符合CSV规范

原测试代码的问题

  1. 未导入statistics模块,调用statistics.mean()会触发NameError
  2. 未定义xs变量,无有效数据传入均值计算函数
  3. 存在缩进错误,statistics.mean(xs)的缩进层级不正确
  4. 缺少字段格式调整、排序及结果写入新文件的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:01:05