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)
輸出結果: