-
写一个装饰器@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 test1(func): def new_func(*args, **kwargs): result = func(*args, **kwargs) return f'<{name}>{result}</{name}>' return new_func return test1
-
为函数写一个装饰器,根据参数不同做不同操作。
flag为 True,则 让原函数执行后返回值加 100,并返回。 flag为 False,则 让原函数执行后返回值减 100,并返回。 ddef get_back(flag): def test1(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 test1
-
为函数写一个装饰器,根据不同的运算符和数据对原函数的返回值进行相应的数值操作
例如: 运算符是+,数据是 100, 就对原函数的返回值进行加100的处理 运算符是-, 数据是 20,就对原函数的返回值进行减20的处理 运算符是*, 数据是 3, 就对原函数的返回值进行乘3的处理 运算符是/, 数据是 2, 就对原函数的返回值进行除2的处理 其他情况的符号不做处理 def operation(symbol: str, num: int): def text1(func): def new_func(*args, **kwargs): result = func(*args, **kwargs) if type(result) in (int, float, complex): return eval(f'{result}{symbol}{num}') else: return result return new_func return text1
-
写一个斗地主发牌器
list1 = ['3', '4', '5', '6', '7', '8', '9', '1', 'J', 'Q', 'K', 'A', '2', 'm', 'i']
def poker():
list2 = ['♥', '♦', '♠', '♣']
list3 = [3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A', 2]
list4 = [f'{x}{y}' for x in list2 for y in list3]
list4.append('small_joker')
list4.append('big_joker')
random.shuffle(list4)
for x in list4:
yield x
gen = poker()
list5 = []
list6 = []
list7 = []
for i in range(17):
list5.append(next(gen))
list6.append(next(gen))
list7.append(next(gen))
list5 = sorted(list5, key=lambda x: list1.index(x[1:2]))
list6 = sorted(list6, key=lambda x: list1.index(x[1:2]))
list7 = sorted(list7, key=lambda x: list1.index(x[1:2]))
print(list5)
print(list6)
print(list7)
for _ in range(3):
print(next(gen), end=' ')