pythonN个学生,每个学生的信息包括学号、姓名、性别和成绩,从键盘上输入N个学生的信息,把学生按成绩(整数)从高到低排序,若成绩一样则按照学号从小到大排序。输入第一行是学生个数,接下来每一行表示一条学生信息。
时间: 2024-01-02 13:05:15 浏览: 171
好的,这是一个关于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)
# 按照成绩从高到低排序,成绩一样则按照学号从小到大排序
students.sort(key=lambda x: (-x['score'], x['id']))
# 输出结果
for student in students:
print(student['id'], student['name'], student['gender'], student['score'])
```
代码分为三部分:
1. 获取学生个数
2. 用列表存储每个学生信息
3. 按照成绩从高到低排序,成绩一样则按照学号从小到大排序,并输出结果。
这里使用了Python内置的`sort()`方法来对学生列表进行排序。`sort()`方法可以接受一个`key`参数,用于指定排序的规则。这里使用了`lambda`表达式来定义排序规则,`lambda`表达式中的`x`代表每个学生信息,`-x['score']`表示按照成绩从高到低排序,`x['id']`表示在成绩一样的情况下按照学号从小到大排序。
希望这段代码能够帮到你!
阅读全文