项目2:
在此项目中,您将创建4个类(类):
1,学生;2班级类,3课程;4教师
尝试定义具有以下关系的类的必要属性和函数:
一个学生属于一个班级(班级),并且可以注册不同的课程
一个课程包含一个注册学生名单和一个教师,每个学生都有这个课程的成绩。
老师可以教不同的课程(班级)。
请创建的对象包括:2门课(班级)(A和B班),每个班有20名学生(班级)、3门课程(数学、英语、Python)和3名老师(John、约翰、彼得和Brine),然后实现以下事务:
每个学生必须修3门课程,并打印出其成绩单(成绩单)
每位老师回答一门课程,输出(以班级为单位)的注册学生的成绩表,计算班级平均成绩(班级),并记最高和最低分数。
对于每门课(班级),根据3门课程的成绩和对学生名单进行排序。
*这些课程的学生信息和成绩可以由你自己生成。
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
class Course:
def __init__(self, name, teacher):
self.name = name
self.teacher = teacher
self.students = []
def add_student(self, student):
self.students.append(student)
def get_student_grades(self):
return [student.grade for student in self.students]
class Class:
def __init__(self, name):
self.name = name
self.students = []
self.courses = []
def add_student(self, student):
self.students.append(student)
def add_course(self, course):
self.courses.append(course)
def get_class_avg(self):
total = 0
for course in self.courses:
total += sum(course.get_student_grades())
return total / len(self.students) / len(self.courses)
def get_class_highest_grade(self):
highest = 0
for course in self.courses:
highest = max(highest, max(course.get_student_grades()))
return highest
def get_class_lowest_grade(self):
lowest = 100
for course in self.courses:
lowest = min(lowest, min(course.get_student_grades()))
return lowest
def sort_class_by_grades(self):
self.students.sort(key=lambda x: sum([y.grade for y in x.courses]), reverse=True)
class Teacher:
def __init__(self, name):
self.name = name
self.courses = []
def add_course(self, course):
self.courses.append(course)
def get_student_grades(self, class_name):
student_grades = {}
for course in self.courses:
if class_name in [x.name for x in course.students]:
for student in course.students:
if student.name in student_grades:
student_grades[student.name].append(student.grade)
else:
student_grades[student.name] = [student.grade]
return student_grades
def get_class_avg(self, class_name):
total = 0
count = 0
for course in self.courses:
if class_name in [x.name for x in course.students]:
grades = [x.grade for x in course.students if x.name == class_name]
total += sum(grades)
count += len(grades)
return total / count
def get_class_highest_grade(self, class_name):
highest = 0
for course in self