2401_85168048 2024-05-23 21:15 采纳率: 0%
浏览 7

我现在有一个txt文件的成绩表,如何运用Python求成绩表的各科成绩的平均值

下图为txt文件表

img


求Python代码,算出各科平均值。
要求1、原始数据输入和结果输出要求使用TXT文件存放(原始数据见附录)
2、计算每个学生六门功课的平均分,并按平均分排列名次,若平均分相同则名次并列;结果
在屏幕上显示再写入TXT文件。

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2024-05-23 21:15
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【您想要解决的问题】: 您想要解决的问题是如何使用Python编写代码,从一个TXT文件中读取成绩数据,计算每个学生的六门课程的平均分,并根据平均分对学生进行排序。如果平均分相同,则名次并列。最终,您希望在屏幕上显示结果,并将结果写入另一个TXT文件。

    【图片内容】: 图片中包含了一个成绩表,表中列出了学生的学号、姓名以及六门课程(数学、英语、物理、政治、未知科目1、未知科目2)的成绩。成绩表以表格形式展示,每行代表一个学生的成绩记录。

    【问题出现原因】: 这个问题出现的原因是您需要自动化处理成绩数据,手动计算平均分和排序既耗时又容易出错。使用Python可以高效地完成这项任务,特别是当数据量较大时。

    【问题解决方案】: 为了解决这个问题,我会提供一个Python脚本示例,该脚本将执行以下步骤:

    1. 读取包含成绩数据的TXT文件。
    2. 解析数据并计算每个学生的平均分。
    3. 根据平均分对学生进行排序。
    4. 在屏幕上显示排序后的结果。
    5. 将结果显示写入一个新的TXT文件。

    【提供代码】:

    import re
    
    # 读取原始数据文件
    def read_scores(file_path):
        with open(file_path, 'r', encoding='utf-8') as file:
            lines = file.readlines()
        scores = []
        for line in lines[3:]:  # 假设前两行是标题,从第三行开始是数据
            parts = re.split(r'\s{2,}', line.strip())
            student_id, name = parts[0], parts[1]
            scores_list = list(map(int, parts[2:8]))  # 假设成绩从第三列开始,共六门课程
            scores.append({'id': student_id, 'name': name, 'scores': scores_list})
        return scores
    
    # 计算平均分并排序
    def calculate_average_and_sort(scores):
        for student in scores:
            student['average'] = sum(student['scores']) / len(student['scores'])
        sorted_scores = sorted(scores, key=lambda x: x['average'], reverse=True)
        return sorted_scores
    
    # 写入结果到TXT文件
    def write_results_to_file(sorted_scores, output_file):
        with open(output_file, 'w', encoding='utf-8') as file:
            file.write('学号\t姓名\t平均分\n')
            for student in sorted_scores:
                file.write(f"{student['id']}\t{student['name']}\t{student['average']}\n")
    
    # 主程序
    def main():
        input_file = '原始数据.txt'  # 假设原始数据文件名为原始数据.txt
        output_file = '结果.txt'  # 结果将写入到结果.txt
        scores = read_scores(input_file)
        sorted_scores = calculate_average_and_sort(scores)
        write_results_to_file(sorted_scores, output_file)
        for student in sorted_scores:
            print(f"{student['id']}\t{student['name']}\t{student['average']}")
    
    if __name__ == "__main__":
        main()
    

    【代码运行方式】:

    1. 确保您的Python环境已安装。
    2. 将上述代码保存为.py文件。
    3. 将原始数据保存为名为原始数据.txt的TXT文件,确保其格式与图片中的数据格式一致。
    4. 在命令行中运行Python脚本。

    【代码预期运行结果】:

    学号    姓名    平均分
    2022000515    朱杭玉    92.5
    2022000486    陈煜哈    89.33
    ...
    

    【推荐相关链接】:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月23日