Python作业_python基础升级 第三课练习 花开、自相依

1、

定义一个函数,接收任意3个数字的输入,并按

顺序从小到大输出

def sortedNumber(*args):
    return sorted(args)

sortedNumber(2,3,1)

2、

要求创建一个函数,它可以接收,位置参数,

不定长位置参数,不定长关键词参数,并按

要求输出 。

 输入班级名,班级特色(如’勤奋’,’颜值

高’ )等等不同特色,班级不同同学的姓

名与年龄。

 要求输出,班级名,班级特色,班级成员,

班级成员的平均年龄

def classes(className,*classSpeical,**classMates):
    list1 = []
    count = 0
    print('班级名:',className)
    print('班级特色:')
    for i in classSpeical:
        print(i)
    print('班级成员:')
    for key,value in classMates.items():
        print(key)
        list1.append(value)
        count+=1
    print('平均年龄:')
    print(sum(list1)/count)
        

classes('三年二班','勤奋','颜值高',xiaoming=25,xiaohong=20)

3、

求1000以内能同时被3和7整除的数有哪些。要求使用map与filter函数

list(filter(lambda x:x%3==0 and x%7==0,range(50)))

def func(x):
    if x%3==0 and x%7==0:
        return x
    else:
        pass
a = list(map(func,range(50)))
for i in a:
    if i!=None:
        print(i)
    else:
        pass
4、

使用reduce函数实现找出一组数字列表中的最大值

from functools import reduce
l1 = [1,2,3,4,5,6,7]

def max1(x,y):

if x>=y:

return x

else:

return y

return max(l1)

reduce(max1,l1)

reduce(lambda a,b:max(a,b),l1)

5、

体现闭包的思想,创建一个三层嵌套的函数,并调用。

def foo1(nums):
    print('nums可以在foo1中被访问:',nums)
    def foo2():
        print('nums可以在foo2中被访问:',nums)
        def foo3():
            print('nums可以在foo3中被访问:',nums)
            return max(nums)
        return foo3
    return foo2
f = foo1([1,2,3])
f1 = f()
f1()

6、

请以round函数,定义一个偏函数roundN,调用

为输入一个数字N,返回圆周率后N位的数字

提示:

import math

math.pi

import functools
import math
def roundN(pi,n):
    pi = math.pi
    if(pi-round(pi,15-n)<0):
        return pi-(round(pi,15-n)-1/pow(10,15-n))
    else:
        return pi-round(pi,15-n)
print(math.pi)
roundNN = functools.partial(roundN,math.pi)
roundNN(5)

请以sorted函数,定义一个偏函数sortedDESC,

结果为输入一个序列,返回为按降序排列后序列

sortedDESC = functools.partial(sorted,reverse=True)
sortedDESC([1,2,3,4,5,6])

7、

要求使用map与filter函数,输出一个输入字

符串里每个字符出现的次数

提示:结合dict使用实现

str = 'abcab'
dicts  = list(map(lambda x:{x:str.count(x)},str))
list1 = []
def myfilter(dicts):    
    for i in dicts.items():
        if i not in list1: 
            list1.append(i)
            return True
        else:
            return False

list(filter(myfilter,dicts))    

8、

创建一个能够快递排序的递归函数

def quickSort(v,left,right):
    if left < right:
        i = left
        j = right
        key = v[left]
        while i < j:
            while v[j]>=key and i<j:
                j = j - 1
            while v[i]<=key and i<j:
                i = i + 1       
            if i < j:
                temp = v[i]
                v[i] = v[j]
                v[j] = temp

        t = v[j]
        v[j] = v[left]
        v[left] = t

        quickSort(v,left,j-1)
        quickSort(v,j+1,right)
    return v
    
s = [6,8,1,4,3,9,5,4,11,2,2,15,6]
print('before sort:',s)
s1 = quickSort(s,0,len(s)-1)
print('after sort:',s1)        

9、

创建一个能打印一个字典中包含所有字典对象的递归函数

def printDict(d):
    for key,values in d.items():
        print(key)
        if type(values)==dict:
            printDict(values)
dic = {'北京': {'东城': ['天坛', '东单', '王府井'],'西城': ['西单', '军博', '复兴门']},
       '上海': {'杨浦':['五角场','政通路','世界路']},'天津':['天津港']} 
printDict(dic)

10、

编写一个生成器,实现fib数列的效果

def fib():
    x, y = 0, 1
    while True:
        yield x
        x, y = y, x + y
g1 = fib() 
next(g1)
next(g1)
next(g1)
next(g1)
next(g1)
next(g1)
next(g1)
已邀请:

ClownFish

赞同来自:


fib是无限 生成器了哈~~~

快排还是要思考下,你参与下我在群发的链接。。

要回复问题请先登录注册

返回顶部