m0_54997056 2022-04-12 22:46 采纳率: 81.8%
浏览 61
已结题

请教怎么用python选取列表里的同一元素算平均数

学生成绩表

Student_list = ['John, Jam, 2345, ITEC 1401: 65, BIT 2008: 72, BIT 1000: 79', 'Emma, Hu, 4321, ITEC 1401: 88, BIT 2008: 80, BIT 1000: 82', 'Kamil, Pavlowski, 4114, ITEC 1401: 92, BIT 2008: 90, BIT 1000: 95', 'Mike, Orr, 5432, ITEC 1401: 92, BIT 2008: 89, BIT 1000: 96' ]

当我输入
平均成绩 = calculate_class_ave(student_list, ‘ITEC 1401’) 84.5

怎么可以把每个ITEC1401后的数字加起来算平均数?
当我输入2345(第一个学生的学号)算出该学生的平均成绩
平均成绩=calculate_student_ave(student_list, 5432) 92.3

  • 写回答

1条回答 默认 最新

  • 溪风沐雪 2022-04-13 00:05
    关注

    基本思路就是定义两个函数,分别计算班级平均和学生平均分,因为成绩表格式并不是太合理,所以应该考虑先整理成绩表,整理成字典格式处理起来会直观很多,尤其是数据量比较大的时候,当然基于当前数据,也可以直接计算,我给一种直接计算的方案:

    def calculate_class_ave(stu_list, courceName):
        total = 0
        for stu_info in stu_list:
            stu_info_arr = [s.replace(' ','') for s in stu_info.split(",")]
            for info in stu_info_arr:
                if courceName.replace(' ','') in info:
                    total += int(info.split(":")[1])
        print(f"课程{courceName}的班级平均成绩是:{total/len(stu_list)}")
        return total/len(stu_list)
    
    def calculate_student_ave(stu_list, stu_no):
        total = 0
        for stu_info in stu_list:
            if stu_no in stu_info:
                stu_info_arr = [s.replace(' ','') for s in stu_info.split(",")]
                total = int(stu_info_arr[3].split(":")[1])+int(stu_info_arr[4].split(":")[1])+int(stu_info_arr[5].split(":")[1])
                break
        print(f"学生{stu_no}的平均成绩是{total/3}")
        return total/3
    
    
    Student_list = ['John, Jam, 2345, ITEC 1401: 65, BIT 2008: 72, BIT 1000: 79', 'Emma, Hu, 4321, ITEC 1401: 88, BIT 2008: 80, BIT 1000: 82', 'Kamil, Pavlowski, 4114, ITEC 1401: 92, BIT 2008: 90, BIT 1000: 95', 'Mike, Orr, 5432, ITEC 1401: 92, BIT 2008: 89, BIT 1000: 96' ]
    class_ave = calculate_class_ave(Student_list, 'ITEC 1401')
    student_ave = calculate_student_ave(Student_list, '5432')
    
    

    img


    如有帮助,请采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月12日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备