1. 请实现一个装饰器,限制该函数被调用的频率,如10秒一次(借助于time模块,time.time())(面试题,有点难度,可先做其他)

    答案

    # 思路 运行不能用
    import time def wrapper(f):
    t = 0
    def inner(*args,**kwargs):
    nonlocal t
    if time.time() - t > 3:
    ret = f(*args,**kwargs)
    t = time.time()
    return ret
    return inner @wrapper
    def func():
    print('in func') 方法一:
    import time def wrapper(s):
    def inner():
    with open("lasttime",encoding='utf-8',mode='r+')as f1:
    ret1 = f1.readlines()
    start = time.time() if start - float(ret1[-1]) > 10:
    s()
    end = time.time()
    f1.write(f"{end}\n")
    else:
    print(f"调用时间太频繁,还剩余{10 - int(start - float(ret1[-1]))}可以执行")
    return inner @wrapper
    def test_time1():
    print("执行函数")
    test_time1()
    # 方法二
    def timmer(fun):
    count = 0
    def wrapper(*args, **kwargs):
    nonlocal count
    start_time = time.time()
    data = fun(*args, **kwargs)
    end_time = time.time()
    dt = end_time - start_time
    count += 1
    print(f"被调用{count}次,本次调用花费时间{dt}秒。")
    return data
    return wrapper
    @timmer
    def func():
    print("123")
    time.sleep(10)
    func()
    func()
  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
@say_yo
def func():
print("ROCK&ROLL")
func()

答案

HI
Yo
ROCK&ROLL
BYE
  1. 编写装饰器完成下列需求:
  2. 用户有两套账号密码,一套为京东账号密码,一套为淘宝账号密码分别保存在两个文件中。
  3. 设置四个函数,分别代表 京东首页,京东超市,淘宝首页,淘宝超市。
  4. 启动程序后,呈现用户的选项为:

​ 1,京东首页

​ 2,京东超市

​ 3,淘宝首页

​ 4,淘宝超市

​ 5,退出程序

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

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

    答案

    status = {'jd':False, 'taobao':False}
    user_dic = {}
    menu = {1:'京东首页', 2:'京东超市', 3:'淘宝首页', 4:'淘宝超市', 5:'退出程序'}
    for k,v in enumerate(menu,1):
    print(k,menu[v]) def wrapper_out(n):
    def wrapper(f):
    def inner(*args,**kwargs): if status[n] == True :
    ret = f(*args, **kwargs)
    return ret
    else:
    user_input = input('请输入用户名: ').strip()
    pass_input = input('请输入密码: ').strip()
    with open(n,mode='r',encoding='utf-8') as f1:
    for line in f1:
    username,password = line.strip().split('|')
    user_dic[username] = password
    if user_input in user_dic and pass_input == password:
    status[n] = True
    ret = f(*args, **kwargs)
    return ret
    return False return inner
    return wrapper @wrapper_out('jd')
    def jd_index():
    print('京东首页') @wrapper_out('jd')
    def jd_chaoshi():
    print('京东超市') @wrapper_out('taobao')
    def taobao_index():
    print('淘宝首页') @wrapper_out('taobao')
    def taobao_chaoshi():
    print('淘宝超市') def func():
    while 1:
    chiose = input('请选择序号: ').strip()
    if chiose == '1':
    jd_index()
    elif chiose == '2':
    jd_chaoshi()
    elif chiose == '3':
    taobao_index()
    elif chiose == '4':
    taobao_chaoshi()
    elif chiose == '5':
    exit()
    func()
  2. 用递归函数完成斐波那契数列(面试题):

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

答案

def func(n):
if n == 0:
return n
elif n == 1:
return n
else:
return func(n-1) + func(n-2) print(func(6))
# 输出结果
8

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

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

    答案

l1 = [1,1,2,2,3,3,6,6,5,5,2,2]
l2 = []
def func(n):
for i in n:
if n.count(i) >= 2:
if i not in l2:
l2.append(i)
return l2 print(func(l1))
# 输出结果
[1, 2, 3, 6, 5]

