1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组
例如:[(‘红心’,2),(‘草花’,2), …(‘黑桃’,‘A’)]
def poke(*args): l1 = [] l2 = [] for i in range(2, 11): l2.append(i) l2.extend('JQKA') for j in l2: for k in args: l1.append((k,j)) return l1 print(poke(*['红心','黑桃','方片','梅花']))
2.写函数,传入n个数,返回字典{‘max’:最大值,’min’:最小值}
例如:min_max(2,5,7,8,4)
返回:{‘max’:8,’min’:2}
def num(*args): dic = {} l1 = [] for i in args: l1.append(i) a=max(l1) b=min(l1) dic['max'] = a dic['min'] = b print(dic) num(1,2,3,4,5,6)
3.写函数,专门计算图形的面积
其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
调用函数area(‘圆形’,圆半径) 返回圆的面积
调用函数area(‘正方形’,边长) 返回正方形的面积
调用函数area(‘长方形’,长,宽) 返回长方形的面积
def area():
def 计算长方形面积():
pass
def 计算正方形面积():
pass
def 计算圆形面积():
pass
def area(name,x=0,y=0): def rectangle(): resulf = x*y return resulf def square(): resulf = x ** 2 return resulf def roundness(): resulf = 3.14*(x ** 2) return resulf if name == '长方形': print(rectangle()) elif name == '正方形': print(square()) else: print(roundness()) area('长方形',2,9)
4.写函数,传入一个参数n,返回n的阶乘
例如:cal(7)
计算7*6*5*4*3*2*1
def cal(n): s=1 for i in range(n,0,-1): s = i * s print(s) cal(6)
5、编写下载网页内容的函数,要求功能是:用户传入一个url,函数返回下载页面的结果(升级题)
5.1.为题目3编写装饰器,实现缓存网页内容的功能:(升级题)
具体:实现下载的页面存放于文件中,如果网页有对应的缓存文件,就优先从文件中读取网页内容,否则,就去下载,然后存到文件中
6给每个函数写一个记录日志的功能,
功能要求:每一次调用函数之前,要将函数名称,时间节点记录到log的日志中。
所需模块:
import time
struct_time = time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time))
import time from functools import wraps def wrapper(timmer): @wraps(timmer) def inner(): struct_time = time.localtime() now_time=time.strftime("%Y-%m-%d %H:%M:%S", struct_time) name ='Mr.who' with open('log', encoding='utf-8', mode='a')as f1: f1.write('%s在%s调用了%s ,%s' % (name,now_time,timmer.__name__,timmer.__doc__)) ret = timmer() return ret return inner @wrapper def timmer(): ''' 此函数是一个函数 :return: ''' print('好家伙!') timmer()
7、编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码
flag = True def login(f): def inner(*args,**kwargs): global flag if flag: username = input("请输入用户名").strip() pwd = input("请输入密码").strip() with open('log',encoding='utf-8',)as f1: for i in f1: if username in i and pwd in i: print('登录成功') f() flag=False break else: f() return inner @login #func1=login(func1) def func1(): print('呵呵') @login #func2=login(func2) def func2(): print('哈哈') func1() func2()
8,在编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码。这个作业之上进行升级操作:
设置两套密码,一套为京东账号密码,一套为淘宝账号密码保存在文件中。
设置四个函数,分别代表 京东首页,京东超市,淘宝首页,淘宝超市。
循环打印四个选项:东首页,京东超市,淘宝首页,淘宝超市。
供用户选择,用户输入选项后,执行该函数,四个函数都加上认证功能,只要登陆成功一次,在选择其他函数,后续都无需输入用户名和密码。
相关提示:用带参数的装饰器。装饰器内部加入判断,验证不同的账户密码。