函数装饰器练习题


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}......] 并计算出总价钱。

 


1

2

3

4

5

6

7

2.有如下文件:<br>------------------------------------------------------------

alex是老男孩python发起人,创建人。

alex其实是人妖。

谁说alex是sb?

你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。

------------------------------------------------------------

将文件中所有的alex都替换成大写的SB。

 


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}......]

并计算出总价钱。

 


1

2

3

4

5

6

7

8

4.文件内容:

序号     部门      人数      平均年龄      备注

1       python    30         26         单身狗

2       Linux     26         30         没对象

3       运营部     20         24         女生多

通过代码,将其构建成这种数据类型:

[{‘序号‘:‘1‘,‘部门‘:Python,‘人数‘:30,‘平均年龄‘:26,‘备注‘:‘单身狗‘},

......]

 


1

5.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。

 


1

6.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5

 


1

7.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

 


1

8.写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。

 


1

9.写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容,并返回结果。

 


1

2

3

10.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

dic = {"k1""v1v1""k2": [11,22,33,44]}

PS:字典中的value只能是字符串或列表

 


1

11.写函数,接收两个数字参数,返回比较大的那个数字。

 


1

12.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作.

 


1

13.写一个函数完成三次登陆功能,再写一个函数完成注册功能

 


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中,每次添加成功后,打印出刚添加的用户名,密码。

 


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": ["喊麦""街舞"]},

]

 


1

2

3

4

16.实现一个整数加法计算器:

如:content = input(‘请输入内容:’)  # 如用户输入:5+8+7....(最少输入两个数相加),

然后进行分割再进行计算,将最后的计算结果添加到此字典中(替换None):

dic={‘最终计算结果’:None}。

 


1

17.查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表

 


1

2

18.补充代码(从已有的代码下面继续写):

有如下值li= [11,22,33,44,55,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

 


1

19.计算用户输入内容中索引为奇数并且对应的元素为数字的个数(没有则个数为零)

 


1

20.分别使用while循环,和for循环打印1-2+3-4+5.......+99的结果

 


1

21.有列表li = [‘alex’,’wusir’,’rain’],通过操作该列表构造一个字符串s=’alexwusirrain

 


1

2

22.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组

例如:[(‘红心’,2), (‘草花’,2), …(‘黑桃,‘A’)]

 


1

2

23.写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}

例如:min_max(2,5,7,8,4) 返回:{‘max’:8,’min’:2}

 


1

2

3

4

5

24.写函数,专门计算图形的面积

其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积

调用函数area(‘圆形’,圆半径)  返回圆的面积

调用函数area(‘正方形’,边长)  返回正方形的面积

调用函数area(‘长方形’,长,宽)  返回长方形的面积

 


1

25.写函数,传入一个参数n,返回n的阶乘。例如: cal(7) 计算7 * 6 * 5 * 4 * 3 * 2 * 1

 


1

26.编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果

 


1

2

27.实现下载的页面存放于文件中,如果文件内有值(文件大小不为0),就优先从文件中读取网页内容,否则,就去下载,然后存到文件中

扩展功能:用户可以选择缓存介质/缓存引擎,针对不同的url,缓存到不同的文件中

 


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))

 


1

29.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码

 


1

2

3

4

5

6

30.在编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码。这个作业之上进行升级操作:

    设置两套密码,一套为京东账号密码,一套为淘宝账号密码保存在文件中。

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

    循环打印四个选项:东首页,京东超市,淘宝首页,淘宝超市。

    供用户选择,用户输入选项后,执行该函数,四个函数都加上认证功能,只要登陆成功一次,在选择其他函数,后续都无需输入用户名和密码。

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

 


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),退出程序为结束整个程序运行。

 

原文地址:https://www.cnblogs.com/valorchang/p/11282105.html

时间: 2024-11-10 11:11:18

函数装饰器练习题的相关文章

