计算班级平均分并排序

img

img


请问上面代码怎么写哦,一个Python的题,写函数分析又是元组列表

def scoresort(nx):
    lst = {}
    
    for name, scores in nx.items():
        avg = sum(scores) / len(scores)
        lst[name] = int(avg + 0.5)
    
    res = sorted(lst.items(), key=lambda x: x[1], reverse=True)
    
    return res

stuscor = {'张三':[100, 92, 98], '李四':[70, 20, 100], '王五':[100, 99, 98] }
sorted_scores = scoresort(stuscor)
print(sorted_scores)

遍历字典,然后计算每个学生的平均分,然后排序后返回即可。

补充如下:

参考链接:


成绩排序(python)_python输入成绩并排序输出_dataocean的博客-CSDN博客 查找和排序题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。示例:jack 70peter 96Tom 70smith 67从高到低 成绩peter 96jack 70Tom 70smith 67从低到高smith 67jac..._python输入成绩并排序输出 https://blog.csdn.net/dataocean/article/details/105008271



def scoresort(nx):

    result=[] # 存储结果的列表
    # https://blog.csdn.net/Jarry_cm/article/details/99684387
    # 遍历学生信息字典
    for key,value in nx.items():

        single=[] # 存储单个学生姓名和平均分的列表
        # 遍历每一项字典的值,计算每个学生的平均分,因为输出无小数,这里转为int
        avg=0
        for num in value:
            avg+=num
        avg=int(avg/len(value))
        # 单个学生信息列表添加学生姓名
        single.append(key)
        # 单个学生信息列表添加学生的平均分
        single.append(avg)

        # 将每个学生的信息列表,添加到结果列表
        result.append(single)

    # https://blog.csdn.net/dataocean/article/details/105008271
    # 使用sorted()函数按成绩从高到低排序结果列表
    result = sorted(result,key=lambda d: int(d[1]), reverse=True)

    # 返回结果列表
    return result
        
    


# 将输入的字符串形式的字典,变为字典
# {'Alice':[90,80,85],'Bob':[70,75,80],'Charlie':[80,80,80],'David':[65,70,75]}
# {"数学A":[82,88,70,66],"电子工程A":[90,68,90,86],"计科A":[88,80,72,96]}
stuscor = eval(input())

# 调用scoresort()函数计算出成绩排序列表
s = scoresort(stuscor)

# 打印结果
for i in range(len(s)):
    print(f"第{i+1}名是:{s[i][0]},平均分是{s[i][1]}.")

img