-
写一个装饰器@tag要求满足如下功能:
@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>
def tag(name): def tag_(fn): def new_fn(*args, **kwargs): result = fn(*args, **kwargs) return f'<{name}>{result}</{name}>' return new_fn return tag_
-
为函数写一个装饰器,根据参数不同做不同操作。
flag为 True,则 让原函数执行后返回值加 100,并返回。 flag为 False,则 让原函数执行后返回值减 100,并返回。
def add_100(flag=True): def add_100_(fn): def new_fn(*args, **kwargs): result = fn(*args, **kwargs) if type(result) in (int, float, complex): if flag: return result + 100 else: return result - 100 return result return new_fn return add_100_
-
为函数写一个装饰器,根据不同的运算符和数据对原函数的返回值进行相应的数值操作
例如: 运算符是+,数据是 100, 就对原函数的返回值进行加100的处理 运算符是-, 数据是 20,就对原函数的返回值进行减20的处理 运算符是*, 数据是 3, 就对原函数的返回值进行乘3的处理 运算符是/, 数据是 2, 就对原函数的返回值进行除2的处理 其他情况的符号不做处理
def fruit_change(operator, num): def fruit_change_(fn): def new_fn(*args, **kwargs): result = fn(*args, **kwargs) if type(result) in (int, float, complex): result = eval(f'{result}{operator}{num}') return result return result return new_fn return fruit_change_
-
写一个斗地主发牌器
from random import randint, choice def deal_cards(): # 输出一张牌和剩余卡牌数量 count_cards = -55 kinds = ['♥红心', '♦方片', '♠黑桃', '♣梅花'] cards = [] while count_cards < -1: num = randint(1, 54) if num == 53: card = '🃏小王' if card in cards: continue else: cards.append(card) count_cards += 1 yield card, count_cards elif num == 54: card = '🃏大王' if card in cards: continue else: cards.append(card) count_cards += 1 yield card, count_cards else: num %= 13 if num == 1: num = 'A' elif num == 11: num = 'J' elif num == 12: num = 'Q' elif num == 0: num = 'K' else: num = str(num) kind = choice(kinds) card = kind + num if card in cards: continue else: cards.append(card) count_cards += 1 yield card, count_cards def dealt(dealer): try: card, left_n = next(dealer) if left_n > -4: print(f'地主底牌:{card}') else: player = left_n % 3 + 1 print(f'玩家{player}:{card}') except: print('发牌完毕!') dealer = deal_cards()
dealt(dealer)
day12 作业
最新推荐文章于 2022-11-09 11:27:41 发布