函数装饰器练习题

Posted 不夜男人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数装饰器练习题相关的知识,希望对你有一定的参考价值。

1
2
3
4
5
6
7
1.文件a.txt内容:每一行内容分别为商品名字,价钱,个数。
apple 10 3
tesla 100000 1
mac 3000 2
lenovo 30000 3
chicken 10 3
通过代码,将其构建成这种数据类型:[{‘name‘:‘apple‘,‘price‘:10,‘amount‘:3},{‘name‘:‘tesla‘,‘price‘:1000000,‘amount‘:1}......] 并计算出总价钱。
技术图片 View Code
1
2
3
4
5
6
7
2.有如下文件:<br>------------------------------------------------------------
alex是老男孩python发起人,创建人。
alex其实是人妖。
谁说alex是sb?
你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
------------------------------------------------------------
将文件中所有的alex都替换成大写的SB。
技术图片 View Code
1
2
3
4
5
6
7
8
9
3.文件a1.txt内容:每一行内容分别为商品名字,价钱,个数。
文件内容:
name:apple price:10 amount:3 year:2012
name:tesla price:100000 amount:1 year:2013
 
通过代码,将其构建成这种数据类型:
[{‘name‘:‘apple‘,‘price‘:10,‘amount‘:3},
{‘name‘:‘tesla‘,‘price‘:1000000,‘amount‘:1}......]
并计算出总价钱。
技术图片 View Code
1
2
3
4
5
6
7
8
4.文件内容:
序号     部门      人数      平均年龄      备注
1       python    30         26         单身狗
2       Linux     26         30         没对象
3       运营部     20         24         女生多
通过代码,将其构建成这种数据类型:
[{‘序号‘:‘1‘,‘部门‘:Python,‘人数‘:30,‘平均年龄‘:26,‘备注‘:‘单身狗‘},
......]
技术图片 View Code
1
5.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
技术图片 View Code
1
6.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5
技术图片 View Code
1
7.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
技术图片 View Code
1
8.写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。
技术图片 View Code
1
9.写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。
技术图片 View Code
1
2
3
10.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1""v1v1""k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
技术图片 View Code
1
11.写函数,接收两个数字参数,返回比较大的那个数字。
技术图片 View Code
1
12.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作.
技术图片 View Code
1
13.写一个函数完成三次登陆功能,再写一个函数完成注册功能
技术图片 View Code
1
2
3
4
5
6
7
8
9
10
11
12
14.模拟公司hr录入员工账号密码的程序。
1),员工的账号密码存储在这种数据类型中:
user_list = [
    {‘username‘:‘barry‘,‘password‘:‘1234‘},
    {‘username‘:‘alex‘,‘password‘:‘asdf‘},
    .........
             ]
2)非法字符模板:board = [‘张三‘,‘李小四‘,‘王二麻子‘]
3)Hr输入用户名,密码(可持续输入,如果想终止程序,那就在输入用户名时输入Q或者q退出程序),
在Hr输入用户名时,检测此用户名是否有board里面的非法字符,如果有非法字符,
则将非法字符替换成同数量的*(如王二麻子替换成****),然后添加到user_list中,
如果没有非法字符,则直接添加到user_list中,每次添加成功后,打印出刚添加的用户名,密码。
技术图片 View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15.按要求完成下列转化(不要按照索引去做)。
list3 = [
    {"name""alex""hobby""抽烟"},
    {"name""alex""hobby""喝酒"},
    {"name""alex""hobby""烫头"},
    {"name""alex""hobby""Massage"},
    {"name""wusir""hobby""喊麦"},
    {"name""wusir""hobby""街舞"},
]
如何把上面的列表转换成下方的列表?
list4 = [
    {"name""alex""hobby_list": ["抽烟""喝酒""烫头""Massage"]},
    {"name""wusir""hobby_list": ["喊麦""街舞"]},
]
技术图片 View Code
1
2
3
4
16.实现一个整数加法计算器:
如:content = input(‘请输入内容:’)  # 如用户输入:5+8+7....(最少输入两个数相加),
然后进行分割再进行计算,将最后的计算结果添加到此字典中(替换None):
dic={‘最终计算结果’:None}。
技术图片 View Code
1
17.查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表
技术图片 View Code
1
2
18.补充代码(从已有的代码下面继续写):
有如下值li= [11,22,33,44,55,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
技术图片 View Code
1
19.计算用户输入内容中索引为奇数并且对应的元素为数字的个数(没有则个数为零)
技术图片 View Code
1
20.分别使用while循环,和for循环打印1-2+3-4+5.......+99的结果
技术图片 View Code
1
21.有列表li = [‘alex’,’wusir’,’rain’],通过操作该列表构造一个字符串s=’alexwusirrain
技术图片 View Code
1
2
22.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
例如:[(‘红心’,2), (‘草花’,2), …(‘黑桃,‘A’)]
技术图片 View Code
1
2
23.写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}
技术图片 View Code
1
2
3
4
5
24.写函数,专门计算图形的面积
其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
调用函数area(‘圆形’,圆半径)  返回圆的面积
调用函数area(‘正方形’,边长)  返回正方形的面积
调用函数area(‘长方形’,长,宽)  返回长方形的面积
技术图片 View Code
1
25.写函数,传入一个参数n,返回n的阶乘。例如: cal(7) 计算7 * 6 * 5 * 4 * 3 * 2 * 1
技术图片 View Code
1
26.编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果
技术图片 View Code
1
2
27.实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
扩展功能:用户可以选择缓存介质/缓存引擎,针对不同的url,缓存到不同的文件中
技术图片 View Code
1
2
3
4
5
6
28.给每个函数写一个记录日志的功能,
功能要求:每一次调用函数之前,要将函数名称,时间节点记录到log的日志中。
所需模块:
import time
struct_time = time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time))
技术图片 View Code
1
29.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
技术图片 View Code
1
2
3
4
5
6
30.在编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码。这个作业之上进行升级操作:
    设置两套密码,一套为京东账号密码,一套为淘宝账号密码保存在文件中。
    设置四个函数,分别代表 京东首页,京东超市,淘宝首页,淘宝超市。
    循环打印四个选项:东首页,京东超市,淘宝首页,淘宝超市。
    供用户选择,用户输入选项后,执行该函数,四个函数都加上认证功能,只要登陆成功一次,在选择其他函数,后续都无需输入用户名和密码。
相关提示:用带参数的装饰器。装饰器内部加入判断,验证不同的账户密码。 
技术图片 View Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
31.写程序完成下列功能:
1),启动程序,首页面应该显示成如下格式:
    欢迎来到博客园首页
    1:请登录
    2:请注册
    3:文章页面
    4:日记页面
    5:评论页面
    6:收藏页面
    7:注销
    8:退出程序
2),用户输入选项,3~6选项必须在用户登录成功之后,才能访问成功。
3),用户选择登录,用户名密码从register文件中读取验证,三次机会,没成功则结束整个程  序运行,成功之后,可以选择访问3~6项,访问页面之前,
必须要在log文件中打印日志, 日志格式为-->用户:xx 在xx年xx月xx日 执行了 %s函数,访问页面时,页面内容为:欢  迎xx用户访问评论(文章,日记,收藏)页面
4),如果用户没有注册,则可以选择注册,注册成功之后,可以自动完成登录,然后进入首页选择。
5),注销用户是指注销用户的登录状态,使其在访问任何页面时,必须重新登录。
6),退出程序为结束整个程序运行。
技术图片 View Code

 

以上是关于函数装饰器练习题的主要内容,如果未能解决你的问题,请参考以下文章

关于装饰器的两个小练习

闭包函数,装饰器

函数装饰器迭代器内置方法总练习题

python练习题之一个记录函数运行的装饰器

9.装饰器

python3练习-装饰器