python作业讲解_python 面向对象(经典作业讲解)

本文通过一个具体的案例,介绍了Python面向对象编程的三大特性:封装、继承和多态,并展示了如何使用面向对象编程表示学生、班级和老师之间的关系。此外,还实现了学生选课的功能,包括课程、教师和学生的类定义,以及随机分配课程的逻辑。
摘要由CSDN通过智能技术生成

#############################总结########################

# 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)

学生选课:

df88602c6c0b61bf48e654089f2c4bf2.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值