python之道15的更多相关文章

  1. Python补充06 Python之道

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录 ...

  2. Python天天美味(15) - Python正则表达式操作指南(re使用)(转)

    http://www.cnblogs.com/coderzh/archive/2008/05/06/1185755.html 简介 Python 自1.5版本起增加了re 模块,它提供 Perl 风格 ...

  3. 彩蛋 Python之道

    彩蛋 Python之道 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 使用下面的语句可以调出Python中的一个彩蛋, impo ...

  4. 【转】Python之道

    作者:Vamei 出处:http://www.cnblogs.com/vamei Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录于PEP 20. 语句执行之后,终端 ...

  5. Python之道(一)之安装Python

    "Python之道"首先介绍一下在windows系统下怎样安装Python开发环境. (1)下载MSI安装文件 进入网址www.python.org,点击Downloads进入下载 ...

  6. 《Think Python》第15章学习笔记

    目录 <Think Python>第15章学习笔记 15.1 程序员定义的类型(Programmer-defined types) 15.2 属性(Attributes) 15.3 矩形( ...

  7. 一入python深似海--python之道

    python社区不乏幽默.先来看"python之道"这首诗. 导入this包: import this 输出是一首诗,这首诗总结了Python的风格,能够指导Python程序猿的编 ...

  8. Python 30道高频面试题及详细解答

    开学啦,开学啦!周末坐地铁的时候看到很多同学推着行李箱,拎着大包小包的穿梭在人群中,哎新的一学期又开始啦,同时也意味着很多同学要准备毕业啦,尤其是准大四,准研三的同学. 今年的招聘行情并不乐观,小公司 ...

  9. python几道简单的算法题

    最近看了python的语法,但是总感觉不知道怎么使用它,还是先来敲敲一些简单的程序吧. 1.题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十 ...

随机推荐

  1. Jenkins+Git+Fastlane+Fir CI集成

    上一篇有讲关于fastlane自动化部署,本篇将会着重讲关于fastlane的实际应用. 目标: 利用自动化jenkins打包工具,自动拉取git仓库代码 不需要通过手动检查修改xcode中项目配置修 ...

  2. CSS——NO.3(CSS选择器)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  3. Pandorabox固件路由器上申请Let's Encrypt证书,为内网里的多个web服务提供SSL支持

    对于家中宽带有公网IP的用户,有时我们需要将路由器内部网络的某些web服务通过端口转发暴露到外网(例如NAS远程访问),但HTTP是明文传输,有被监听的风险:如果在NAS上使用自签名证书,再端口转发, ...

  4. FPGA小白学习之路(6)串口波特率问题的处理

    串口波特率问题的处理 此博文一共包含三个方面的内容:(1)异步串口通信的数据格式:(2)为何串口通信中接收端采样时钟频率是传输的波特率的16倍:(3)串口波特率等概念. 1.异步串口通信的数据格式 串 ...

  5. Golang/Python/PHP带你彻底学会gRPC

    目录 一.gRPC是什么? 二.Protocol Buffers是什么? 三.需求:开发健身房服务 四.最佳实践 Golang 1. 安装protoc工具 2. 安装protoc-gen-go 3. ...

  6. js面试-手写代码实现new操作符的功能

    我们要搞清楚new操作符到底做了一些什么事情? 1.创建一个新的对象 2.将构造函数的作用域赋给新对象(因此this指向了这个新对象) 3.执行构造函数中的代码(为这个新对象添加属性) 4.返回新对象 ...

  7. 由一个项目需求引发的 - textarea中的换行和空格

    当我们使用 textarea 在前台编辑文字,并用 js 提交到后台的时候,空格和换行是我们最需要考虑的问题.在textarea 里面,空格和换行会被保存为/s和/n,如果我们前台输入和前台显示的文字 ...

  8. 前端每日实战:20# 视频演示如何用纯 CSS 为母亲节创作一颗像素画风格的爱心

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/LmrZVX 可交互视频教程 此视频 ...

  9. NSFileHandle的用法(用于读写文件)

    利用NSFilehandle类提供的方法,允许更有效地使用文件. 一般而言,处理文件时都要经历以下三个步骤: 1.打开文件,并获取一个NSFileHandle对象,以便在后面的I/O操作中引用该文件 ...

  10. eclipse代码提示完善

    转载请注明出处:https://www.cnblogs.com/Higurashi-kagome/p/12263267.html 1.参考https://blog.csdn.net/ithomer/a ...