python编写学生类,需要输入多个学生类,并根据总分排序
时间: 2024-06-10 10:05:21 浏览: 72
好的,根据您的要求,我可以为您提供以下Python代码:
```python
class Student:
def __init__(self, name, math_score, english_score, science_score):
self.name = name
self.math_score = math_score
self.english_score = english_score
self.science_score = science_score
self.total_score = math_score + english_score + science_score
def sort_students(students):
return sorted(students, key=lambda student: student.total_score, reverse=True)
if __name__ == '__main__':
students = []
while True:
name = input('请输入学生姓名(输入exit结束输入):')
if name == 'exit':
break
math_score = int(input('请输入学生数学成绩:'))
english_score = int(input('请输入学生英语成绩:'))
science_score = int(input('请输入学生科学成绩:'))
student = Student(name, math_score, english_score, science_score)
students.append(student)
students = sort_students(students)
print('按照总分排序后的学生名单如下:')
for i, student in enumerate(students):
print('{}、{},总分:{}'.format(i+1, student.name, student.total_score))
```
这段代码会先定义一个名为 `Student` 的类,包含四个属性:名字、数学成绩、英语成绩和科学成绩。在类的构造函数中,我们会通过传入的参数来初始化这些属性,并计算学生的总分。
接着,我们定义了一个名为 `sort_students` 的函数,它会接受一个学生列表作为参数,并根据学生的总分进行排序。具体实现是通过调用Python内置函数 `sorted`,并传入一个 `key` 函数作为参数,这个函数会告诉 `sorted` 如何比较学生的大小。具体而言,我们定义了一个 `lambda` 表达式,它会接受一个学生对象作为输入,并返回这个学生对象的总分。
最后,在 `if __name__ == '__main__':` 下,我们编写了一个简单的交互式程序。程序会循环读入输入,每次输入一个学生的信息,直到用户输入 `exit` 结束输入。我们会将输入的学生对象放入一个列表中,并调用 `sort_students` 函数来对学生列表进行排序。最后,我们将排序后的学生信息输出到屏幕上。
阅读全文