####################################################################################
# 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(‘新年好‘)
函数习题
Posted 埃博拉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数习题相关的知识,希望对你有一定的参考价值。
以上是关于函数习题的主要内容,如果未能解决你的问题,请参考以下文章
笨办法学 Python(第三版)习题 18: 命名变量代码函数
笨办法学 Python(第三版)习题 18: 命名变量代码函数