函數和代碼復用 --Python


1、關於遞歸函數的描述,以下選項中正確的是

A.包含一個循環結構
B.函數比較復雜
C.函數內部包含對本函數的再次調用
D.函數名稱作為返回值

答案:D
答案解析:遞歸函數是指函數內部包含對本函數的再次調用。

2、關於遞歸函數基例的說明,以下選項中錯誤的是

A.遞歸函數必須有基例
B.遞歸函數的基例不再進行遞歸
C.每個遞歸函數都只能有一個基例
D.遞歸函數的基例決定遞歸的深度

答案:C
答案解析:每個遞歸函數至少存在一個基例

3、以下選項中,不屬於函數的作用的是

A.提高代碼執行速度
B.復用代碼
C.增強代碼可讀性
D.降低編程復雜度

答案:C
答案解析:函數的作用是復用代碼、增強代碼可讀性、降低編程復雜度,而並不能提高代碼的執行速度。

4、假設函數中不包括global保留字,對於改變參數值的方法,以下選項中錯誤的是

A.參數是列表類型時,改變原參數的值
B.參數是整數類型時,不改變原參數的值
C.參數是組合類型(可變對象)時,改變原參數的值
D.參數的值是否改變與函數中對象的操作有關,與參數類型無關

答案:D
答案解析:python里有可變對象和不可變對象之分。只有傳入的是不可變對象時,值才不發生改變,若是可變對象,值的傳入需要注意。不可變對象:Number ,String ,Tuple,bool。可變對象: List , Set , Dictionary是可以改變內部的元素 。

5、在python中,關於函數的描述,以下選項中正確的是

A. 一個函數中只允許有一條return語句
B. Python中,def和return是函數必須使用的保留字
C. Python函數定義中沒有對參數指定類型,這說明,參數在函數中可以當作任意類型使用
D. 函數eval()可以用於數值表達式求值,例如eval(‘2*3+1’)

答案:D
答案解析:函數可以不使用return語句或多條return語句,因此A,B不正確;Python函數定義中沒有對參數指定類型,函數中應根據實參的類型使用,C不正確。

6、給出如下代碼
def func(a,b):
    c = a **2 + b
    b =a
    return c
a =10
b =100
c = func(a,b)+a

以下選項中描述錯誤的是
A. 執行該函數后,變量c的值為200
B. 該函數名稱為func
C.執行該函數后,變量b的值為100
D.執行該函數后,變量a的值為10

答案:A
答案解析:執行該函數后,變量c的值為210

7、在Python中,關於全局變量和局部變量,以下選項中描述不正確的是

A.一個程序中的變量包含兩類:全局變量和局部變量
B.全局變量一般沒有縮進
C.全局變量在程序執行的全過程有效
D.全局變量不能和局部變量重名

答案:D
答案解析:全局變量可以和局部變量重名,全局變量指的是在函數之外定義的變量,在程序執行全過程有效。全局變量在函數內部使用時,需要提前使用保留字global聲明。局部變量指在函數內部定義的變量,僅在函數內部有效,當函數退出時,變量將不再存在。例如:

n =2
def multiply(x, y =10):
    n =x*y     #局部變量n,和第一行代碼n不同。
    return n   #返回的n也是局部變量n
s =multiply(99,2)
print(s)
print(n)

全局變量可以和局部變量重名,因此D錯誤

8、關於面向對象和面向過程編程描述,以下選項中正確的是

A. 面向對象編程比面向過程編程更為高級
B. 面向對象和面向過程是編程語言的分類依據
C.模塊化設計就是面向對象的設計
D.所有面向對象編程能實現的功能采用面向過程同樣能完成

答案:D
答案解析:面向對象編程能實現的功能均可以采用面向過程同樣能完成

9、以下選項中,對於遞歸程序的描述錯誤的是

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

答案:B
答案解析:遞歸程序的執行效率比較低

10、下面代碼的輸出結果是
 f = lambda x,y:y+x
 f(10,10)

A. 10
B. 20
C.10,10
D.100

答案:B
答案解析:lambda表達式相當於:

def fun(x, y):
    return x + y
print(fun(10, 10))
11、關於形參和實參的描述,以下選項中正確的是

A.函數定義中參數列表里面的參數是實際參數,簡稱實參
B.參數列表中給出要傳入函數內部的參數,這類參數稱為形式參數,簡稱形參
C.程序在調用時,將實參復制給函數的形參
D.程序在調用時,將形參復制給函數的實參

答案:C
答案解析:函數定義中參數列表里面的參數是形參,參數列表中給出要傳入函數內部的參數,這類參數稱為實參;程序在調用時,將實參復制給函數的形參

12、關於lambda函數,以下選項中描述錯誤的是

A. lambda函數也稱為匿名函數
B. lambda函數將函數名作為函數結果返回
C.定義了一種特殊的函數
D.lambda不是Python的保留字

答案:D
答案解析:lambda是Python的保留字

13、以下選項中,對於函數的定義錯誤的是

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

答案:D
答案解析:def vfunc(* a, b):中的*(可選參數)應該放在后面,因此D錯誤

14、關於函數的參數,以下選項中描述錯誤的是

A. 在定義函數時,如果有些參數存在默認值,可以在定義函數時直接為這些參數指定默認值
B. 在定義函數時,可以設計可變數量參數,通過在參數前增加星號(*)實現
C. 可選參數可以定義在非可選參數的前面
D. 一個元組可以傳遞給帶有星號的可變參數

答案:D
答案解析:可選參數不可以定義在非可選參數的前面

15、關於return語句,以下選項中描述正確的是

A.函數中最多只有一個return語句
B.函數必須有一個return語句
C.return只能返回一個值
D.函數可以沒有return語句

答案:D
答案解析:函數return的個數沒有限制,可以沒有return語句

16、關於函數,以下選項中描述錯誤的是

A.函數是一段具有特定功能的、可重用的語句組
B.函數能完成特定的功能,對函數的使用不需要了解函數內部實現原理,只要了解函數的輸入輸出方式即可
C.使用函數的主要目的是降低編程難度和代碼重用
D.Python使用del保留字定義一個函數

答案:D
答案解析:Python使用def保留字定義一個函數

17、關於Python的全局變量和局部變量,以下選項中描述錯誤的是

A.全局變量指在函數之外定義的變量,一般沒有縮進,在程序執行全過程有效
B.局部變量指在函數內部使用的變量,當函數退出時,變量依然存在,下次函數調用可以繼續使用
C.使用global保留字聲明簡單數據類型變量后,該變量作為全局變量使用
D.簡單數據類型變量無論是否與全局變量重名,僅在函數內部創建和使用,函數退出后變量被釋放

答案:D
答案解析:局部變量指在函數內部定義的變量,僅在函數內部有效,當函數退出時,變量將不再存在。

18、關於Python中的lambda函數,以下選項中描述錯誤的是

A.lambda用於定義簡單的、能夠一行內表示的函數
B.可以使用lambda函數定義列表的排序原則
C.f = lambda x,y:x+y執行后,f的類型為數字類型
D.lambda函數將函數名作為函數結果返回

答案:D
答案解析:C選項中,f的類型依參數來確定

19、下面代碼實現的功能描述為
def fact(n):
    if n == 0:
        return 1
    else :
        return n * fact(n-1)
num = eval(input('請輸入一個整數:'))
print(fact(abs(int(num))))

A. 接受用戶輸入的整數N,輸出N的階乘值
B. 接受用戶輸入的整數N,判斷N是否是素數並輸出結論
C. 接受用戶輸入的整數N,判斷N是否是整數並輸出結論
D. 接受用戶輸入的整數N,判斷N是否是水仙花數
答案:D
答案解析:這是典型的遞歸函數,在return語句中調用函數本身。功能為輸出N的階乘值

20、給出如下代碼
def fact(n):
    s = 1
    for i in range(1,n+1):
        s *= i
  return s

以下選項中描述錯誤的是
A.代碼中n是可選參數
B.fact(n)函數功能為求n的階乘
C.s是局部變量
D.range()函數是Python內置函數

答案:A
答案解析:代碼中n不是可選參數,可選參數有*或**

21、給出如下代碼
ls = ['car','truck']
def funC(a):
    ls.append(a)
    return
funC('bus')
print(ls)

