1. 程式人生 > >python入門第三課練習

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)

輸出結果: