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


练习1:定义一个函数,接收任意3个数字的输入,并按顺序从小到大输出
def sort1(*l1):
    new_l1=sorted(l1)
    return new_l1

sort1(12,34,25,10,)


练习2:要求创建一个函数,它可以接收,位置参数,不定长位置参数,不定长关键词参数,并按要求输出 。
def class1(classname,*style,**kwargs):
    print('班级名:',classname)
    print('标签:',end='')
    for i in style,:
        print(i)
    print('姓名:',list(kwargs.keys()))
    print('平均年龄:',sum(kwargs.values())/len(kwargs))

class1('三年二班','勤奋','勇敢','善良',小明=12,小刚=11)


练习3:使用reduce函数实现找出一组数字列表中的最大值
from functools import reduce
reduce(lambda a,b:max(a,b),[45,4512,45,12,456,18,1564,46,13])


练习4:求1000以内能同时被3和7整除的数有哪些。要求使用map与filter函数
l1=range(1000)
list(filter(lambda x:x%3==0 and x%7==0,l1))


练习5:请以round函数,定义一个偏函数roundN,调用为输入一个数字N,返回圆周率后N位的数字
import math
def roundn():
    s=input('位数:n=')
    n=int(s)
    return round(math.pi,n)

roundn()


练习5:请以sorted函数,定义一个偏函数sortedDESC,结果为输入一个序列,返回为按降序排列后序列。
def sortedDESC():
    l0=input('输入数列:')
    l0_new=l0.split(",")
    l1=[int(l0_new[i]) for i in range(len(l0_new))]
    l1_new=reversed(sorted(l1))
    return list(l1_new)


调用:

sortedDESC()

输入数列:46,47,56,25,15,39,458,9
输出:
[458, 56, 47, 46, 39, 25, 15, 9]

练习6:要求使用map与filter函数,输出一个输入字符串里每个字符出现的次数
l2=input('please enter a str:')
l3=l2.split(",")
if len(l3)==1:
    print(dict(map(lambda x:(x,l2.count(x)),l2)))
else:
    print(dict(map(lambda x:(x,l3.count(x)),l3)))


练习7:创建一个能够快递排序的递归函数
def qksort():
    l0=input()
    l0_new=l0.split(",")
    lo=[int(l0_new[i]) for i in range(len(l0_new))]
    l1=[]
    k=0
    while len(lo)>0:
        for i in lo:
            k=lo.index(min(lo))
            l1.append(lo[k])
            lo.pop(k)
    return l1


练习8:创建一个能打印一个字典中包含所有字典对象的递归函数
def printdict(d):
    for key,values in d.items():
        print('\n'+key+':')
        if type(values)==dict:printdict(values)
        else:
            print(values)
dic={"北京":{"东城": ["天坛", "东单", "王府井"],"西城": ["西单", "军博", "复兴门"],},
     "上海":{"杨浦":['五角场','政通路','世界路']},
    "天津":['天津港']}
printdict(dic)


练习9:编写一个生成器,实现fib数列的效果
def fib(n):
    def fib1(n):
        a,b,i=0,1,0
        for i in range(n):
            yield b
            a,b=b,a+b
    g1=fib1(n)
    print(list(g1))


作业:创建一个能接收不定长位置参数(数字)函数,返回是所有参数的和。
 现要求在这个函数每次调用时都有进行屏幕
打印(该函数被调用)。
 请在不改动这个函数内部及调用的前提下实
现。
def dec(func):
    def inn(*args):
        print('调用函数:',func.__name__)
        return func(*args)
    return inn
@dec
def sum1(*args):
    num=sum(list(args))
    print(num)

sum1(1,2,1,3,4,5,6,7,89)
已邀请:

ClownFish

赞同来自:


daowei 第一次作业哦。

偏函数的那两个,都没有用到functools.partical这个哦。。虽然实现了,但没有练习偏函数这个知识点。

qksort,算法实现不对,且没有递归。再想想,群里我发参考了。.

最后几天和其它同学的思路很像了。能完成就好,最好反复练习。

要回复问题请先登录注册

返回顶部