解题思路:
利用嵌套列表字典将值存储好之后,使用python自带的itemgetter模块实现多关键字排序
注意事项:
题目中其他两个成绩是从大到小,而id是小的优先,顺序不一样,为了统一处理,我在赋值id的时候就让它的值反正赋值
比如如果是6个学生的话,id为1的我弄成5,4->2,3->3,2->4,1->5,这样就统一了大家的次序,观察可得他们之间的和是相等的,
所以只需要在最后输出的时候改为student+1-特殊改变的id,就可以还原回去
参考代码:
#奖学金
from operator import itemgetter student=int(input()) student_list=[] for n in range(student): dist={} list_score=list(map(int,input().split())) dist['all']=sum(list_score) dist['cn']=list_score[0] dist['id']=student-n student_list.append(dist) d=sorted(student_list,key=itemgetter('all','cn','id'),reverse=True) #sorted(student_list,key=attrgetter('all','cn','id')) for i in range(min(5,student)): print("{} {}".format((student+1)-d[i]['id'],d[i]['all']))
0.0分
1 人评分
printf基础练习2 (有点不明白)浏览:887 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:818 |
【计算两点间的距离】 (C语言代码)浏览:1522 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:755 |
班级人数 (C语言代码)浏览:980 |
1162答案错误,为什么浏览:700 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:560 |
回文数(一) (C语言代码)浏览:1170 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:627 |