-
写一个装饰器@tag要求满足如下功能:
def tag(name): def _(func): def new_func(*args, **kwargs): result = func(*args, **kwargs) return f'<{name}>{result}</{name}>' return new_func return _ @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>
-
为函数写一个装饰器,根据参数不同做不同操作。
flag为 True,则 让原函数执行后返回值加 100,并返回。 flag为 False,则 让原函数执行后返回值减 100,并返回。 def num_operate(flag: bool): def _(func): def new_func(*args, **kwargs): result = func(*args, **kwargs) if type(result) in (int, float, complex): if flag: return result+100 else: return result-100 else: return result return new_func return _
-
为函数写一个装饰器,根据不同的运算符和数据对原函数的返回值进行相应的数值操作
例如: 运算符是+,数据是 100, 就对原函数的返回值进行加100的处理 运算符是-, 数据是 20,就对原函数的返回值进行减20的处理 运算符是*, 数据是 3, 就对原函数的返回值进行乘3的处理 运算符是/, 数据是 2, 就对原函数的返回值进行除2的处理 其他情况的符号不做处理 def num_operate(symbol, num): def _(func): def new_func(*args, **kwargs): result = func if type(result) in (int, float, complex): if eval(symbol) == '+': return result+num elif eval(symbol) == '-': return result - num elif eval(symbol) == '*': return result * num elif eval(symbol) == '/': return result / num else: return result return new_func return _
-
写一个斗地主发牌器
from random import shuffle # 准备一副牌,4花色,A23...9 10 J Q K,joker,JOKER def prepare_cards(): suit_list = ['♠', '♥', '♣', '♦'] poker1 = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'] poker_list = ['joker', 'JOKER'] for suit in suit_list: for poker in poker1: poker_list.append(suit + poker) # 打乱牌顺序 shuffle(poker_list) return poker_list # 三个玩家,一人17张,3张底牌 def deal_cards(): play1 = [] play2 = [] play3 = [] gen = (poker for poker in prepare_cards()) for time in range(17): play1.append(next(gen)) play2.append(next(gen)) play3.append(next(gen)) cards = list(gen) # 调用函数对手牌和底牌进行排序 play1.sort(key=sort_cards, reverse=True) play2.sort(key=sort_cards, reverse=True) play3.sort(key=sort_cards, reverse=True) cards.sort(key=sort_cards, reverse=True) return play1, play2, play3, cards # 对牌进行排序,方便观看每人手牌 def sort_cards(item): char = item[1:] table = {'10': 10, 'J': 11, 'Q': 12, 'K': 13, 'A': 14, '2': 15, 'oker': 16, 'OKER': 17} if '3' <= char <= '9': return int(char) return table[char] if __name__ == '__main__': prepare_cards() for cards in deal_cards(): print(cards)
day12-装饰器、迭代器、生成器和模块作业(斗地主发牌器)
最新推荐文章于 2025-05-01 23:36:42 发布