m0_54997056 2022-04-12 14: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-12 16: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月20日
  • 已采纳回答 4月13日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 python 用Dorc包报错,我的写法和网上教的是一样的但是它显示无效参数,是什么问题
  • ¥15 指定IP电脑的访问设置
  • ¥30 matlab ode45 未发现警告,但是运行出错
  • ¥15 vscode platformio
  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部