1. 程式人生 > >測驗5: 函式和程式碼複用 (第5周)

測驗5: 函式和程式碼複用 (第5周)

測驗5: 函式和程式碼複用 (第5周)

1.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬ 以下關於遞迴函式基例的說法錯誤的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A、遞迴函式的基例決定遞迴的深度    B、遞迴函式必須有基例

C、遞迴函式的基例不再進行遞迴    D、每個遞迴函式都只能有一個基例

 正確答案: D 

解釋:每個遞迴函式至少存在一個基例,但可能存在多個基例。

2.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬ 以下選項不是函式作用的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A、增強程式碼可讀性    B、降低程式設計複雜度    C、複用程式碼    D、提高程式碼執行速度

 正確答案: D 

解釋:函式不能直接提高程式碼執行速度。

3.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬下列程式的輸出結果為:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

def f(a,b):
  a=4
  return  a+b
def main():
  a=5
  b=6
  print(f(a,b),a+b)
main()
   

A、11  10        B、10   11        C、10  10        D、11  11

 正確答案: B 

解釋:這裡沒有全域性變數,都是函式區域性變數的運算。

4.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬以下關於Python函式說法錯誤的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

def func(a,b):
  c=a**2+b
  b=a
  return c
a=10
b=100
c=func(a,b)+a

A、該函式名稱為func         B、執行該函式後,變數c的值為200    

C、執行該函式後,變數b的值為100        D、執行該函式後,變數a的值為10

 正確答案: B 

解釋:這裡沒有全域性變數,請在IDLE中執行程式碼觀察結果。

5.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬ 以下關於函式呼叫描述正確的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A、函式在呼叫前不需要定義,拿來即用就好    B、函式和呼叫只能發生在同一個檔案中

C、Python內建函式呼叫前需要引用相應的庫     D、自定義函式呼叫前必須定義

 正確答案: D 

解釋:函式呼叫前必須已經存在函式定義,否則無法執行。

Python內建函式直接使用,不需要引用任何模組。

6. 以下關於模組化設計描述錯誤的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A、應儘可能合理劃分功能塊,功能塊內部耦合度低    B、應儘可能合理劃分功能塊,功能塊內部耦合度高

C、模組間關係儘可能簡單,模組之間耦合度低     D、高耦合度的特點是複用較為困難

 正確答案: A 

解釋:模組內高耦合、模組間低耦合。

7.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬ 以下對遞迴描述錯誤的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A、書寫簡單    B、一定要有基例    C、執行效率高    D、遞迴程式都可以有非遞迴編寫方法

 正確答案: C 

解釋:遞迴不提高程式執行效率。

任何遞迴程式都可以通過堆疊或佇列變成非遞迴程式(這是程式的高階應用)。

8.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬ 以下關於函式說法錯誤的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A、函式通過函式名來呼叫    B、函式是一段具有特定功能的、可重用的語句組

C、函式可以看做是一段具有名字的子程式     D、對函式的使用必須瞭解其內部實現原理

 正確答案: D 

解釋:呼叫函式不需要知道函式內部實現原理,只需要知道呼叫方法(即介面)即可。

9.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬ 哪個選項對於函式的定義是錯誤的?‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A、def vfunc(*a,b):    B、def vfunc(a,b=2):    C、def vfunc(a,*b):    D、def vfunc(a,b):

 正確答案: A 

解釋:def vfunc(*a, b) 是錯誤的定義:*a表示可變引數,可變引數只能放在函式引數的最後。

10.關於return語句,以下選項描述正確的是:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

A、函式中最多隻有一個return語句    B、函式必須有一個return語句

C、return只能返回一個值     D、函式可以沒有return語句

 正確答案: D 

解釋:函式可以包含0個或多個return語句