python入门第三课练习

练习一:定义一个函数,接收任意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)

输出结果:

猜你喜欢

转载自blog.csdn.net/weixin_42446330/article/details/81145132