python 有n个学生,每个学生的信息包括学号,姓名,性别和成绩,把学生按成绩从高到低排序,若成绩一样则按照学号从小到大排列,输入的第一行是学生个数,接下来每一行表示一条学生信息
时间: 2024-01-02 10:03:06 浏览: 17
可以使用Python的内置排序函数`sorted()`来对学生信息进行排序。根据题目要求,我们可以自定义一个比较函数,使得先按照成绩从高到低排序,如果成绩相同,则按照学号从小到大排序。
以下是一个示例代码:
```python
n = int(input()) # 学生个数
students = [] # 存储学生信息
# 输入学生信息
for i in range(n):
line = input().split()
student = {
'id': int(line[0]),
'name': line[1],
'sex': line[2],
'score': int(line[3])
}
students.append(student)
# 定义比较函数
def cmp(x):
return (-x['score'], x['id'])
# 按照成绩从高到低排序
students = sorted(students, key=cmp)
# 输出结果
for student in students:
print(student['id'], student['name'], student['sex'], student['score'])
```
注意,这里比较函数的返回值是一个元组,这是为了满足多关键字排序的要求。元组的第一个元素是成绩的相反数(因为默认的排序是升序),第二个元素是学号,这样就可以实现先按照成绩从高到低排序,如果成绩相同,则按照学号从小到大排序。
阅读全文