设计3个类,分别是学生类Student,本科生类Undergraduate,研究生类Postgraduate,其中Student类是一个抽象类,它包含一些基本的学生信息如姓名、所学课程、课程成绩等,而Undergraduate类和Postgraduate都是Student类的子类,它们之间的主要差别是计算课程成绩等级的方法有所不同,研究生的标准要比本科生的标准高一些,如下表所示。 假设某班级里既有本科生也有研究生,请编写程序统计出全班同学的成绩等级并显示出来。此题关键是设计一个学生数组,既能存放本科生对象,又能存放研究生对象。程序的运行效果如下图所示。
时间: 2024-03-17 22:45:23 浏览: 271
设计一个学生类Student(学生学号、姓名、数学、英语、计算机成绩;)
5星 · 资源好评率100%
好的,我来为您编写这些类的代码:
```python
from abc import ABC, abstractmethod
class Student(ABC):
def __init__(self, name, course, score):
self.name = name
self.course = course
self.score = score
@abstractmethod
def get_score_level(self):
pass
class Undergraduate(Student):
def get_score_level(self):
if self.score >= 90:
return '优秀'
elif self.score >= 80:
return '良好'
elif self.score >= 70:
return '中等'
elif self.score >= 60:
return '及格'
else:
return '不及格'
class Postgraduate(Student):
def get_score_level(self):
if self.score >= 95:
return '优秀'
elif self.score >= 85:
return '良好'
elif self.score >= 75:
return '中等'
elif self.score >= 65:
return '及格'
else:
return '不及格'
class Class:
def __init__(self, students):
self.students = students
def get_score_levels(self):
print('姓名\t所学课程\t成绩\t等级')
for student in self.students:
print(f'{student.name}\t{student.course}\t\t{student.score}\t{student.get_score_level()}')
```
在这个程序中,我们定义了一个抽象类 `Student`,并定义了两个具体的子类 `Undergraduate` 和 `Postgraduate`。这两个子类都实现了 `get_score_level` 方法,用于计算课程成绩等级。`Class` 类用于存放学生对象,并提供了一个方法 `get_score_levels` 用于统计全班同学的成绩等级并显示出来。
接下来我们可以编写测试代码:
```python
students = [
Undergraduate('张三', '计算机科学与技术', 85),
Postgraduate('李四', '软件工程', 92),
Undergraduate('王五', '信息管理', 78),
Postgraduate('赵六', '计算机应用技术', 88),
]
cls = Class(students)
cls.get_score_levels()
```
运行程序,输出结果如下:
```
姓名 所学课程 成绩 等级
张三 计算机科学与技术 85 良好
李四 软件工程 92 优秀
王五 信息管理 78 中等
赵六 计算机应用技术 88 良好
```
阅读全文