19.5.5笔记and作业
作者:互联网
笔记
将二维列表打印为一维列表
a=[[1,2,3],[4,5,6],[7,8,9]]
b=[j for x in a for j in x ]
print(b)
打印3*3的列表,用推导式
b=[[3*i+1+j for j in range(3)] for i in range(3)]
print(b)##j控制元素的数量,i控制列表的数量
#打印4*4的列表,用推导式
b=[[4*i+1+j for j in range(4)] for i in range(4)]
print(b)
map和filter的作用
def hanashu(a):
return a*a
a=[1,2,3]
b=map(hanashu,a)
for x in b:
print(x)
filter函数,过滤掉不符合条件的数
a=[1,2,3,4,5]
b=filter(lambda x:True if x%2==0 else False, a)
for x in b:
print(x)
面向对象
class Student():
name=''
age=0
sex=''
def dayin(self):
print(self.name,self.age,self.sex)
zs=Student()
zs.name='张三'
zs.age=19
zs.sex='男'
zs.dayin()
ls=Student()
ls.name='李四'
ls.age=29
ls.sex='男'
ls.dayin()
#init初始化方法
class People():
def __init__(self,name,age,sex):#self指的就是对象本身
print(id(self))
self.name=name
self.age=age
self.sex=sex
def dayin(self):
print(id(self))
print('我叫',self.name)
print('今年',self.age)
print('性别',self.sex)
zs=People('张三',19,'男')
print(id(zs))
zs.dayin()
class Teacher():
def __init__(self,name,age,work_age):
self.name=name
self.age=age
self.work_age=work_age
def showSelf(self):
print('我叫',self.name,'今年',self.age,'工龄',self.work_age)
def jiangke(self):
print('所教的科目是python')
zs=Teacher('张三',39,15)
zs.showSelf()
zs.jiangke()
#赋值要在调用前
class A():
def __init__(self):
pass
def hs1(self,x):
self.name=x
def showSelf(self):
print(self.name)
zs=A()
zs.hs1('张三')##给name赋值,要在调用函数前赋值
zs.showSelf()
class X():
def hehe(self):
print(self.name)
z=X()
z.name='张三'
z.hehe()
求圆的周长和面积
class Yuan():
def __init__(self,r):
self.r=r
def zhouchang(self):
print(2*3.14*self.r)
def mianji(self):
print( 3.14*self.r*self.r)
yuan=Yuan(3)
yuan.mianji()
yuan.zhouchang()
类属性
c
lass Stu():
count=0
def __init__(self,name):
self.name=name
Stu.count+=1
def showSelf(self):
print(self.name)
print(Stu.count)
zs=Stu('张三')
print(zs.count)#count为1,一个对象使用一次,count加1
ls=Stu('李四')
print(ls.count)#count为2,两个对象使用,count加2,对象也可以使用类属性
print(Stu.count)
class Stu():
count=0#类属性,放在方法外
def __init__(self,name):
self.name=name#self属性,都是对象属性
Stu.count+=1
def showSelf(self):
print(self.name)
#当类属性和对象属性重名的时候,(可以把类属性认为是全局变量,对象属性是局部变量)优先使用对象属性
a=Stu('张三')
b=Stu('李四')
print(a.count,Stu.count)#一个对象使用一次,count加1,张三和李四都使用了,所以变为2
a.count=1000
print(a.count)###输出为1000
print(Stu.count)##2 对象也可以使用类属性
#对象属性中没有count,所以调用了类属性里面的count,然后赋值给对象属性里面的count
class Stu():
count=0#类属性,放在方法外
def __init__(self,name):
self.name=name#self属性,都是对象属性
Stu.count+=1
def showSelf(self):
print(self.name)
a=Stu('张三')
b=Stu('李四')
a.count=a.count+5#输出7,对象属性中没有count,所以调用了类属性里面的count,然后赋值给对象属性里面的count
print(a.count)
print(Stu.count)#输出2
del a.count##删除对象属性后,去调用类属性
print(a.count)
#删除的属性,不能再被调用,但其他属性可以被调用
class X():
def __init__(self,name,age):
self.name=name
self.age=age
zs=X('张三',19)
print(zs.name)
del zs.name##删除之后即不能调用name属性
print(zs.age)
print(zs.name)##无输出
修改的时候,如果是同一内容,则值一样
class Stu():
count=0
ls=[1,2,3]
def __init__(self,name,age):
self.name=name
self.age=age
self.count+=1
def showSelf(self):
print(self.name,self.age)
zs=Stu('张三',19)
zs.ls.append(4)
Stu.ls.append(5)
print(zs.ls)##输出为[1,2,3,4,5]
print(Stu.ls)##输出为[1,2,3,4,5]
#写一个学生类,里面包含名字和id,然后再写添加和删除的方法
class Student():
def __init__(self,name,id):
self.name=name
self.id=id
class Oper():
def __init__(self):
self.stu_lb=[]
def addStudent(self):
id =input('请输入id')
for stu in self.stu_lb:
if stu.id==id:
print('id重复')
break
else:
name=input('请输入姓名')
stu=Student(name,id)
self.stu_lb.append(stu)
self.dayin()
def delStudent(self):
id=input('请输入要删除的id')
for stu in self.stu_lb:
if stu.id==id:
print('删除',stu.name)
self.stu_lb.remove(stu)
break
else:
print('无此人')
self.dayin()
def dayin(self):
for stu in self.stu_lb:
print(stu.name,stu.id)
x=Oper()
x.addStudent()
x.addStudent()
x.delStudent()
类方法
class Student():
count=9
def __init__(self,name,age):
self.name=name
self.age=age
def say(self):
print(self.name,self.age)
@classmethod#类方法
def cM(cls):
print(id(cls))
print(id(Student))##cls就等于Student
print(cls.count,'--------')
@staticmethod
def hehe(a,b):
print(a+b)
zs=Student('张三',19)
Student.cM()
Student.hehe(2,5)
#静态方法
class Teacher():
count=0
tax=0.002
def __init__(self,name,salary):
self.name=name
self.salary=salary
Teacher.count+=1
@classmethod
def dayin(cls):
print(cls.count)
@staticmethod
def shui(a,b):
print((a+b)*Teacher.tax)
zs=Teacher('张三',10000)
ls=Teacher('李四',20000)
Teacher.dayin()
Teacher.shui(zs.salary,ls.salary)
__str__的用法
class Stu():
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return '我叫{},今年{}岁'.format(self.name,self.age)
zs=Stu('张三',19)
b=str(zs)
print(zs)
作业
1.面向对象中 属性的练习
陈赫 体重 75.0 公斤
陈赫每次 奔跑 会减肥 0.1 公斤
陈赫每次 吃东西 体重增加 0.5 公斤
class Person():
def __init__(self,name,weight):
self.name=name
self.weight=weight
def __str__(self):
return '我是{},体重{}'.format(self.name,self.weight)
def Run(self):
print('{}爱跑步,可以减肥'.format(self.name))
self.weight-=0.1
def Eat(self):
print('{}是吃货'.format(self.name))
self.weight+=0.5
chenhe=Person('陈赫',80)
chenhe.Eat()
chenhe.Run()
chenhe.Eat()
print(chenhe)
2.植物大战僵尸
class Game(object):
zuigaofen=0
def __init__(self,player_name):
self.player_name=player_name
@staticmethod
def show_help():
print('提示:小心被僵尸吃了哦')
@classmethod
def show_zuigaofen(cls):
print('历史记录%d'%cls.zuigaofen)
def startGame(self):
print('%s开始游戏了....'%self.player_name)
Game.show_help()
Game.show_zuigaofen()
game=Game('张三')
game.startGame()
3.枪炮手
两个类配合使用练习
“”"
需求
狙击手 麦克 有一把 狙M99
麦克 可以 开火
狙M99 能够 发射 子弹
狙M99 装填 装填子弹 —— 增加子弹数量
“”"
class Gun:
def __init__(self, model):
# 枪的型号
self.model = model
# 子弹数量
self.bullet_count = 0
def add_bullet(self, count):
self.bullet_count += count
def shoot(self):
# 判断是否还有子弹
if self.bullet_count <= 0:
print("没有子弹了...")
return
# 发射一颗子弹
self.bullet_count -= 1
print("%s 发射子弹[%d]..." % (self.model, self.bullet_count))
class Sniper:
def __init__(self, name):
# 姓名
self.name = name
# 狙击枪,狙击手初始没有枪 None
self.gun = None
def fire(self):
# 1. 判断士兵是否有枪
if self.gun is None:
print("[%s] 还没有枪..." % self.name)
return
# 2. 高喊口号
print("冲啊...[%s]" % self.name)
# 3. 让枪装填子弹
self.gun.add_bullet(50)
# 4. 让枪发射子弹
self.gun.shoot()
m99 = Gun("M99")
sniper = Sniper('麦克')
sniper.gun = m99
sniper.fire()
标签:count,19.5,name,self,作业,笔记,__,print,def 来源: https://blog.csdn.net/peter_fanxing/article/details/89855948