Wzero_ 2022-05-06 11:43 采纳率: 100%
浏览 59
已结题

python 写入文件 记录同一个学生

文件处理 • 将学生的名字和每次的分数一次存到一个txt文件里,存储格式为:每行一个记录,以逗号进行分割,如:
yh,100
yh,99
zmy,100
yh,96
zmy,100
读取该文件,记录同一个学生的所有分数和提交次数,计算学生的平均分数,并将其姓名,总分数,提交次数,平均分数保存到另一个txt中。

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-05-06 12:23
    关注
    with open('a.txt', 'r', encoding='utf-8') as f:
        p = f.readlines()
    
    stu_dict = {}
    for i in [x.split(",") for x in p]:
        if stu_dict.get(i[0]):
            stu_dict[i[0]]['总分'] += eval(i[1])
            stu_dict[i[0]]['提交次数'] += 1
            stu_dict[i[0]]['平均分'] = round(stu_dict[i[0]]['总分'] / stu_dict[i[0]]['提交次数'], 2)
        else:
            stu_dict[i[0]] = {'总分': eval(i[1]), '提交次数':1, '平均分':eval(i[1])}
            
    s=''
    for key, value in stu_dict.items():
        s += f'姓名:{key}\n'
        for key2, value2 in value.items():
            s += f'{key2}:{value2}\n'
    
    with open('b.txt', 'w', encoding='utf-8') as f:
        f.write(s)
    

    显示结果:

    姓名:yh
    总分:295
    提交次数:3
    平均分:98.33
    姓名:zmy
    总分:200
    提交次数:2
    平均分:100.0
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月14日
  • 已采纳回答 5月6日
  • 创建了问题 5月6日

悬赏问题

  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义
  • ¥15 嵌入式--定时器使用
  • ¥20 51单片机学习中的问题