吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3568|回复: 7
收起左侧

[Python 转载] 吐血整理函数习题第二弹

[复制链接]
埃博拉 发表于 2017-12-31 16:50
里面穿插着有点面试题,都是自己打出来的,难免有点错误欢迎指出错误

# 1.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
#方法一
# def func(s):
#     lis = []
#     for i in range(len(s)):
#         if i%2 ==1:
#            lis.append(li)
#     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 login(func):
#     def inner(*args,**kwargs):
#         global flag
#         while not flag:
#             name=input('请输入用户名:')
#             pwd=input('请输入密码:')
#             with open('file','r',encoding='utf-8') as f:
#                 for line in f:
#                     lst=line.strip().split('|')
#                     if name==lst[0] and pwd==lst[1]:
#                          print('登陆成功’)
#                           flag=True
#          whlie flag:
#             ret=func(*args,**kwargs)
#             return ret
#     return inner
# @login
# def name1():
#     print('你好吗?')
# @login
# def name2():
#     print('我还好’)
# name1()
# name2()

免费评分

参与人数 1热心值 +1 收起 理由
kk1212 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

LeiSir 发表于 2017-12-31 17:55
不错谢谢楼主分享
kk1212 发表于 2017-12-31 17:59
 楼主| 埃博拉 发表于 2017-12-31 18:31
kk1212 发表于 2017-12-31 17:59
楼主分析的很细

谢谢,元旦身为狗狗的我没事做就索性我爱学习
leonwqhb 发表于 2017-12-31 20:11
元旦身为狗狗的我没事做就索性我爱学习
onexs 发表于 2017-12-31 21:14
感谢分享
peanuts 发表于 2017-12-31 23:19
多谢 老哥 走心了
吾爱支持 发表于 2018-12-12 20:58
感谢楼主分享……。
收藏了……多做题才能巩固所学
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 22:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表