#############################总结########################
# lst =['python%s期' %i for i in range(510)]
# pageSize=10 #每页显示XX条数据
# current=int(input("请输入当前页码:"))
#
# totle=0
# if len(lst)%pageSize ==0:#数据除页码数余0
# totle=len(lst)//pageSize #就启用地板除
# else:
# totle=len(lst)//pageSize+1 #如果除不尽 把页面地板粗+1
# if current > totle:#如果输入的页面大于 地板除的最大数
# print('没有数据了')
# else:
# # 一页为10行 * 要查看页-1 到 10*2
# # 10 * 2 -1 :10*2
# data=lst[pageSize*(current-1):pageSize*current]
# for d in data:
# print(d)
class page: def __init__(self,lst,pagesize): self.lst=lst self.pagesize=pagesize @property def totle(self): # 计算有多少页 if len(self.lst) % self.pagesize == 0: return len(self.lst) // self.pagesize else: return len(self.lst) // self.pagesize + 1 #pagesize每页显示30 def start(self): return self.lst[0:self.pagesize] def end(self): return self.lst[(self.totle - 1) * self.pagesize:self.totle * self.pagesize] def index(self):#指定页面显示 ye = int(input('请输入你要显示的页面:')) if ye <1 or ye > self.totle: print('对不起,你输入的页面不存在') else: #计算莫一页的数据 return self.lst[(ye-1)*self.pagesize:ye*self.pagesize] p=page([1,2,3,4,5,6,7,8,9,10],3) print(p.start()) print(p.end()) print(p.index())
1. 简述面向对象三大特性;
封装:对属性的封装, 对功能的封装
继承:子类自动拥有父类中除了私有内容外的其他所有内容
多态:同一个对象多种形态. python中支持的是鸭子模型.
封装:
对属性的封装
class Foo: def __init__(self,name,age) delf.name=name delf.age=age f=Foo('张三',12)
对方法的封装
class Foo: def shuping(): print('开开心心的刷图') def hejiu(): print('开开心心的喝酒') f=Foo() f.shuping() f.hejiu()
继承
class Base: def __init__(self): pass class Foo(Base): def __init__(self):#覆盖,重写 pass f=Foo() ##意义 为了扩展
多态
一个类型 多种形态
2.列举面向对象中所有的成员
1.变量:
实例变量,对象的变量
类变量,类的变量
2.方法:
实例方法, 对象.方法() 形参第一个self
类方法,@classmethod 形参第一个:cls
静态方法 @ststicmethod 没要求,就是函数
3.属性:
把方法变成属性
应用场景:当你的属性不能直接存储,需要计算的时候,
4.私有
__开头的内容,私有内容只能自己用
5.特殊成员
__init__
__new__
__call__
3.用面向对象表示:学生,班级 老师的关系,并创建相关对象进行嵌套
class Stu: def __init__(self,name,num,cla=None): self.name=name self.num=num class Cla: def __init__(self,name): self.name=name self.teach_list=[] self.stu_list=[] class Tea: def __init__(self,name): self.name=name self.cla_list=[] #添加学生 s1=Stu('张三',1) s2=Stu('李四',2) s3=Stu('王五',3) #添加班级 c1=Cla('终极一班') c2=Cla('小班') c3=Cla('中班') #添加老师 t1=Tea('李白') t2=Tea('荆轲') t3=Tea('赵信') #给班级添加老师 s1.Cla=c1 s2.Cla=c2 s3.Cla=c3 # print(s1.Cla.name) #给班级分配老师 c1.teach_list.append(t1) c1.teach_list.append(t2) c1.teach_list.append(t3) ##给老师分配班级 t1.cla_list.append(c1) t1.cla_list.append(c2) t1.cla_list.append(c3) t2.cla_list.append(c2) t3.cla_list.append(c3) c2.teach_list.append(t2) c3.teach_list.append(t3) #给老师分配学生 c1.stu_list.append(s1) c2.stu_list.append(s2) c3.stu_list.append(s3)
学生选课:
class Student:#学生 def __init__(self, sno, sname): self.sno = sno self.sname = sname self.cour_list = [] def chakan(self): # 查看课程 for c in self.cour_list: print(f"{self.sname}选了{c.cname}") def tianjia(self, cour): # 添加课程 self.cour_list.append(cour) class Course:#课程 def __init__(self, cno, cname, teacher=None): self.cno = cno self.cname = cname self.teacher = teacher def chakan(self): print(f"{self.cno}, {self.cname}, {self.teacher.tname}") # 设置老师 def shezhilaoshi(self, teacher): self.teacher = teacher class Teacher:#老师 def __init__(self, tno, tname, tphone): self.tno = tno self.tname = tname self.tphone = tphone ''' 请完成以上三个类. 创建6个课程, 6个老师. 给课程安排好老师. 然后创建30个学⽣. 每个学⽣随机被分配3个课程. 最终显⽰出这三⼗个学⽣的选课情况以及任课老师的电话 ''' # 准备生成随机数 from random import randint c1 = Course("01", "抽烟") c2 = Course("02", "喝酒") c3 = Course("03", "烫头") c4 = Course("04", "点烟") c5 = Course("05", "倒酒") c6 = Course("06", "给人烫头") t1 = Teacher("01", "唐伯虎", "13301122001") t2 = Teacher("02", "祝枝山", "13301122002") t3 = Teacher("03", "文征明", "13301122003") t4 = Teacher("04", "李白", "13301122004") t5 = Teacher("05", "黄冠", "13301122005") t6 = Teacher("06", "谢晋", "13301122006") # 给课程设置老师 c1.shezhilaoshi(t1) c2.shezhilaoshi(t2) c3.shezhilaoshi(t3) c4.shezhilaoshi(t4) c5.shezhilaoshi(t5) c6.shezhilaoshi(t6) # 0 1 2 3 4 5 # 0-5 c_lst = [c1, c2, c3, c4, c5, c6] stu_lst = [] for i in range(30): # 循环30次. stu = Student(i, "学生"+str(i)) # 创建30个学生 # 生成随机的三个数字. 对应的是三个课程索引 s = set() while len(s) < 3: s.add(randint(0, 5)) # 把随机的三个课程索引对应的课程设置给学生 for n in s: # print(n) # ???? 随机出来的课程的索引 stu.tianjia(c_lst[n]) stu_lst.append(stu) # 加到列表 # 显示学生的选课情况以及老师的电话 for s in stu_lst: print(f"学生编号:{s.sno}, 学生姓名:{s.sname}") # 拿到学生的课程信息 for c in s.cour_list: print(f" 课程编号:{c.cno}, 课程名称: {c.cname}, 任课老师的电话是:{c.teacher.tphone}")
############结果####################
学生编号:0, 学生姓名:学生0 课程编号:01, 课程名称: 抽烟, 任课老师的电话是:13301122001 课程编号:02, 课程名称: 喝酒, 任课老师的电话是:13301122002 课程编号:04, 课程名称: 点烟, 任课老师的电话是:13301122004 学生编号:1, 学生姓名:学生1 课程编号:01, 课程名称: 抽烟, 任课老师的电话是:13301122001 课程编号:02, 课程名称: 喝酒, 任课老师的电话是:13301122002 课程编号:04, 课程名称: 点烟, 任课老师的电话是:13301122004 学生编号:2, 学生姓名:学生2 课程编号:01, 课程名称: 抽烟, 任课老师的电话是:13301122001 课程编号:04, 课程名称: 点烟, 任课老师的电话是:13301122004 课程编号:06, 课程名称: 给人烫头, 任课老师的电话是:13301122006