day17:设计模式

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

 

猜你喜欢

转载自blog.csdn.net/weixin_43800846/article/details/88542381