10. 按成绩排序功能的实现

实现方法

import student
from student import Student
import tools


class ClassRoom:
    '''班级类型'''
    def __init__(self, class_name):
        self.class_name = class_name  # 班级名称
        self.student = []  # 保存学生信息

...
    def list_student_info_order_by_chinese_score(self):
        '''按语文成绩从高到低显示学生成绩'''
        def get_chinese_score(a_student):
            return a_student.chinese_score
        result = sorted(self.student, key=get_chinese_score, reverse=True)
        print('按语文成绩排序的列表')
        self.list_all_student_info(result)

    def list_student_info_order_by_math_score(self):
        '''按数学成绩从高到低显示学生成绩'''
        def get_chinese_score(a_student):
            return a_student.chinese_score
        result = sorted(
            self.student,
            key=lambda a_stu: a_stu.math_score,
            reverse=True)
        print('按数学成绩排序的列表')
        self.list_all_student_info(result)

...

    def student_manager(self):
        '''此函数用来学生数据'''
        while True:
            self.show_class_menu()
            sel = input('请选择:')
            match sel:
                case '1':  # 1) 添加学生
                    self.add_student()
                case '2':  # 2) 修改学生的语文成绩
                    self.modify_chinese_score()
                case '3':  # 3) 修改学生的数学成绩
                    self.modify_math_score()
                case '4':  # 4) 删除学生
                    self.del_student()
                case '5':  # 5) 列出所有学生的成绩
                    self.list_all_student_info(self.student)
                case '6':  # 6) 按语文成绩从高到低显示学生成绩
                    self.list_student_info_order_by_chinese_score()
                case '7':  # 7) 按数学成绩从高到低显示学生成绩
                    self.list_student_info_order_by_math_score()
                case '0':  # 0) 退出班级
                    return
                case _:
                    print('不存在的选项,请重新输入')
                    import time
                    time.sleep(2)  # 让程序睡眠2秒

if __name__ == '__main__':
    cr1 = ClassRoom('一年1班')
    cr1.student.append(Student('张三', 100, 61))
    cr1.student.append(Student('李四', 70, 81))
    cr1.student.append(Student('王五', 90, 71))
    cr1.student.append(Student('赵六', 80, 91))
    cr1.student_manager()