有N个学生,每个学生的信息包括学号、姓名、性别和成绩,从键盘上输入N个学生的信息,把学生按成绩(整数)从高到低排序,若成绩一样则按照学号从小到大排序。输入第一行是学生个数,接下来每一行表示一条学生信息。 【输入形式】 第一行是整数N,表示学生人数。 接下来是N行,每一行是一个学生的信息。 【输出形式】 输出N行。每一行是一个学生的信息。各行之间按题目要求排序。 【样例输入】 6 2012008001 alice male 87 2012008002 bob male 93 2012008003 luce female 78 2012008004 jone male 87 2012008005 lily female 95 2012008006 jack male 81 【样例输出】 2012008005 lily female 95 2012008002 bob male 93 2012008001 alice male 87 2012008004 jone male 87 2012008006 jack male 81 2012008003 luce female 78
时间: 2024-03-15 13:44:09 浏览: 72
好的,我知道了。这是一个经典的排序问题。以下是一种可能的 Python 代码实现:
```python
n = int(input()) # 输入学生个数
students = [] # 用一个列表存储所有学生的信息
for i in range(n):
info = input().split() # 输入学生信息并拆分为列表
student = {
'id': info[0],
'name': info[1],
'gender': info[2],
'score': int(info[3])
}
students.append(student)
# 定义一个排序函数,先按成绩从高到低排序,再按学号从小到大排序
def cmp(student):
return (-student['score'], student['id'])
students.sort(key=cmp) # 对学生列表进行排序
# 输出排序后的学生信息
for student in students:
print(student['id'], student['name'], student['gender'], student['score'])
```
首先,我们读入学生的个数,然后循环读入每个学生的信息,并把每个学生的信息存储到一个字典中,最后把所有学生的字典存储到一个列表中。
接着,我们定义一个排序函数 `cmp`,该函数返回一个元组,第一个元素是成绩的相反数(因为我们要按照成绩从高到低排序),第二个元素是学生的学号。然后,我们调用 `students.sort(key=cmp)` 对学生列表进行排序。
最后,我们遍历排序后的学生列表,并输出每个学生的信息。输出时,我们按照题目要求输出学生的学号、姓名、性别和成绩,每个属性之间用一个空格隔开。每个学生的信息输出一行。
阅读全文