小练习15

'''

1.请实现一个装饰器,限制该函数被调用的频率,如10秒一次(面试题)

import time

l1=[]

def wrapper(f):

def inner(*args, **kwargs): # 第5步

a=time.time()

l1.append(a)

if len(l1)==1:

ret = f(*args,**kwargs)#第7步

return ret

elif l1[-1]-l1[-2]>10:

ret = f(*args, **kwargs) # 第7步

return ret

else:

print('调用频率过大')

return inner # 第3步

@wrapper # zz=weapper(zz) 第一步

def zz(): # 第4步 此时zz 为 inner

print('我被调用了')

zz()

time.sleep(11)

zz()

2.请写出下列代码片段的输出结果:

def say_hi(func):

def wrapper(*args,**kwargs):

print("HI")

ret=func(*args,**kwargs)

print("BYE")

return ret

return wrapper

def say_yo(func):

def wrapper(*args,**kwargs):

print("Yo")

return func(*args,**kwargs)

return wrapper

@say_hi#func=say_hi(func) 此时 外面的 func---wrapper 里面的func--func

@say_yo#func=say_yo(func) 此时 外面的 func---wrapper 里面的func--func

def func():

print("ROCK&ROLL")

func()

3.编写装饰器完成下列需求:

用户有两套账号密码,一套为京东账号密码,一套为淘宝账号密码分别保存在两个文件中。

设置四个函数,分别代表 京东首页,京东超市,淘宝首页,淘宝超市。

启动程序后,呈现用户的选项为:

1,京东首页

2,京东超市

3,淘宝首页

4,淘宝超市

5,退出程序

四个函数都加上认证功能,用户可任意选择,用户选择京东超市或者京东首页,只要输入一次京东账号和密码并成功,则这两个函数都可以任意访问;用户选择淘宝超市或者淘宝首页,只要输入一次淘宝账号和密码并成功,则这两个函数都可以任意访问.

相关提示:用带参数的装饰器。装饰器内部加入判断,验证不同的账户密码。

4.给l1 = [1,1,2,2,3,3,6,6,5,5,2,2]去重,不能使用set集合(面试题)。

5.用递归函数完成斐波那契数列(面试题):

斐波那契数列:1,1,2,3,5,8,13,21..........(第三个数为前两个数的和,但是最开始的1,1是特殊情况,可以单独讨论)

6.用户输入序号获取对应的斐波那契数字:比如输入6,返回的结果为8.

my_input=input('>>>>>')

def func(my_input):

l1=[1,1,]

my_input = int(my_input)

while my_input>=l1[-1]:

if my_input == 1:

print(l1[0:2])

l1.append(l1[-1]+l1[-2])

print(l1[0:-1])

func(my_input)

'''

猜你喜欢

转载自www.cnblogs.com/saoqiang/p/11403054.html