算法实现思路: 创建一个学生对象,包括姓名和分数两个属性,同时包含一个排名属性 读入所有学生信息,存储在一个列表中,同时给每个学生对象的排名属性赋初值为1 根据学生分数从大到小排序,如果有相同分数,则排名相同 遍历排序后的学生列表,按照要求输出每个学生的排名、姓名和分数 代码实现如下:
时间: 2024-02-25 21:55:03 浏览: 9
以下是Python代码实现:
```python
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
self.rank = 1
def __lt__(self, other):
return self.score > other.score or (self.score == other.score and self.name < other.name)
def __str__(self):
return f"{self.rank} {self.name} {self.score:.2f}"
students = []
while True:
name, score = input().split()
if name == '00' and score == '00':
break
students.append(Student(name, float(score)))
students.sort()
for i in range(len(students)):
if i > 0 and students[i].score == students[i-1].score:
students[i].rank = students[i-1].rank
else:
students[i].rank = i+1
print(students[i])
```
输入示例:
```
Tom 89.5
Mary 92.5
John 85.0
Bob 80.0
Alice 92.5
David 88.0
00 00
```
输出示例:
```
1 Mary 92.50
1 Alice 92.50
3 Tom 89.50
4 David 88.00
5 John 85.00
6 Bob 80.00
```