test306:
def csd():
import time
a=[1,2,3,4,5,6,7,8,9,10]
def cs():
while True:
i=0
while i <len(a)/2:
a[i],a[i+5]=a[i+5],a[i]
i+=1
print(a)
time.sleep(1)
cs()
def fbnq(b):
def fb(n):
a=0
b=1
i=0
while i<n:
a,b=b,a+b
yield a
i+=1
a=fb(b)
for x in a:
print(x)
day17:
import test306 test306.fbnq(10) import test306 test306.csd()
print(True+3)#True的值是1
print(False+4)#False的值是0
x=[i for i in range(10)]
print(x)
y=[i for i in range(5)]
print(y)
a=[1,2,3,4]
b="abcd"
c=zip(a,b)
print(c)
for x in c:
print(x)
a=[1,2]
b="abcd"
d=(1,2,3)
c=zip(a,b,d)
print(c)
for x in c:
print(x)
def deal(a):
return a*a
b=[1,2,3,4]
c=map(deal,b)
print(c)
for x in c:
print(x)
a=[{"name":"张三","age":18},
{"name":"李四","age":38},
{"name":"王五","age":28},
]
def maxAge(a):
return a["age"]
d=max(a,key=maxAge)
print(d)
a=[-5,-2,3,1,-4]
b=sorted(a,key=abs)
print(b)
a.sort(key=abs,reverse=True)
print(a)
def dex(a):
return a%2==1
print(dex(11),dex(12))
h=[1,2,3,4,5]
b=filter(dex,h)#过滤:只返回h中执行dex后结果为True的元素,不返回结果为False的
for i in b:
print(i)
class Bmw():
def __init__(self,name):
self.name=name
class Benz():
def __init__(self,name):
self.name=name
class CarFatory():
@staticmethod
def makecar(name):
if name=="宝马":
return Bmw(name)
elif name=="奔驰":
return Benz(name)
car=CarFatory.makecar("宝马")
print(car.name,type(car))
car=CarFatory.makecar("奔驰")
print(car.name,type(car))
from abc import ABC,abstractclassmethod,abstractmethod,abstractstaticmethod
class Dog(ABC):
@abstractstaticmethod
def stMethod(self):
pass
@abstractmethod
def Method(self):
pass
@abstractclassmethod
def clMethod(self):
pass
d=Dog()#报错,因为抽象函数不能实例化
#观察者模式
class Resi():
def __init__(self):
self.obsv=[]
self.status=""
def attach(self,ob):
self.obsv.append(ob)
def notify(self):
for x in self.obsv:
x.update()
class Observe():
def __init__(self,name,rs):
self.name=name
self.rs=rs
def update(self):
print("%s %s请不要玩游戏了"%(self.rs.status,self.name))
class Manager():
def __init__(self,name,boss):
self.name=name
self.boss=boss
def update(self):
print("%s,%s请过来送钱"%(self.boss.status,self.name))
if __name__ == '__main__':
resi=Resi()
obj_zs=Observe("张三",resi)
obj_ls=Observe("李四",resi)
obj_ww=Observe("王五",resi)
my=Manager("马云",resi)
ht=Manager("化腾",resi)
resi.attach(obj_zs)
resi.attach(obj_ls)
resi.attach(obj_ww)
resi.attach(my)
resi.attach(ht)
resi.status="老板来了"
resi.notify()
#策略模式
class CashNormal():#原价
def accept_money(self,money):
return money
class CashRate():#打折
def __init__(self,rate):
self.rate=rate
def accept_money(self,money):
return money*self.rate
class CashReturn():#满减
def __init__(self,condition,ret):
self.condition=condition
self.ret=ret
def accept_money(self,money):
return money-(money//self.condition)*self.ret
class Context():
def __init__(self,cs):
self.cs=cs
def getResult(self,money):
return self.cs.accept_money(money)
if __name__ == '__main__':
while True:
zd={}
zd[1]=Context(CashNormal())
zd[2]=Context(CashRate(0.8))
zd[3]=Context(CashReturn(300,50))
celue=int(input("请输入策略"))
if celue in zd.keys():
cs=zd[celue]
else:
cs=zd[1]
money=float(input("请输入钱"))
print(cs.getResult(money))