- 设计一个学生类 - 属性:姓名、学号、年龄、成绩 - 设计一个班级类 - 属性:班级代号,所有学生 - 要求:实现向班级中添加学生、删除学生、查看学生、按照

class student:
    def __init__(self,name,number,age,grade):
        self.name = name
        self.number =number
        self.age = age
        self.grade = grade
    def __str__(self):
        return "姓名:{}学号:{}年龄:{}成绩:{}".format(self.name,self.number,self.age,self.grade)
class class1:
    def __init__(self,name):
        self.name = name
        self.stu_list = []
        self.stu_dict = {}
    def add_student(self,stu):  #添加学生
        self.stu_list.append(stu)
        self.stu_dict[stu.number] = stu#注意字典键值对要用[]
    def show_student(self,number):#学生信息
        for i in self.stu_list:
            print(i )
    def sort_student(self,key,reverse = True): #也可以写成key =None ,学生排序
        self.key = key
        self.reverse = reverse
        self.stu_list.sort(key = self.key,reverse =self.reverse)
    def del_student(self,number):  #删除学生
        student = self.stu_dict.pop(number) #从字典中删除并弹出,字典 pop() 方法删除字典给定键 key 及对应的值,返回值为被删除的值。key 值必须给出。 否则,返回 default 值。
        self.stu_list.remove(student)#从列表中删除,list.remove(obj)移除列表中某个值的第一个匹配项



c = class1('zz-JY-python1901')
from random import randint
#import语句 ,因randint()函数属于random模块,必须在函数名称之前先加上random,告诉Python在random模块中寻找这个函数。
# from import语句,这是导入模块的另一种形式,使用这种形式的 import 语句, 调用 模块中的函数时不需要  moduleName. 前缀 。但是,使用完整的名称会让代码更可读,所以最好是使用普通形式的 import 语句

#添加学生
for i in range(10):
    name = 'stu'+str(i+1)
    number = 100 +i
    age = randint(20,30)
    grade = randint(0,100)
    stu = student(name,number,age,grade)
    c.add_student(stu)
#c.add_student(stu)这行应加在循环里边,不然只有一个信息
c.sort_student(key=lambda s: s.grade, reverse=True) #ambda就是用来定义一个匿名函数 例:add = lambda x, y : x+y
c.show_student(number)
c.del_student(106)
print(' ')
c.show_student(number)

猜你喜欢

转载自blog.csdn.net/qq_41525874/article/details/88539020