[小甲魚] 零基礎入門python第017講課後測試題及答案:函式-python的樂高積木
0. 你有聽說過DRY嗎? 沒有1. 都是重複一段程式碼,為什麼我要使用函式(而不使用簡單的拷貝黏貼)呢? 函式方便使用 2. 函式可以有多個引數嗎? 可以,一般三四個為宜 3. 建立函式使用什麼關鍵字,要注意什麼? def 4. 請問這個函式有多少個引數?
def MyFun((x, y), (a, b)): return x * y - a * b 兩個
回答錯誤,因為上面這樣定義函式是錯誤的,函式傳遞的是變數,不是資料型別的實體,具體見後面答案
5. 請問呼叫以下這個函式會列印什麼內容?
>>> def hello():
print('Hello World!')
return
print('Welcome To FishC.com!') Hello World!
Welcome To FishC.com!
回答錯誤,當Python執行到return語句的時候,Python認為函式到此結束,需要返回了(儘管沒有任何返回值) 所以,正確列印的是 Hello World! 動動手:0. 編寫一個函式power()模擬內建函式pow(),即power(x, y)
# pov(x,y)=x**y
def power(x,y):
return x**y
1. 編寫一個函式,利用歐幾里得演算法(腦補連結)求最大公約數,例如gcd(x, y)返回值為引數x和引數y的最大公約數。
def gcd(x,y):
for each in range(1,x+1):
if (x%each==0 and y%each==0):
max=each
return max
2. 編寫一個將十進位制轉換為二進位制的函式,要求採用“除2取餘”(腦補連結)的方式,結果與呼叫bin()一樣返回字串形式。
def ten2two(x):
result=''
list1=list()
while (x//2!=0):
list1.append(x%2)
x//=2
else:
list1.append(x%2)
while list1:
result+=str(list1.pop())
return result
3. 請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式! 測試題答案:
0. 你有聽說過DRY嗎?DRY是程式設計師們公認的指導原則:Don't Repeat Yourself. 快快武裝你的思維吧,拿起函式,不要再去重複拷貝一段程式碼了!1. 都是重複一段程式碼,為什麼我要使用函式(而不使用簡單的拷貝黏貼)呢? 使用函式:
0) 可以降低程式碼量(呼叫函式只需要一行,而拷貝黏貼需要N倍程式碼)1) 可以降低維護成本(函式只需修改def部分內容,而拷貝黏貼則需要每一處出現的地方都作修改)2) 使序更容易閱讀(沒有人會希望看到一個程式重複一萬行“I love FishC.com”2. 函式可以有多個引數嗎? 可以的,理論上你想要有多少個就可以有多少個,只不過如果函式的引數過多,在呼叫的時候出錯的機率就會大大提高,因而寫這個函式的程式設計師也會被相應的問候祖宗,所以,儘量精簡吧,在Python的世界裡,精簡才是王道!3. 建立函式使用什麼關鍵字,要注意什麼?使用“def”關鍵字,要注意函式名後邊要加上小括號“()”,然後小括號後邊是冒號“:”,然後縮排部分均屬於函式體的內容,例如:
- def MyFun():
- # 我是函式體
- # 我也是函式體
- # 我們都屬於函式MyFun()
- # 噢,我不屬於MyFun()函式的了
4. 請問這個函式有多少個引數?
- def MyFun((x, y), (a, b)):
- return x * y - a * b
如果你回答兩個,那麼恭喜你錯啦,答案是0,因為類似於這樣的寫法是錯誤的!我們分析下,函式的引數需要的是變數,而這裡你試圖用“元祖”的形式來傳遞是不可行的。我想你如果這麼寫,你應該是要表達這麼個意思:
- >>> def MyFun(x, y):
- return x[0] * x[1] - y[0] * y[1]
- >>> MyFun((3, 4), (1, 2))
- 10
5. 請問呼叫以下這個函式會列印什麼內容?
- >>> def hello():
- print('Hello World!')
- return
- print('Welcome To FishC.com!')
會列印:
- >>> hello()
- Hello World!
因為當Python執行到return語句的時候,Python認為函式到此結束,需要返回了(儘管沒有任何返回值)。動動手答案:
0. 編寫一個函式power()模擬內建函式pow(),即power(x, y)為計算並返回x的y次冪的值。
- def power(x, y):
- result = 1
- for i in range(y):
- result *= x
- return result
- print(power(2, 3))
1. 編寫一個函式,利用歐幾里得演算法(腦補連結)求最大公約數,例如gcd(x, y)返回值為引數x和引數y的最大公約數。
- def gcd(x, y):
- while y:
- t = x % y
- x = y
- y = t
- return x
- print(gcd(4, 6))
2. 編寫一個將十進位制轉換為二進位制的函式,要求採用“除2取餘”(腦補連結)的方式,結果與呼叫bin()一樣返回字串形式。
- def Dec2Bin(dec):
- temp = []
- result = ''
- while dec:
- quo = dec % 2
- dec = dec // 2
- temp.append(quo)
- while temp:
- result += str(temp.pop())
- return result
- print(Dec2Bin(62))