函数嵌套 ,名称空间与作用域 ,闭包函数 ,装饰器 ,迭代器, 生成器 三元表达式,列表解析,生成器表达式 递归与二分法, 内置函数

函数嵌套名称空间与作用域闭包函数装饰器迭代器生成器三元表达式,列表解析,生成器表达式递归与二分法内置函数--------------------------------------------函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数def max(x,y): if x>y: return x else: return ydef max1(a,b,c,d): res=max(a,b) res2=max(res,c) res3=ma

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

python函数装饰器

学习装饰器前提需要了解高阶函数,函数嵌套,函数闭包 python函数装饰器,顾名思义就是装饰函数,为函数添加新功能的的一种方式. 为什么要使用装饰器呢? 因为函数在运行时,如果不使用装饰器对函数进行功能添加,需要修改函数源代码,这样修改无疑会增加程序的冗余和复杂性,也不便于程序员对其进行修改.使用装饰器,可以在不改变函数源代码和调用方式的前提下,使用语法糖@装饰器,对函数功能进行添加. 装饰器本质上就是一个函数. 我们使用一个简单的例子来实现: import time #这是一个装饰器函数名为t

MyPython--&gt;进阶篇--&gt;匿名函数 装饰器

当我们在传入函数时,有些时候,不需要显示地定义函数,直接传入匿名函数更方便 匿名函数 lambda x :x+x  实际就是 def s(x): return x+x 关键字 lambda 表示匿名函数,冒号前面的x表示 函数的参数 匿名函数有一个限制,就是只能有一个表达式,不用写return ,返回值就是该 表达式的结果 匿名函数没有名字,不必担心函数名冲突 也可以赋值给变量  在调用,也可以返回一个匿名函数 装饰器 在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运

Python 函数装饰器入门

原文链接: --> A guide to Python's function decorators Python功能强劲,语法表现力强,尤其装饰器深深的吸引着我.在设计模式中,装饰器可以在不使用子类的情况下,动态的改变函数,方法以及类的功能.这个功能非常有用,特别在你想扩展函数的功能同时又不想改变原有的函数.的确,我们任意的实现装饰器设计模式,但是,python通过提供简单的语法和特性让装饰器的实现变的如此简单. 在本文中,我将用一组例子来深入浅入python 函数装饰器的功能,所有的例子都是在

【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

Python高阶函数与函数装饰器-day4

上节回顾 高阶函数 闭包函数 函数装饰器 模块导入 一.上节回顾 Python2与Python3字符编码问题,不管你是初学者还是已经对Python的项目了如指掌了,都会犯一些编码上面的错误.我在这里简单归纳Python3和Python2各自的区别. 首先是Python3-->代码文件都是用utf-8来解释的.将代码和文件读到内存中就变成了Unicode,这也就是为什么Python只有encode没有decode了,因为内存中都将字符编码变成了Unicode,而Unicode是万国码,可以"

C++函数装饰器

今天在网上看到一个python实现的函数装饰器,尝试用C++11实现了一下,最后很粗糙的完成了,代码如下. 函数装饰器:接受一个函数.将此函数进行一些装饰,成为另一个函数.新生产的函数具有原函数的功能,另外还会做一些其他的功能.返回新函数. 由于Python中一切皆对象,把类型也当成对象看待,把函数的参数和返回值也当成对象看待,所以很容易就实现出来.而c++是一门静态类型语言,编译器做类型检查,执行期间没有类型相关的信息(除了RTTI).所以实现起来比较麻烦,只能使用模板.函数指针.可变参数.函

函数装饰器和闭包(一)

装饰器基础知识 装饰器是可调用的对象,其参数是另一个函数(被装饰的函数),装饰器可能会处理被装饰的函数,然后将它返回,或者将其替换成另一个函数或可调用对象 def deco(func): def inner(): print("running innner()") return inner # <1> @deco def target(): # <2> print("running target()") target() # <3>