python基础升级版第三课练习与作业


习题1:定义一个函数,接收任意3个数字的输入,并按顺序从小到大输出
def foo():    
    a=input()
    b=input()
    c=input()
    l1=[int(a),int(b),int(c)]
    print(sorted(l1))
foo()


习题2:要求创建一个函数,它可以接收,位置参数,不定长位置参数,不定长关键词参数,并按要求输出
def classinf(banji,*args,**kwargs):
    d1={}
    sum=0
    print('班级:',banji)
    for item in args:
        print('特色:',item)
    for key,value in kwargs.items():
        d1[key]=value
        sum += value
        print (key,':',value)
    print('该班平均年龄',':',sum/(len(d1)))
    
classinf('一班','理科班','男生多',小明=20,小刚=21,小王=20)
classinf('二班','文科班','女生多','美女多',小花=20,小红=21,小燕=20)


习题3:使用reduce函数实现找出一组数字列表中的最大值
from functools import reduce
reduce(lambda a,b:max(a,b),[2,3,6,4,7,9,9,76,55,])


习题4:求1000以内能同时被3和7整除的数有哪些。
l2=list(range(1,1000))
def foo(x):
        return x%3==0 and x%7==0
list(filter(foo, l2))


习题4:体现闭包的思想,创建一个三层嵌套的函数,并调用。
def foo1(x):
    a=1
    a=a+x
    print(a)
    def foo2():
        b=10
        print(b+x)
        def foo3():
            c=100
            print(c+x)
        return foo3
    return foo2
foo1(2)()()


习题5:圆周率
a=int(input("Input a num:")) 
import math
def roundN(i):
    return round(math.pi,i)
roundN(a)

习题5:降序偏函数
l1=list(input())
def sortedDESC(l1):
    return sorted(l1,reverse=True)
sortedDESC(l1)


习题6:输出一个输入字符串里每个字符出现的次数
s=input()
dict(map(lambda x:(x,s.count(x)),s))


习题7:创建一个能够快递排序的递归函数
l=list(input())
l2=[]
k=0
def foo(l):    
    if len(l)==1:
        l2.append(l[0])
    else:
        k=l.index(min(l))
        l2.append(l[k])
        l.pop(k)
        foo(l)
    return l2
foo(l)


习题8:创建一个能打印一个字典中包含所有字典对象的递归函数
d2={'北京': {'东城': ['天坛', '东单',],'西城': ['西单', '军博',],},'上海': {'杨浦':['五角场','政通路','世界路']},'天津':['天津港']}
def foo(d):
    if isinstance(d,dict) : 
        for key in d: 
            if isinstance(d[key],dict) : 
                print('  '+key+':'+'{')
                foo(d[key])
            else:
                print('\n'+'  '+key+':'+str(d[key])+'\n')   
                foo(d[key])
        print('}')
        
print('dic={'+'\n')
foo(d2)


习题9:编写一个生成器,实现fib数列的效果
l1=[0,1]
k=0
def foo(num):
    for x in range(num):
        k=l1[-1]+l1[-2]
        l1.append(k)
        yield x
    print(l1)
g1=foo(10)


作业
def foo(func):
    def inner():
        print('结果:',func())
    return func

@foo
def mysum(*args):
    return sum(args)

mysum(2,3,4,6)
已邀请:

ClownFish

赞同来自:


第一次作业, 继续 呀~~~~

圆周率和sorted那题,没用到偏函数

快排需要体现,分治的思路。。。

最后一题装饰器,貌似没有装饰出来呀~~~

要回复问题请先登录注册

返回顶部