编写一个程序,输入3个学生的英语和计算机成绩,并按总分从高到低排序(要求设计一个学生类student)
时间: 2023-05-31 13:18:55 浏览: 165
### 回答1:
好的,以下是程序的代码:
class Student:
def __init__(self, name, english_score, computer_score):
self.name = name
self.english_score = english_score
self.computer_score = computer_score
self.total_score = english_score + computer_score
def __lt__(self, other):
return self.total_score > other.total_score
def __str__(self):
return f"{self.name}: 英语成绩 {self.english_score}, 计算机成绩 {self.computer_score}, 总分 {self.total_score}"
students = []
for i in range(3):
name = input(f"请输入第{i+1}个学生的姓名:")
english_score = int(input(f"请输入{name}的英语成绩:"))
computer_score = int(input(f"请输入{name}的计算机成绩:"))
student = Student(name, english_score, computer_score)
students.append(student)
students.sort()
for student in students:
print(student)
这个程序首先定义了一个学生类Student,包含了学生的姓名、英语成绩、计算机成绩和总分。其中,__lt__方法用于比较学生的总分大小,__str__方法用于打印学生信息。
然后,程序通过循环输入3个学生的信息,并创建Student对象,将它们添加到一个列表中。最后,程序对这个列表进行排序,按照学生的总分从高到低排列,并打印每个学生的信息。
### 回答2:
首先,我们需要设计一个学生类(Student),包含学生ID、姓名、英语成绩(EnglishScore)、计算机成绩(ComputerScore)和总分(TotalScore)五个属性。同时,我们还需要在类中定义一个排序方法(SortByTotalScore),用来按照总分从高到低对学生进行排序。
下面是具体的实现代码:
```python
class Student:
def __init__(self, id, name, english_score, computer_score):
self.id = id
self.name = name
self.english_score = english_score
self.computer_score = computer_score
self.total_score = english_score + computer_score
def SortByTotalScore(students):
students.sort(key=lambda x: x.total_score, reverse=True)
```
以上代码中,初始化方法(__init__)用来初始化学生对象的属性;排序方法(SortByTotalScore)则是利用Python自带的sort函数,对students列表中的元素进行排序,排序的依据是每个学生的总分(total_score)属性,reverse=True表示从高到低排序。
接下来,我们需要输入三个学生的英语和计算机成绩,创建学生对象,并调用SortByTotalScore方法对它们进行排序:
```python
if __name__ == "__main__":
students = []
students.append(Student(1, "Tom", 80, 90))
students.append(Student(2, "Mary", 85, 95))
students.append(Student(3, "John", 90, 85))
Student.SortByTotalScore(students)
for student in students:
print(f"{student.id} {student.name} {student.total_score}")
```
以上代码中,我们首先创建了一个空的students列表,然后通过调用构造函数,向students列表中添加了三个学生对象。接着,我们调用SortByTotalScore方法,将students列表中的学生按照总分从高到低排序。最后,我们使用for循环输出每个学生的ID、姓名和总分属性。
最终输出结果为:
```
2 Mary 180
3 John 175
1 Tom 170
```
以上就是按照总分从高到低排序的Python程序的实现方法。需要注意的是,这只是一种实现方式,实际上,还可以采用其他的算法或数据结构对学生进行排序。
### 回答3:
思路:
- 先创建一个学生类,包含了学生姓名、英语成绩和计算机成绩属性
- 然后创建一个列表,存放3个学生对象
- 然后按照学生总分从高到低进行排序
- 最后输出排好序的学生信息
代码实现:
```python
class Student:
def __init__(self, name, english_score, computer_score):
self.name = name
self.english_score = english_score
self.computer_score = computer_score
def get_total_score(self):
return self.english_score + self.computer_score
students = []
students.append(Student('张三', 89, 78))
students.append(Student('李四', 78, 90))
students.append(Student('王五', 90, 87))
students = sorted(students, key=lambda s: s.get_total_score(), reverse=True)
for s in students:
print(f"姓名: {s.name} 英语成绩: {s.english_score} 计算机成绩: {s.computer_score} 总分: {s.get_total_score()}")
```
运行结果:
```
姓名: 王五 英语成绩: 90 计算机成绩: 87 总分: 177
姓名: 李四 英语成绩: 78 计算机成绩: 90 总分: 168
姓名: 张三 英语成绩: 89 计算机成绩: 78 总分: 167
```
以上就是按总分从高到低排序的一个简单实现。