练习一:定义一个函数,接收任意3个数字的输入,并按顺序从小到大输出
def Sort_h(*args):
return sorted(args)
a = [10,8,19]
print(Sort_h(*a))
输出结果:
练习二:要求创建一个函数,它可以接收,位置参数,不定长位置参数,不定长关键词参数,并按要求输出。
输入班级名,班级特色(如’勤奋’,’颜值高’)等等不同特色,班级不同同学的姓名与年龄。
要求输出,班级名,班级特色,班级成员,班级成员的平均年龄。
def student(classes,*class_name,**cracter):
sum = 0
print( '班级名为:',classes)
for item in class_name:
print( '班级特色是:',item)
for name,age in cracter.items():
print( '学生姓名:%s,年龄:%s'%(name,age))
sum += age
avarage = sum/len(cracter)
print( '平均年龄为:',avarage)
student('三年二班','勤奋','帅',zs=18,ww=20,ls=19)
输出结果:
练习三:使用reduce函数实现找出一组数字列表中的最大值
from functools import reduce
l1 = [1,2,10,56,85,2,65,14]
print( reduce(lambda x,y:max(x,y) ,l1))
输出结果:
练习四:求1000以内能同时被3和7整除的数有哪些。要求使用map与filter函数
l1 = list(range(1,1000))
def foo():
return list(filter(lambda x:True if x%3 ==0 and x%7 == 0 else False,l1))
print(foo())
输出结果:
练习五:体现闭包的思想,创建一个三层嵌套的函数,并调用。
def foo1(num_in_functions):
print('num_in_functions目前在foo1中',num_in_functions)
def foo2():
print('num_in_functions目前在foo2中',sorted(num_in_functions))
def foo3():
return min(num_in_functions)
return foo3
return foo2
foo1([1,5,2,8,7])()()
输出结果:
练习六:
①请以round函数,定义一个偏函数roundN,调用为输入一个数字N,返回圆周率后N位的数字
提示:import math
math.pi
② 请以sorted函数,定义一个偏函数sortedDESC,结果为输入一个序列,返回为按降序排列后序列。
def roundN(num):
return round(math.pi,num)
print(roundN(10))
l1 = [1,5,6,4,2]
def reverse_m(l1):
return sorted(l1,reverse = True)
print(reverse_m(l1))
输出结果:
练习七:要求使用map与filter函数,输出一个输入字符串里每个字符出现的次数
提示:结合dict使用实现
s1 = input('请输入字符串:')
def count_s(string):
return dict(map(lambda x:(x,string.count(x)),string))
print(count_s(s1))
输出结果:
练习八:创建一个能够快递排序的递归函数
l1 = list(input('输入您要排序的数字:'))
l2 = []
k = 0
def sort_my(l1):
if len(l1) == 1:
l2.append(l1[0])
else:
k = l1.index(min(l1))
l2.append(l1[k])
l1.pop(k)
sort_my(l1)
return l2
sort_my(l1)
输出结果:
练习九;创建一个能打印一个字典中包含所有字典对象的递归函数
dic= {"北京": {"东城": ["天坛", "东单", "王府井"],"西城": ["西单", "军博", "复兴门"],},"上海": {"杨浦":['五角场','政通路','世界路’]},"天津":['天津港']}
def printdict(d):
for key,value in d.items():
print('\n'+key+':')
if type(value) == dict:
printdict(value)
else:
print(value)
dic={"北京":{"东城": ["天坛", "东单", "王府井"],"西城": ["西单", "军博", "复兴门"],},
"上海":{"杨浦":['五角场','政通路','世界路']},
"天津":['天津港']}
printdict(dic)
输出结果:
练习十:编写一个生成器,实现fib数列的效果
def fib(num):
n,a,b = 0,0,1
while n<num:
yield b
a,b = b,a+b
n +=1
for n in fib(5):
print(n)
输出结果:
练习十一:创建一个能接收不定长位置参数(数字)函数,返回是所有参数的和。
现要求在这个函数每次调用时都有进行屏幕打印(该函数被调用)。
请在不改动这个函数内部及调用的前提下实现。
def print_name(func):
def inner(*args,**kwargs):
print '你已调用该函数'
return func(*args,**kwargs)
return inner
@print_name
def summary(*args):
n = 0
sum = 0
for n in args:
sum += n
return sum
print summary(1,3,5,6,8,2,4)
输出结果: