1. 编写程序, 统计班级同学的期末考试成绩, 按总成绩高低进行排名。要求统计人数为 10 人, 统计 6 门课程考试成绩, 从键盘输入每个同学的姓名、学号及各门考试成绩, 计算总成 绩并排序后,输出每人的排名及总成绩。(程序中至少包含 3 个类)
时间: 2024-06-02 07:07:12 浏览: 21
可以的,以下是符合要求的代码:
class Student:
def __init__(self, name, id):
self.name = name
self.id = id
self.grades = []
def add_grade(self, grade):
self.grades.append(grade)
def get_total_grade(self):
return sum(self.grades)
class Class:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
def rank_students(self):
self.students.sort(key=lambda x: x.get_total_grade(), reverse=True)
def print_ranking(self):
for i, student in enumerate(self.students):
print(f"第{i + 1}名:{student.name},总成绩:{student.get_total_grade()}")
class Exam:
def __init__(self):
self.classes = []
def add_class(self):
c = Class()
for i in range(10):
name = input(f"请输入第{i + 1}个学生的姓名:")
id = input(f"请输入第{i + 1}个学生的学号:")
grades = []
for j in range(6):
grade = int(input(f"请输入{self._get_course_name(j + 1)}的成绩:"))
grades.append(grade)
s = Student(name, id)
for k in grades:
s.add_grade(k)
c.add_student(s)
c.rank_students()
self.classes.append(c)
def _get_course_name(self, num):
course_names = {1: '语文', 2: '数学', 3: '英语', 4: '物理', 5: '化学', 6: '生物'}
return course_names.get(num)
def print_ranking(self):
for i, c in enumerate(self.classes):
print(f"第{i+1}个班级的考试名次如下:")
c.print_ranking()
if __name__ == '__main__':
e = Exam()
e.add_class()
e.print_ranking()
答案中一共用到了3个类,分别是:学生类(Student)、班级类(Class)和考试类(Exam)。其中考试类用于管理多个班级。用户输入时,先输入学生的姓名、学号,再输入6门课程的成绩。按照输入顺序依次添加到学生对象中。管理多个学生对象的班级对象中包含了排序方法和输出方法。最终的考试类中包含了管理多个班级对象的方法和输出方法,可以输出所有班级考试成绩的排名。