蓝桥杯-奖学金-python

简介: 蓝桥杯-奖学金-python

题目描述


某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5 名学生发奖学金。期末,每个学生都有 3 门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。

任务:先根据输入的 3 门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前 5 名学生的学号和总分。注意,在前 5 名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序。例如,在某个正确答案中,如果前两行的输出数据(每行输出两个数:学号、总分)是:


1. 7 279
2. 5 279

 

这两行数据的含义是:总分最高的两个同学的学号依次是 7 号、5 号。这两名同学的总分都是 279 (总分等于输入的语文、数学、英语三科成绩之和),但学号为 7 的学生语文成绩更高一些。如果你的前两名的输出数据是:


1. 5 279
2. 7 279

 

则按输出错误处理,不能得分。


输入描述


第 1 行为一个正整数 (6≤n≤300),表示该校参加评选的学生人数。

第 2 到 n+1 行,每行有3 个用空格隔开的数字,每个数字都在 0 到 100 之间。第 j 行的 3 个数字依次表示学号为 j−1 的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为 1 ~ n(恰好是输入数据的行号减 1)。

所给的数据都是正确的,不必检验。


输出描述


输出共有 5 行,每行是两个用空格隔开的正整数, 依次表示前 5 名学生的学号和总分。


输入输出样例


示例 1

输入

1. 6
2. 90 67 80
3. 87 66 91
4. 78 89 91
5. 88 99 77
6. 67 89 64
7. 78 89 98

 

输出

1. 6 265
2. 4 264
3. 3 258
4. 2 244
5. 1 237

 

示例 2

输入

1. 8
2. 80 89 89
3. 88 98 78
4. 90 67 80
5. 87 66 91
6. 78 89 91
7. 88 99 77
8. 67 89 64
9. 78 89 98

 

输出

1. 8 265
2. 2 264
3. 6 264
4. 1 258
5. 5 258

 

运行限制


  • 最大运行时间:1s
  • 最大运行内存: 128M

思路:

我们可以先定义一个学生类,给他定义ID,总分,三科的成绩的属性。在得到每位同学的成绩后,创建同学对象,并计算每位同学的总分,再将同学对象存储在数组中。之后调用sout()函数和lambda函数进行结构体的排序。注意,题目要求先比总分,再比语文,所以我们的lambda的关键字 要先总分,再语文,且要求排序从大到小,要添加:reverse=True

之后打印输出前五名同学即可


1. class student:
2.     ID=''
3.     point=0
4.     a=0
5.     b=0
6.     c=0
7.     def __init__(self,a,b,c,ponit,ID):
8. self.ID=ID
9. self.point=point
10. self.a=a
11. self.b=b
12. self.c=c
13. 
14. n=int(input())
15. a=[]
16. stu=[]
17. for i in range(n):
18.     a.append([int(i) for i in input().split()])
19. 
20. for i in range(n):
21.     point=a[i][0]+a[i][1]+a[i][2]
22.     stu.append(student(a[i][0],a[i][1],a[i][2],point,i+1))
23. 
24. 
25. stu.sort(key=lambda stu:(stu.point,stu.a),reverse=True)
26. 
27. for i in range(0,5):
28.     print(stu[i].ID," ",stu[i].point)
目录
相关文章
|
25天前
|
Python
蓝桥杯练习题(一):Python组之入门训练题
这篇文章是关于蓝桥杯Python组的入门训练题,包括Fibonacci数列、圆的面积、序列求和和A+B问题的具体代码实现和样例输出。
89 0
|
25天前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
蓝桥杯Python编程练习题的集合,涵盖了从基础到提高的多个算法题目及其解答。
47 3
蓝桥杯练习题(三):Python组之算法训练提高综合五十题
|
25天前
|
人工智能 Python
蓝桥杯练习题(四):Python组之历届试题三十题
关于蓝桥杯Python组历届试题的三十个练习题的总结,包括题目描述、输入输出格式、样例输入输出以及部分题目的解题思路和代码实现。
21 0
蓝桥杯练习题(四):Python组之历届试题三十题
|
25天前
|
存储 机器学习/深度学习 算法
蓝桥杯练习题(二):Python组之基础练习三十题
蓝桥杯Python编程练习题的集合,包含了三十个不同难度的编程题目,覆盖了基础语法、数据结构和算法等领域。
22 0
|
6月前
|
索引 Python 容器
【备战蓝桥杯】探索Python内置标准库collections的使用
【备战蓝桥杯】探索Python内置标准库collections的使用
84 1
|
6月前
|
开发者 Python
【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数
【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数
69 1
|
6月前
|
算法 测试技术 编译器
蓝桥杯-02-python组考点与14届真题
蓝桥杯-02-python组考点与14届真题
|
6月前
|
Python
第十三届蓝桥杯B组python(试题A:排列字母)
第十三届蓝桥杯B组python(试题A:排列字母)
63 0
|
6月前
|
人工智能 算法 测试技术
第十四届蓝桥杯第三期模拟赛 【python】(二)
第十四届蓝桥杯第三期模拟赛 【python】(二)
|
6月前
|
测试技术 Python
第十四届蓝桥杯第三期模拟赛 【python】(一)
第十四届蓝桥杯第三期模拟赛 【python】(一)