博学者普克尔特 对上述练习题提供了一类解法,对于我这个初学者来说,有一定的理解难度,于是自己琢磨了一阵,使用如下代码进行解答,貌似也能输出结果,但不知道正确与否,还请大神指导。
原题如下:
有一个班若干个学生考试的成绩表,由学号和成绩组成,将其组成一个字典如: {'1001':85,'1002':70,'1003':100,'1005':60,'1008':100}。
输出内容:
1. 按成绩从高到低输出成绩表字典;
2. 计算全班的平均分(精确到小数后两位);
3. 输出最高分的同学:学号:成绩。
输入格式:
按字典格式输入
输出格式:
输出成绩表字典、输出平均分、输出最高分。
————————————————
版权声明:本文为CSDN博主「博学者普克尔特」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_68937706/article/details/131001159
输入样例:
cjb = {'1001':85,'1002':70,'1003':100,'1005':60,'1008':100}
输出样例:
成绩从高到低为:{'1003': 100, '1008': 100, '1001': 85, '1002': 70, '1005': 60}
平均分=83.00
最高分:
1003 100
1008 100
实现代码:
cjb = {'1001':85,'1002':70,'1003':100,'1005':60,'1008':100}
px = sorted(cjb.items(),key=lambda x: x[1],reverse=True)
D=dict(px)
print('成绩从高到低为:'+ str(D))
sum = 0
for i in cjb:
#print(i,cjb[i])
#grade[i] = cjb[i]
sum = sum + cjb[i]
num = len(cjb)
pjf = ( "%.2f" % float(sum/num))
print('平均分=' + str(pjf))
highest_score_xs=list(cjb.keys())[0]
highest_score = cjb[highest_score_xs]
print("最高分:")
for xh in cjb:
score = cjb[xh]
if score > highest_score:
if score >= highest_score:
print(xh,score)
运行结果:
成绩从高到低为:{'1003': 100, '1008': 100, '1001': 85, '1002': 70, '1005': 60}
平均分=83.00
最高分:
1003 100
1008 100