-
Escribir un @tag de decorador requiere las siguientes funciones:
def tag(name): def tag_(func): def new_func(*args,**kwargs): result=func(*args,**kwargs) if type(result) != str: return f'<{name}>{result}</{name}>' return result return new_func return 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>
-
Escribe un decorador para la función y realiza diferentes operaciones según los parámetros.
''' flag为 True,则 让原函数执行后返回值加 100,并返回。 flag为 False,则 让原函数执行后返回值减 100,并返回。 ''' def change(flag): def change_(func): def new_func(*args,**kwargs): result = func(*args, **kwargs) if type(result) in (int,float)l: if flag : return result+100 else: return result-100 return result return new_func return change_ @change(True) def _(): return 10 result_=_() print(result_)
-
Escriba un decorador para la función y realice las operaciones numéricas correspondientes en el valor de retorno de la función original de acuerdo con diferentes operadores y datos.
'''例如: 运算符是+,数据是 100, 就对原函数的返回值进行加100的处理 运算符是-, 数据是 20,就对原函数的返回值进行减20的处理 运算符是*, 数据是 3, 就对原函数的返回值进行乘3的处理 运算符是/, 数据是 2, 就对原函数的返回值进行除2的处理 其他情况的符号不做处理''' def change(operator:str,num): def change_(func): def new_func(*args,**kwargs): result = func(*args, **kwargs) if type(reult) not in (int,float): return result if operator =='+': return result+num elif operator == '-': return result - num elif operator =='/': return result/num elif operator =='*': return result*num else: return result return new_func return change_ @change('+',10) def _(): return 10 result_=_() print(result_)
-
Escriba un distribuidor Doudizhu
num_board = {
2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A'}
board_w = {
'大王', '小王'}
flower_color = {
'梅花', '黑桃', '方块', '红桃'}
def deal_cards():
# 准备一副牌
# 洗牌(打乱顺序)(集合是无序的,可以放在集合里,也可以导入模块,调用shuffle函数打乱)
boards = {
f"{j}{i}" for i in num_board for j in flower_color}
boards =iter( board_w | boards)
# 发牌
player1=[]
player2=[]
player3=[]
for _ in range(17):
player1.append(next(boards))
player2.append(next(boards))
player3.append(next(boards))
# 返回分配好的4组牌
return f'player1:{player1}, player2:{player2}, player3:{player3},地主牌:{list(boards)}'
print(deal_cards())