以下選項中描述錯誤的是
A.ls.append(a)代碼中的ls是全局變量
B.執行代碼輸出結果為[‘car’,’truck’]
C.ls.append(a)代碼中的ls是列表類型變量
D.funC(a)中a為非可選參數

答案:B
答案解析:執行代碼輸出結果為[‘car’,’truck’,'bus']

22、給出如下代碼
ls = ['car','truck']
def funC(a):
    ls = []
    ls.append(a)
    return
funC('bus')
print(ls)

以下選項中描述錯誤的是
A.代碼函數定義中,ls.append(a)中的ls是局部變量
B.執行代碼輸出的結果為['car', 'truck']
C.ls.append(a)代碼中的ls是列表類型
D.執行代碼輸出結果為['car', 'truck', ’bus’]

答案:D
答案解析:funC函數內部的ls是局部變量,與全局變量不同,在函數調用結束后,局部變量就會消失。最終打印輸出的ls是全局變量。

23、給出如下代碼
import turtle
def drawLine(draw):
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(50)
    turtle.right(90)
drawLine(True)
drawLine(True)
drawLine(True)
drawLine(True)

以下選項中描述錯誤的是
A.運行代碼,在Python Turtle Graphic中,繪制一個正方形
B.代碼def drawLine(draw)中的draw可取值True或者False
C.代碼drawLine(True)中True替換為-1,運行代碼結果不變
D.代碼drawLine(True)中True替換為0,運行代碼結果不變

答案:D
答案解析:if else簡寫形式例:

a, b, c = 1, 2, 3
if a > b:
    c = a
else:
    c = b

可簡寫為:

a, b, c = 1, 2, 3
c = a if a > b else b

參數如果需要布爾值,而輸入的是數值,那么只需要該數值為非0的數,對應為True,如果輸入的數值為0,則代表False,因此D不正確

24、給出如下代碼
import turtle
def drawLine(draw):
    turtle.pendown() if draw else turtle.penup()
    turtle.fd(50)
    turtle.right(90)
drawLine(True)
drawLine(0)
drawLine(True)
drawLine(True)
turtle.left(90)
drawLine(0)
drawLine(True)
drawLine(True)

以下選項中描述錯誤的是
A.運行代碼,在Python Turtle Graphic中,繪制一個數碼管數字2
B.代碼drawLine(True)中True替換為0,運行代碼結果不變
C.代碼drawLine(True)中True替換為-1,運行代碼結果不變
D.代碼def drawLine(draw)中的draw可取值0、1、-1等
答案:B
答案解析:參數如果需要布爾值,而輸入的是數值,那么只需要該數值為非0的數,對應為True,如果輸入的數值為0,則代表False。

25、下面代碼的運行結果是
def func(num):
    num += 1
a = 10
func(a)
print(a)

A.10
B.11
C.出錯
D.int

答案:B
答案解析:函數在傳遞參數時,指將實參復制給形參,並未對實參本身發生改變。

26、下面代碼的運行結果是
def func(a, b):
    return a >> b
s = func(5, 2)
print(s)

A.20
B.6
C.1
D.12

答案:C
答案解析:a>>b代表將a轉為二進制,然后向右移動b個位,(<<表示向左,>>表示向右)。a = 5,二進制為101;b =2,也就是將101向右移動2位,變為1。

27、下面代碼的運行結果
def func(a, b):
    a *= b
    return a
s = func(5, 2)
print(s)

A. 20 B. 10 C. 1 D. 12

答案:B

28、下面代碼的運行結果是
def f2(a):
    if a > 33:
        return True
li = [11, 22, 33, 44, 55]
res = filter(f2, li)
print(list(res))

A.[44,55]
B.[33,44,55]
C.[22,33,44]
D.[11,33,55]

答案:A
答案解析:filter()函數是 Python 內置的另一個有用的高階函數,filter()函數接收一個函數 f 和一個列表,在本題中這個函數 f2 的作用是對每個元素進行判斷是否大於33,如果大於則返回 True否則 False,filter()根據判斷結果自動過濾掉不符合條件的元素,也就是將返回為True的元素組成的新list,因此本題選擇A。注意,res是對象類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM