6-1 08-学生类的自定义排序 分数 10 全屏浏览题目 切换布局 作者 褚少微 单位 浙
时间: 2023-10-30 07:21:31 浏览: 216
学生信息排序
题目描述
定义一个学生类,包含姓名(name)和分数(score)两个属性。现在需要对学生类进行自定义排序,按照分数从高到低排序,若分数相同,则按照姓名的字典序从低到高排序。
输入描述
无
输出描述
无
样例
无
代码实现
```python
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
def __lt__(self, other):
if self.score == other.score:
return self.name < other.name
else:
return self.score > other.score
def __str__(self):
return self.name + ' ' + str(self.score)
n = int(input())
students = []
for i in range(n):
name, score = input().split()
students.append(Student(name, int(score)))
students.sort()
for student in students:
print(student)
```
解题思路
本题要求对学生类进行自定义排序,具体可以使用 Python 中的魔法方法 __lt__ 来实现。__lt__ 方法是 Python 中用于比较两个对象大小的方法,即小于号 < 的比较。我们可以在学生类中重写 __lt__ 方法,实现按照分数从高到低排序,若分数相同,则按照姓名的字典序从低到高排序。
在主函数中,我们先根据输入的 n,创建 n 个学生对象,并存储在 students 列表中。然后调用 Python 中的 sort 方法,对学生对象进行排序。因为我们在学生类中重写了 __lt__ 方法,所以 sort 方法会按照我们定义的规则进行排序。最后遍历排序后的列表,输出每个学生的姓名和分数即可。
阅读全文