2. 设计 3 个类 , 分别是学生类 Student, 本科生类 Undergaduate, 研究生类 Postgraduate, 其中 Student 类是一个抽象类 , 它包含一些基本的学生信息如姓名、所学课程、课程成绩等 , 而 Undergraduate 类和 Postgraduate 都是 Student 类的子类 , 它们之间的主要差别是计算课程成绩等级的方法有所不同 , 研究生的标准要比本科生的标准高一些 , 如下表所示。 本科生标准 研究生标准 80-100 优秀 90-100 优秀 70-80 良好 80-90 良好 60-70 一般 70-80 一般 50-60 及格 60-70 及格 50以下 不及格 60以下 不及格 假设某班级里既有本科生也有研究生 , 请编写程序统计出全班学生的成绩等级并显示出来。此题关键是设计一个学生数组 , 既能存放本科生对象 , 又能存放研究生对象。
时间: 2023-06-27 11:04:57 浏览: 114
以下是代码实现:
```python
# 定义学生抽象类
class Student:
def __init__(self, name, course_scores):
self.name = name
self.course_scores = course_scores
# 计算课程成绩等级的抽象方法
def calculate_grade(self):
pass
# 定义本科生类
class Undergraduate(Student):
def calculate_grade(self):
grade = sum(self.course_scores) / len(self.course_scores)
if grade >= 80:
return "优秀"
elif grade >= 70:
return "良好"
elif grade >= 60:
return "一般"
elif grade >= 50:
return "及格"
else:
return "不及格"
# 定义研究生类
class Postgraduate(Student):
def calculate_grade(self):
grade = sum(self.course_scores) / len(self.course_scores)
if grade >= 90:
return "优秀"
elif grade >= 80:
return "良好"
elif grade >= 70:
return "一般"
elif grade >= 60:
return "及格"
else:
return "不及格"
# 创建学生数组,包含本科生和研究生
students = [
Undergraduate("小明", [80, 75, 90]),
Postgraduate("小红", [92, 88, 95]),
Undergraduate("小刚", [70, 68, 72]),
Postgraduate("小李", [85, 78, 88]),
Undergraduate("小张", [65, 72, 68]),
Postgraduate("小王", [75, 80, 70])
]
# 统计全班学生的成绩等级并显示出来
for student in students:
print("{}的成绩等级为{}".format(student.name, student.calculate_grade()))
```
输出结果:
```
小明的成绩等级为良好
小红的成绩等级为优秀
小刚的成绩等级为一般
小李的成绩等级为良好
小张的成绩等级为及格
小王的成绩等级为一般
```
阅读全文