##################################################################################### 1.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。#方法一# def func(s):# lis = []# for i in range(len(s)):# if i%2 ==1:# lis.append(li[i])# return lis# li = (1,2,3,4,5)# print(func(li))#方法二 多此一举我为了回顾下拆分组合还有类型调用# def func(*args):# args1 = list(args[1::2])# return args1# li = (1,2,3,4,5)# print(func(*li))# 方法二简便方法 也是通用方法# def func(s):# lis = s[1::2]# lis1 = list(lis)# return lis1# s = (1,2,3,4,5)# print(func(s)) # 2.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。# def func(s):# if len(s)>5:# return True# else :# return False# s = ‘12377775‘# print(func(s))# #这两个一句话就能出来# def func(s):# num = 0# for i in s:# num += 1# return True if num > 5 else False # 3.写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。# def func(s):# if len(s)>2:# s = s[:2]# return s# s = [1,2,3,4,5]# print(func(s)) # def list_back(user):# result=[]# if len(user)>2:# result.append(user[0])# result.append(user[1])# return result# a=[1,2,3,4,5,6]# print(list_back(a)) # 4.写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数# def func(i):# num = 0# num1 = 0# num2 = 0# num3 = 0# for s in i:# if s.isdigit():# num += 1# elif s.isalpha():# num1 += 1# elif s.isspace():# num2 += 1# else:# num3 += 1# return num,num1,num2,num3## s = input(‘请输入内容‘)# a,b,c,d = func(s)# print(a,b,c,d)# print(‘数字为{}个,字母为{}个,空格为{}个,其他为{}个‘.format(a,b,c,d)) # 一、习题讲解## 1、写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组。例如:[(‘红心’,2), (‘草花’,2), …(‘黑桃,‘A’)]# lis = []# lis1 = []# dic = {}# s = (‘方块‘,‘梅花‘,‘红桃‘,‘黑桃‘)# num1 = (‘J‘,‘Q‘,‘K‘,‘A‘)# for i in range(2,11):# lis1.append(i)# for j in num1:# lis1.append(j)# for i in lis1:# dic = dic.fromkeys(s,i)# for x in dic.items():# lis.append(x)# print(lis)# 方法二# def func():# lis = []# lis1 = []# s = (‘方块‘,‘梅花‘,‘红桃‘,‘黑桃‘)# num1 = (‘J‘,‘Q‘,‘K‘,‘A‘)# for i in range(2,11):# lis1.append(i)# for j in num1:# lis1.append(j)# for i in lis1:# for x in s:# lis.append((x,i))# return lis# print(func()) # 2、写函数,传入n个数,返回字典:{‘max’:最大值,’min’:最小值}。例如: min_max(2, 5, 7, 8, 4),返回: {‘max’:8,’min’:2}# def dic_num(*args):# dic = {}# args = list(args)# args.sort()# dic[‘max‘] = args[-1]# dic[‘min‘] = args[0]# return dic# s = (1,2,5,6,7,8)# print(dic_num(*s))# 方法二# def dic_num(*args):# num_min = args[0]# num_max = args[0]# for i in args:# if num_max < i:# num_max = i# if num_min > i:# num_min = i# return {‘max‘:num_max,‘min‘:num_min}# s = (1,2,5,6,7,8)# print(dic_num(*s)) # 3、写函数,专门计算图形的面积。其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积## 调用函数area(‘圆形’, 圆半径) 返回圆的面积# 调用函数area(‘正方形’, 边长) 返回正方形的面积# 调用函数area(‘长方形’, 长,宽) 返回长方形的面积# #方法一:# import math# def func(name,*args):# def area_yuan(args):# return args * args * math.pi# def area_fang(args):# return args/4 * args/4# def area_chang(x,y): #必须接收两个值# return x * y# if name == ‘长方形‘:# return area_chang(*args)# if name == ‘正方形‘:# return area_fang(*args)# if name == ‘圆形‘:# return area_yuan(*args)# print(func(‘长方形‘, 3, 4))# print(func(‘圆形‘, 3))# print(func(‘正方形‘, 4))# 方法二# import math# def area(name,*args):# def areas_rectangle(x,y):# return x*y## def area_square(x):# return x**2## def area_round(r):# return math.pi*r*r## if name=="圆形":# return area_round(*args)# elif name=="正方形":# return area_square(*args)# elif name=="长方形":# return areas_rectangle(*args)## print(area(‘长方形‘, 3, 4))# print(area(‘圆形‘, 3))# print(area(‘正方形‘, 3))# 复制代码# 复制代码# #方法二(eval)# import math# def area(name,*args):# def rectangle(x,y):# return x*y## def square(x):# return x**2## def round(r):# return math.pi*r*r# if name in locals():# return eval(name)(*args)# print(area(‘rectangle‘,13,2))# 4、写函数,传入一个参数n,返回n的阶乘。例如: cal(7) 计算7 * 6 * 5 * 4 * 3 * 2 * 1# def cal(num):# y = 1# for i in range(num,1,-1): #可以是0或1# y = y*i# return y# print(cal(7)) # 5、斐波那契数列:[1,1,2,3,5,8,13,...],每个元素为前两个元素之和## (1)当要求长度小于20的时候:# l = [1,1]# while len(l) < 20:# l.append(l[-1]+l[-2])# print(l)## l = [1,1]# while l[-1] < 20000:# l.append(l[-2]+l[-1])# print(l)###################################################################### 二、函数装饰器## 在不修改原函数的内容及调用方式的前提下,对原函数进行功能扩展## 1、计算函数执行时间实例## import time# def timmer(f):# def inner(*args,**kwargs):# start = time.time()# set = f(*args,**kwargs)# print(time.time()-start)# return set# return inner# @timmer# def func(x,y):# time.sleep(0.1) #沉睡0.1秒 系统方便计数# print(‘hollow world‘)# return x**y# print(func(4,6)) # 2、打印当前正在调用函数名的实例## def fun(f):# def inner(*args,**kwargs):# set = f(*args,**kwargs)# with open(‘函数调用实例‘,‘a‘,encoding=‘utf-8‘)as f1:# f1.write(f.__name__ + ‘|‘)# print(f.__name__)# return set# return inner# @fun# def func():# print(‘wahha‘)# func()# @fun# def funcf():# print(‘efwef‘)# funcf() # 编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码# flag = False# def func(f):# def inner(*args,**kwargs):# global flag# if flag:# set = f(*args, **kwargs)# return set# else:# with open(‘函数调用实例‘,‘r‘,encoding=‘utf-8‘) as f1:# s =f1.readline()# s = s.split(‘|‘)# username = input(‘请输入用户名‘)# password = input(‘请输入密码‘)# if s[0] == username and s[1] == password:# print(‘登录成功‘)# flag = True# set = f(*args, **kwargs)# return set# else:# print(‘登录失败‘)# return inner# @func# def fun():# print(‘新年好‘)# fun()# @func# def fun4():# print(‘新年好‘)
原文地址:https://www.cnblogs.com/Ebola-/p/8158374.html
时间: 2024-10-21 21:52:59