-
写一个装饰器@tag要求满足如下功能:
def tag(name): def wu_func(func): def new_func(*args, **kwargs): result = func(*args, **kwargs) return f'<{name}>{result}</{name}>' return new_func return wu_func @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>@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 flag_func(flag): def test1(func): def new_func(*args, **kwargs): result = func(*args, **kwargs) if flag: return result+100 else: return result-100 return new_func return test1 @flag_func(flag=False) def num1(a, b): return a*b print(num1(10, 20))
-
为函数写一个装饰器,根据不同的运算符和数据对原函数的返回值进行相应的数值操作
例如: 运算符是+,数据是 100, 就对原函数的返回值进行加100的处理 运算符是-, 数据是 20,就对原函数的返回值进行减20的处理 运算符是*, 数据是 3, 就对原函数的返回值进行乘3的处理 运算符是/, 数据是 2, 就对原函数的返回值进行除2的处理 其他情况的符号不做处理 def operator(a, b): def test1(func): def new_func(*args, **kwargs): result = func(*args, **kwargs) if a not in ('+', '-', '*', '/'): return result elif a == '+': return result+b elif a == '-': return result-b elif a == '*': return result*b elif a == '/': return result/b return new_func return test1 @operator(input('请输入运算符:'),int(input('请输入数值:'))) def num1(a, b): return a*b print(num1(10, 20))
-
写一个斗地主发牌器
import random
def card():
for x in ('♣', '♦', '♠', '♥'):
for y in range(1, 14):
yield f'{x}{y}'
li = list(card())
li.extend(['king', 'kinglet'])
random.shuffle(li)
pai = iter(li)
def deal():
a = []
b = []
c = []
# for x in range(17):
# a.append(next(pai))
# b.append(next(pai))
# c.append(next(pai))
# d = list(pai)
a = (x for x in li[:17])
b = (x for x in li[17:34:])
c = (x for x in li[34:51:])
d = (x for x in li[51:54:])
return list(a), list(b), list(c), list(d)
print(deal())