2302_80184347 2023-11-03 15:33 采纳率: 100%
浏览 8
已结题

怎样计算班级平均gpa并存储在一个变量里,怎样找出第一名和最后一名

img

img


1.怎样算出班级平均gpa并存入一个变量
2.怎样对列表排序并找出第一名和最后一名,并将第一名和最后一名的学号姓名学分绩存储在元组中

  • 写回答

2条回答

  • 梦幻精灵_cq 2023-11-03 16:07
    关注
    • 平均学分计算不都写好代码了嘛😋
      至于最后的那个pass,可以用字典解析式解析出全班学生学分,排序后就自然出来了前后名次。据学分查出首末排名,按格式输出就好。

      img


      您最后那个pass,给您补好了。GPA保留的两位小数。由于您代码没放代码片中,我照图手打,成绩不全,我的输出与您预期有异。

    Python代码

    #!/sur/bin/nve python
    # coding: utf-8
    
    
    class_score = [
                    {'学号': '20190001','姓名': '刘一', '20春成绩':((6, 78), (3, 90), (3, 75), (2, 76), (2, 83), (4, 78), (1, 82), (2, 59), (1, 99))}, 
                    {'学号': '20190002', '姓名': '陈二', '20春成绩': ((6,53), (3, 63), (3, 75), (2, 47), (2, 44), (4, 41), (1, 73), (2, 47), (1, 71))}, 
                    {'学号': '20190003', ' 姓名': '张三', '20春成绩': ((6, 92), (3, 90), (3, 74), (2, 60), (2, 91), (4,85), (1,91), (2, 70), (1, 76))}, 
                    {'学号': '20190004', '姓名': '李四', '20春成绩': ((6, 96), (3, 83), (3, 72), (2, 69), (2,91), (4, 84), (1, 90), (2, 84), (1, 86))},  
                    {'学号': '20190005', '姓名': '王五', '20春成绩': ((6, 87), (3, 68), (3, 62), (2, 56), (2, 69), (4, 72), (1, 84), (2, 77), (1, 41))}, 
                    {'学号': '20190006', '姓名': '赵六', '20春成绩':((6, 75), (3,91), (3,75), (2,84), (2, 89), (4,67), (1,89), (2, 65), (1,77))}, 
                    {'学导': '20190007', '姓名': '孙七', '20春成绩':((6, 57), (3, 61), (3,61), (2,57), (2, 82), (4, 46), (1, 85), (2, 50), (1, 77))}, 
                    {'学号': '20190008', '姓名': '周八', '20春成绩': ((6, 72), (3, 85), (3, 70), (2, 61), (2, 91), (4, 75), (1, 82), (2, 76), (1, 83))}, 
                    {'学号': '20190009', '姓名': '吴九', '20春成绩':((6, 76), (3, 81), (3, 54), (2, 38), (2,91), (4, 72), (1,87), (2, 83), (1, 63))}, 
                    {'学号': '20190010', '姓名': '郑十', '20春成绩': ((6, 74), (3, 73), (3, 73), (2, 79), (2, 82), (4, 70), (1, 85), (2, 86), (1, 71))}
                        ]
    
    
    #根据公式计算每个学生的GPA,为每个学生字典添加GPA键值 对;
    for student in class_score:
        scores = student['20春成绩']
    
        GPA = xf = 0
        for item in scores:
            xf += item[0]
            ascore = 0
    
            if item[1] >= 60:
                ascore = item[1]/10-5
           
            GPA += ascore*item[0]
        
        gpa = GPA/xf
        student['GPA'] = gpa
    
    #print(class_score) #调试用语句。
    
    
    #计算班级平均GPA学分绩,将学分绩存储在-一个变量中;
    '''Classgpa=0
    for i in class_score:
        Classgpa += i['GPA']
        Classgpa = Classgpa/10'''
    Classgpa = sum([i['GPA'] for i in class_score])/10 # 可以用复合语句改写前面的for循环。
    
    #对成绩列表进行排序,找出第一名和最后一名,将学号、姓名、学分绩存储在元组中;
    class_score.sort(key=lambda X: X['GPA'], reverse=True)
    first, tail = class_score[0], class_score[-1]
    first, tail = (first['学号'],  first['姓名'], f"{first['GPA']:.2f}"), (tail['学号'],  tail['姓名'], f"{tail['GPA']:.2f}") # 第一名和最末一名元组。格式化2位小数保存学分绩,方便后面打印输出。
    
    #输出班级平均学分绩,输出第一名和最后一名的学号、姓名、学分绩GPA
    print(f"\n班级平均学分绩:{Classgpa:.2f}\n\n第一名:{','.join(first)}\n最末一名:{','.join(tail)}\n")
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月16日
  • 已采纳回答 11月9日
  • 创建了问题 11月3日