第018講:函式:靈活即強大 | 學習記錄(小甲魚零基礎入門學習Python)
阿新 • • 發佈:2018-12-06
(標答出處: 魚C論壇)
《零基礎入門學習Python》
測試題:
0.請問一下那個是形參那個是實參
def MyFun(x):
return x**3
y=3
print(MyFun(y))
x是形參,y是實參,函式體內的是形參,實際傳輸進去的是實參
1.函式文件和直接用#為函式寫註釋有什麼不同
函式文件是為了讓別人更好的理解你的函式
2.使用關鍵字引數,可以避免什麼問題的出現
當引數過多時,可以避免呼叫函式時引數傳遞錯誤的問題
3.使用help(print)檢視print()這個BIF有哪些預設引數?分別起到什麼作用?
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
可選關鍵字引數:
file:類檔案物件(stream); 預設為當前的sys.stdout。
sep:在值之間插入的字串,預設為空格。
end:在最後一個值後附加的字串,預設為換行符。
flush:是否強制重新整理流。
4.預設引數和關鍵字引數表面最大的區別是什麼?
預設引數在函式定義時就賦值,關鍵字引數是在函式呼叫時賦值
動動手:
0.編一個符合以下要求的函式:
a)計算列印所有引數的和乘以基數(base=3)的結果
b)如果引數中最後一個引數為(base=5),則設定基數為5,基數不參與求和計算。
def func1(*a,base = 3) :
b=0
for i in a :
b += i
print ( b*base )
func1(1,2,3,4,5)
func1(1,2,3,4,5,base = 5)
45
75
1.尋找水仙花數
如果一個3位數等於其各位數字的立方和,則稱這個數為水仙花數,例如153=13+53+3^3,因此153是一個水仙花數,編寫一個程式,找出所有的水仙花數。
def func1(a,b) : for i in range (a,b) : mylist = str(i) a = int (mylist[0]) b = int (mylist[1]) c = int (mylist[2]) if ( i == (a**3+b**3+c**3) ) : print (i,end=‘ ’)
153 370 371 407
2.編寫一個函式findstr(),該函式統計一個長度為2的子字串在另一個字串中出現的次數,例如:假如輸入的字串為:You cannot improve your past,but you can improve your future.Once time is wasted,life is wasted.子字串為im,該函式執行後列印“子字串在目標字串中共常出現3次”。
首先想到的就是序列的內建函式count,但是後來想了一下本就是要我們寫函式,直接呼叫內建函式不太好
def findstr(a,b):
c=str(a.count(b))
print('子字串在目標字串中共出現',c,'次')
def findStr(a,b):
count = 0
length = len(a)
for i in range(length-1):
if a[i] == b[0]:
if a[i] == b[1]:
count += 1
print('子字串在主字串中共出現 %d 次' %count)
a = input('請輸入主字串:')
b = input('請輸入子字串(兩個字元):')
findStr(a,b)
findstr(a,b)
標答: