day12作业

1.写一个装饰器@tag要求满足如下功能

def tag(name):
    def tag_no_name(f):
        def new_f(*args,**kwargs):
            re=f(*args,**kwargs)
            return f'<{name}>'+re+f'</{name}>'
        return new_f
    return tag_no_name


@tag(name='p')
def render(text):
    # 执行其他操作
    return text

@tag(name='div')
def render2():
    return 'abc'

print(render('Hello'))   # 打印出: <p>Hello</p>
print(render2())     # 打印出: <div>abc</div>

# 2.为函数写一个装饰器,根据参数不同做不同操作

def add_num(flag):
    def add(f):
        def new_f(*args,**kwargs):
            re=f(*args,**kwargs)
            if flag == True:
                return re+100
            if flag == False:
                return re-100
            # return re+100 if flag==True else re-100   # 三目
        return new_f
    return add
@add_num(flag=True)
def func1(x,y):
    return x+y
@add_num(flag=False)
def func2(a,b):
    return a*b

print(func1(10,20))
print(func2(6,5))

# 3.为函数写一个装饰器,根据不同的运算符和数据对原函数的返回值进行相应的数值操作

def create_caozuo(fuhao,num):
    def caozuo(f):
        def new_f(*args,**kwargs):
            re=f(*args,**kwargs)

            if type(re) in (int,float,complex,bool):
                if fuhao == '+':
                    return re+num
                if fuhao == '-':
                    return re-num
                if fuhao == '*':
                    return re*num
                if fuhao == '/':
                    return re/num
                else:
                    return re
            else:
                return re
        return new_f
    return caozuo


@create_caozuo(fuhao='*',num=100)
def func4(x):
    return x

print(func4(6))

#4.写一个斗地主发牌器

#斗地主发牌
import random

#生成牌库,不考虑花色
def get_library():
    Library=[x for x in ('A','2','3','4','5','6','7','8','9','10','J','K','Q') for y in range(4)]
    Library.append('big_King')      #牌库加入大王
    Library.append('small_King')    #牌库加入小王
    return Library                  #返回牌库

#定义:先从牌库抽出三张地主牌的方法
def get_dizhu_pai():
    dizhu_list = []
    for i in range(3):
        d=random.choice(library)   #从指定序列中随机抽取一个元素
        dizhu_list.append(d)
        library.remove(d)
    return dizhu_list

# 定义:给玩家发牌的方法
def fapai(now_library:list):
    player=[]                               # 定义该玩家的牌的列表
    for i in range(17):                     # 获得地主牌前,每个玩家有17张牌
        pai=random.choice(now_library)      # 从牌库随机去一张牌
        player.append(pai)                  # 将牌发给玩家
        now_library.remove(pai)             # 将发出去的牌从牌库删除
    return player                           # 返回玩家的牌列表




#调用方法生成牌库,library就是牌库
library=get_library()
print(f'牌库:{library}')

#调用方法,从牌库中抽取三张地主牌
dizhu_list=get_dizhu_pai()
print(f'地主牌:{dizhu_list}')

#调用方法给每位玩家发牌
player1=fapai(library)
player2=fapai(library)
player3=fapai(library)

# 三个玩家摇点 谁的点数大,地主牌给谁
get_score=True
while get_score:
    p1_score=random.randint(1,100)
    p2_score=random.randint(1,100)
    p3_score=random.randint(1,100)
    if p1_score != p2_score !=p3_score :
        get_score = False


if max(p1_score,p2_score,p3_score)==p1_score:
    print('玩家1是地主')
    player1+=dizhu_list
elif max(p1_score,p2_score,p3_score)==p2_score:
    print('玩家2是地主')
    player2 += dizhu_list
else:
    print('玩家3是地主')
    player3 += dizhu_list

print(f'玩家1:{player1}')
print(f'玩家2:{player2}')
print(f'玩家3:{player3}')

print('发牌结束,请开始游戏')



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值