1. 程式人生 > >第018講:函式:靈活即強大 | 學習記錄(小甲魚零基礎入門學習Python)

第018講:函式:靈活即強大 | 學習記錄(小甲魚零基礎入門學習Python)

(標答出處: 魚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)

標答:

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述