目录
一、题目描述
二、分析
三、代码展示
一、题目描述
-
学生类Student: 属性:学号,姓名,年龄,性别,成绩 -
班级类Grade: 属性︰班级名称,班级中的学生【使用列表存储学生】 -
方法??
1.查看该班级中的所有学生的信息
⒉.查看指定学号的学生信息 ?
3.查看班级中成绩不及格的学生信息
4.将班级中的学生按照成绩降序排序
二、分析
①首先创造一个学生类,类中包括其五个属性(学号,姓名,年龄,性别,成绩 )
②因为有需求是展示学生信息,所以此时需要重写__str__方法,为的是代码简介明了以及输出信息时方便
③创建一个班级类,类中包括其两个属性(班级名称,班级中的学生【使用列表存储学生】),初始为空,接收的是一个列表,这样方便的是在进行输出时因为重写了__str__方法所以可以直接输出其信息;之前的做法是将对象的地址传进去,而此时要进行输出的时候只能通过对象地址去调用其信息,一个一个的调用,而不能直接全部输出,这样代码就很冗余。
④创造对象实例
三、代码展示
# -*- coding: utf-8 -*-
class Studnet:
def __init__(self,stu_id,name,age,sex,score):
self.stu_id = stu_id
self.name = name
self.age = age
self.sex = sex
self.score = score
def __str__(self):#重写输出方法,也就是格式化输出
return "【学号:{},姓名:{},年龄{},性别{},成绩{}】".format(
self.stu_id,self.name,self.age,self.sex,self.score
)
__repr__ = __str__
class Grade:
def __init__(self,class_name,student_list=None):#传进来的是一个列表,方便后续遍历
self.class_name = class_name
if student_list == None:
self.student_list = []
self.student_list = student_list
def show_student(self):
print(f'{self.class_name}班级学生信息为:')
for j in self.student_list:#取出来的是对象,而不是对象的地址,此时输出对象就会调用到重写的格式化方法
print(j)
# print(f'学号:{j.stu_id},姓名:{j.name},性别:{j.sex},年龄:{j.age},成绩:{j.score}')#此行是之前存入的是对象地址,输出时只能依次调用对象地址的属性
#def add_student(self,*args):
#for i in args:
#self.student_list.append(i)
def show_student_id(self,arge):#判断学号
for i in self.student_list:
if i.stu_id == arge:
print(f'学号{i.stu_id}学生的信息是:{i}')
break
# print(f'学号为:{i.stu_id}的信息为:')
# print(f'学号:{i.stu_id},姓名:{i.name},性别:{i.sex},年龄:{i.age},成绩:{i.score}')
else:
print(f'学号{arge}插无此人')
def show_student_score(self):
flag = False
print('班级中成绩不及格的为')
for i in self.student_list:
if i.score < 60:
flag = True
print('{}班不及格学生的信息是{}'.format(self.class_name, i))
# print(f'学号:{i.stu_id},姓名:{i.name},性别:{i.sex},年龄:{i.age},成绩:{i.score}')
if not flag:
print('{}班很棒没有不及格的学生'.format(self.name))
def show_student_sort(self):
# for i in range(len(self.student_list) - 1):
# for j in range(len(self.student_list) - 1):
# if self.student_list[j].score < self.student_list[j + 1].score:
# self.student_list[j] , self.student_list[j + 1] = self.student_list[j + 1],self.student_list[j]
# print('排序后的班级学生信息为:')
# for j in self.student_list:
# print(f'学号:{j.stu_id},姓名:{j.name},性别:{j.sex},年龄:{j.age},成绩:{j.score}')
self.student_list.sort(key=lambda stu: stu.score, reverse=True)#排序采用的是匿名函数
for x in self.student_list:
print(x)
s1 = Studnet('001','张三','20','男',90)
s2 = Studnet('002','李四','27','男',30)
s3 = Studnet('003','王五','10','女',60)
s4 = Studnet('004','赵柳','23','男',80)
s5 = Studnet('005','马七','89','女',50)
st_list = [s1,s2,s3,s4,s5]
g1 = Grade('火箭班',st_list)
# g1.add_student(st_list)
g1.show_student()
g1.show_student_id('003')
g1.show_student_score()
g1.show_student_sort()
|