函數和代碼複用 --Python

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

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

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

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

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

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

三、如下選項中,不屬於函數的做用的是

A.提升代碼執行速度
B.複用代碼
C.加強代碼可讀性
D.下降編程複雜度模塊化

答案:C
答案解析:函數的做用是複用代碼、加強代碼可讀性、下降編程複雜度,而並不能提升代碼的執行速度。函數

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

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

答案:D
答案解析:python裏有可變對象和不可變對象之分。只有傳入的是不可變對象時,值纔不發生改變,如果可變對象,值的傳入須要注意。不可變對象:Number ,String ,Tuple,bool。可變對象: List , Set , Dictionary是能夠改變內部的元素 。code

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

A. 一個函數中只容許有一條return語句對象

B. Python中,def和return是函數必須使用的保留字
C. Python函數定義中沒有對參數指定類型,這說明,參數在函數中能夠看成任意類型使用
D. 函數eval()能夠用於數值表達式求值,例如eval(‘2*3+1’)排序

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

六、給出以下代碼
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

七、在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錯誤

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

A. 面向對象編程比面向過程編程更爲高級

B. 面向對象和麪向過程是編程語言的分類依據
C.模塊化設計就是面向對象的設計
D.全部面向對象編程能實現的功能採用面向過程一樣能完成

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

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

A. 書寫簡單

B. 執行效率高
C.必定要有基例
D.遞歸程序均可以有非遞歸編寫方法

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

十、下面代碼的輸出結果是
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))
十一、關於形參和實參的描述,如下選項中正確的是

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

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

十二、關於lambda函數,如下選項中描述錯誤的是

A. lambda函數也稱爲匿名函數

B. lambda函數將函數名做爲函數結果返回
C.定義了一種特殊的函數
D.lambda不是Python的保留字

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

1三、如下選項中,對於函數的定義錯誤的是

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錯誤

1四、關於函數的參數,如下選項中描述錯誤的是

A. 在定義函數時,若是有些參數存在默認值,能夠在定義函數時直接爲這些參數指定默認值

B. 在定義函數時,能夠設計可變數量參數,經過在參數前增長星號(*)實現
C. 可選參數能夠定義在非可選參數的前面
D. 一個元組能夠傳遞給帶有星號的可變參數

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

1五、關於return語句,如下選項中描述正確的是

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

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

1六、關於函數,如下選項中描述錯誤的是

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

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

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

A.全局變量指在函數以外定義的變量,通常沒有縮進,在程序執行全過程有效
B.局部變量指在函數內部使用的變量,當函數退出時,變量依然存在,下次函數調用能夠繼續使用
C.使用global保留字聲明簡單數據類型變量後,該變量做爲全局變量使用
D.簡單數據類型變量不管是否與全局變量重名,僅在函數內部建立和使用,函數退出後變量被釋放

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

1八、關於Python中的lambda函數,如下選項中描述錯誤的是

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

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

1九、下面代碼實現的功能描述爲
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不是可選參數,可選參數有*或**

2一、給出以下代碼
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']

2二、給出以下代碼
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是全局變量。

2三、給出以下代碼
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不正確

2四、給出以下代碼
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等
答案:B
答案解析:參數若是須要布爾值,而輸入的是數值,那麼只須要該數值爲非0的數,對應爲True,若是輸入的數值爲0,則表明False。

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

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

答案:B
答案解析:函數在傳遞參數時,指將實參複製給形參,並未對實參自己發生改變。

2六、下面代碼的運行結果是
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。

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

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

答案:B

2八、下面代碼的運行結果是
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是對象類型。

相關文章
相關標籤/搜索