开发者学堂课程【Python 入门 2020年版:练习4】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10414
练习4
内容简介:
一、使用列表存储学生
二、相关数据操作
题目:
学生类 Student:
属性:学号,姓名,年龄,性别,成绩
班级类 Grade:
属性:班级名称,班级中的学生【使用列表存储学生】
方法:
1.查看该班级中的所有学生的信息
2.查看指定学号的学生信息
3.查看班级中成绩不及格的学生信息
4.将班级中的学生按照成绩降序排序哈
一、使用列表存储学生信息
class Student(object):
#Student 类继承自 object
def _init_(self, number,name,age,gender,score) :
#定义学号、姓名、年龄、年级、分数。
self.number = number
self.name = nameself.age = age
self.gender = genderself.score = score
class Grade(object) :
#Grade 类继承自 object
def _init_(self, name,students ):
#定义名字、学生
self.name = name
self.students = students
def show_all(self):
#定义所有的信息继承 self
for student in self.students:
print('编号:{},姓名:{},年龄:{},性别:{},分数
{}'.format(self.number,self.name, self.age , self.gender, self. score))
#打印学生的所有信息,查看该班级中的所有学生的信息
def get_student_by_number(self, n):
for s in self.students:
if s.number == n:
return s
else:
return '用户未找到’
二、相关数据操作
1.把数据加入年级列表
如果数字以0开头,在 Python2里表示八进制,所以不能写以0开头的数据
下面任意编写五个学生信息
s1= Student(1,’zhangsan’,18,'male’,80)
s2 = Student(5,'李四',19,'male', 50)
s3 = Student( 10,'tony', 20,'male', 70)
s4 = Student(7, 'jack’, 18, 'female' , 90)
s5 = Student(4, ‘ henry', 19,’female' , 56)
g= Grade(‘中二班',[s1,s2, s3,s4, s5])
#创建一个班级,把上面五个学生放进去。
g.show_all()
#加入所有信息
2.查看班级中成绩不及格的学生信息
def failed_students(self):
#定义不及格的学生
result = filter(lambda student: student.score < 60,self.students)
#过滤分数小于60的元素,filter拿到的结果是一个可迭代对象。
for x in result:
print(x)
g.failed_students()
#调取不及格学生信息
运行结果:
编号:5,姓名:李四,年龄:19,性别:male,分数50
编号:4,姓名:henry ,年龄:19,性别:female,分数56
3.将班级中的学生按照成绩降序排序哈
def order_students(self):
self.students.sort(key=lambda s: s.score,reverse=True)
#self.students.sort()表示给数据排序,
for student in g.students:
print(student)
#直接修改成 self.students 属性,根据 s: s.score分数排序,reverse=True顺序为倒序,直接修改成 self.students
运行结果:
编号:7,姓名:jack,年龄:18,性别:female,分数90
编号:1,姓名:zhangsan,年龄:18,性别:male,分数80
编号:10,姓名:tony ,年龄:20,性别:male,分数70
编号:4,姓名:henry ,年龄:19,性别:female,分数56
编号:5,姓名:李四,年龄:19,性别:male,分数50
或者是
return sorted(self.students,key=1ambda s: s.score,reverse=True)
x=g.order_students( )
for student in x:
print(student)
第一种会修改数据直接将 g.students 数据修改成降序排列,第二种不会修改数据返回一个新的结果,新的结果是有序的。
用函数拿到结果,得到新的结果再来排序,其实 g.students 依然是个无序的,只是对它进行排序得到一个新的列表。