#############################总结########################
# 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)
classpage:def __init__(self,lst,pagesize):
self.lst=lst
self.pagesize=pagesize
@propertydef totle(self): #计算有多少页
if len(self.lst) % self.pagesize ==0:return len(self.lst) //self.pagesizeelse:return len(self.lst) // self.pagesize + 1
#pagesize每页显示30
defstart(self):returnself.lst[0:self.pagesize]defend(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中支持的是鸭子模型.
封装:
对属性的封装
classFoo:def __init__(self,name,age)
delf.name=name
delf.age=age
f=Foo('张三',12)
对方法的封装
classFoo:defshuping():print('开开心心的刷图')defhejiu():print('开开心心的喝酒')
f=Foo()
f.shuping()
f.hejiu()
继承
classBase:def __init__(self):pass
classFoo(Base):def __init__(self):#覆盖,重写
passf=Foo()##意义 为了扩展
多态
一个类型 多种形态
2.列举面向对象中所有的成员
1.变量:
实例变量,对象的变量
类变量,类的变量
2.方法:
实例方法, 对象.方法() 形参第一个self
类方法,@classmethod 形参第一个:cls
静态方法 @ststicmethod 没要求,就是函数
3.属性:
把方法变成属性
应用场景:当你的属性不能直接存储,需要计算的时候,
4.私有
__开头的内容,私有内容只能自己用
5.特殊成员
__init__
__new__
__call__
3.用面向对象表示:学生,班级 老师的关系,并创建相关对象进行嵌套
classStu:def __init__(self,name,num,cla=None):
self.name=name
self.num=numclassCla:def __init__(self,name):
self.name=name
self.teach_list=[]
self.stu_list=[]classTea: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)
学生选课:
classStudent:#学生def __init__(self, sno, sname):
self.sno=sno
self.sname=sname
self.cour_list=[]def chakan(self): #查看课程
for c inself.cour_list:print(f"{self.sname}选了{c.cname}")def tianjia(self, cour): #添加课程
self.cour_list.append(cour)classCourse:#课程def __init__(self, cno, cname, teacher=None):
self.cno=cno
self.cname=cname
self.teacher=teacherdefchakan(self):print(f"{self.cno}, {self.cname}, {self.teacher.tname}")#设置老师
defshezhilaoshi(self, teacher):
self.teacher=teacherclassTeacher:#老师def __init__(self, tno, tname, tphone):
self.tno=tno
self.tname=tname
self.tphone=tphone'''请完成以上三个类. 创建6个课程, 6个老师. 给课程安排好老师. 然后创建30个学⽣.
每个学⽣随机被分配3个课程. 最终显⽰出这三⼗个学⽣的选课情况以及任课老师的电话'''
#准备生成随机数
from random importrandint
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 ins:#print(n) # ???? 随机出来的课程的索引
stu.tianjia(c_lst[n])
stu_lst.append(stu)#加到列表#显示学生的选课情况以及老师的电话
for s instu_lst:print(f"学生编号:{s.sno}, 学生姓名:{s.sname}")#拿到学生的课程信息
for c ins.cour_list:print(f"\t课程编号:{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