• 函数习题


    ####################################################################################
    # 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('新年好')
  • 相关阅读:
    【BZOJ4890】[TJOI2017]城市(动态规划)
    【BZOJ4887】[TJOI2017]可乐(矩阵快速幂)
    【BZOJ4873】[六省联考2017]寿司餐厅(网络流)
    【BZOJ4868】[六省联考2017]期末考试(贪心)
    【Luogu3733】[HAOI2017]八纵八横(线性基,线段树分治)
    【Luogu3732】[HAOI2017]供给侧改革(Trie树)
    【Luogu3731】[HAOI2017]新型城市化(网络流,Tarjan)
    【BZOJ5332】[SDOI2018]旧试题(数论,三元环计数)
    28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?
    基础学习day07---面向对象三---继承,接口与 抽象类
  • 原文地址:https://www.cnblogs.com/Ebola-/p/8158374.html
Copyright © 2020-2023  润新知