第六章
一. 單選題(共71題,35.5分)
- 關於遞歸函數的描述,以下選項中正確的是( )
- A. 函數名稱作為返回值
- B. 包含一個循環結構
- C. 函數比較復雜
- D. 函數內部包含對本函數的再次調用
答案:D
- 關於遞歸函數基例的說明,以下選項中錯誤的是( )
- A. 遞歸函數必須有基例
- B. 遞歸函數的基例不再進行遞歸
- C. 每個遞歸函數都只能有一個基例
- D. 遞歸函數的基例決定遞歸的深度
答案:C
- 以下選項中,不屬於函數的作用的是( )
- A. 提高代碼執行速度
- B. 增強代碼可讀性
- C. 降低編程復雜度
- D. 復用代碼
答案:A
- 假設函數中不包括global保留字,對於改變參數值的方法,以下選項中錯誤的是( )
- A. 參數是列表類型時,改變原參數的值
- B. 參數是組合類型(可變對象)時,改變原參數的值
- C. 參數的值是否改變與函數中對變量的操作有關,與參數類型無關
- D. 參數是整數類型時,不改變原參數的值
答案:C
- Python中,關於函數的描述,以下選項中正確的是( ).
- A. 函數eval()可以用於數值表達式求值,例如eval("2*3+1")
- B. Python函數定義中沒有對參數指定類型,這說明,參數在函數中可以當作任意類型使用
- C. 一個函數中只允許有一條return語句
- D. Python中,def和return是函數必須使用的保留字
答案:A
- 在Python中,關於全局變量和局部變量,以下選項中描述不正確的是( )
- A. 一個程序中的變量包含兩類:全局變量和局部變量
- B. 全局變量不能和局部變量重名
- C. 全局變量在程序執行的全過程有效
- D. 全局變量一般沒有縮進
答案:B
- 關於面向對象和面向過程編程描述,以下選項中正確的是( )
- A. 面向對象編程比面向過程編程更為高級
- B. 所有面向對象編程能實現的功能采用面向過程同樣能完成
- C. 面向對象和面向過程是編程語言的分類依據
- D. 模塊化設計就是面向對象的設計
答案:B
- 以下選項中,對於遞歸程序的描述錯誤的是( )
- A. 書寫簡單
- B. 執行效率高
- C. 遞歸程序都可以有非遞歸編寫方法
- D. 一定要有基例
答案:B
- 下面代碼的輸出結果是( )
>>>f=lambda x,y:y+x
>>>f(10,10)
- A. 100
- B. 10
- C. 20
- D. 10,10
答案:C
- 關於形參和實參的描述,以下選項中正確的是( )
- A. 參數列表中給出要傳入函數內部的參數,這類參數稱為形式參數,簡稱形參
- B. 程序在調用時,將形參復制給函數的實參
- C. 函數定義中參數列表里面的參數是實際參數,簡稱實參
- D. 程序在調用時,將實參復制給函數的形參
答案:D
- 以下選項中,對程序的描述錯誤的是( )
- A. 程序是由一系列函數組成的
- B. 通過封裝可以實現代碼復用
- C. 可以利用函數對程序進行模塊化設計
- D. 程序是由一系列代碼組成的
答案:A
- 以下選項中,對於函數的定義錯誤的是( )
- A. def vfunc(a,b=2):
- B. def vfunc(*a,b):
- C. def vfunc(a,b):
- D. def vfunc(a,*b):
答案:B
- 關於函數的參數,以下選項中描述錯誤的是( )
- A. 在定義函數時,如果有些參數存在默認值,可以在定義函數時直接為這些參數指定默認值
- B. 在定義函數時,可以設計可變數量參數,通過在參數前增加星號(*)實現
- C. 可選參數可以定義在非可選參數的前面
- D. 一個元組可以傳遞給帶有星號的可變參數
答案:C
- 關於return語句,以下選項中描述正確的是( )
- A. 函數必須有一個return語句
- B. 函數中最多只有一個return語句
- C. return只能返回一個值
- D. 函數可以沒有return語句
答案:D
- 關於函數,以下選項中描述錯誤的是( )
- A. 函數是一段具有特定功能的、可重用的語句組
- B. Python使用del保留字定義一個函數
- C. 函數能完成特定的功能,對函數的使用不需要了解函數內部實現原理,只要了解函數的輸入輸出方式即可。
- D. 使用函數的主要目的是降低編程難度和代碼重用
答案:B
- 關於Python的全局變量和局部變量,以下選項中描述錯誤的是( )
- A. 使用global保留字聲明簡單數據類型變量后,該變量作為全局變量使用
- B. 簡單數據類型變量無論是否與全局變量重名,僅在函數內部創建和使用,函數退出后變量被釋放
- C. 全局變量指在函數之外定義的變量,一般沒有縮進,在程序執行全過程有效
- D. 局部變量指在函數內部使用的變量,當函數退出時,變量依然存在,下次函數調用可以繼續使用
答案:D
- 關於Python的lambda函數,以下選項中描述錯誤的是( )
- A. f = lambda x,y:x+y 執行后,f的類型為數字類型
- B. lambda用於定義簡單的、能夠在一行內表示的函數
- C. 可以使用lambda函數定義列表的排序原則
- D. lambda函數將函數名作為函數結果返回
答案:A
- 關於下面的代碼,以下選項中描述正確的是( ) >>> list(range(0,10,2))
- A. 按可變參數調用
- B. 按關鍵字參數調用
- C. 執行結果為0, 2, 4, 6, 8
- D. 按位置參數調用
答案: D
- 關於函數的返回值,以下選項中描述錯誤的是( )
- A. 函數可以返回0個或多個結果
- B. 函數必須有返回值
- C. 函數可以有return,也可以沒有
- D. return可以傳遞0個返回值,也可以傳遞任意多個返回值
答案:B
- 關於函數局部變量和全局變量的使用規則,以下選項中描述錯誤的是( )
- A. 對於組合數據類型的變量,如果局部變量未真實創建,則是全局變量
- B. 對於基本數據類型的變量,無論是否重名,局部變量與全局變量不同
- C. 可以通過global保留字在函數內部聲明全局變量
- D. return不可以傳遞任意多個函數局部變量返回值
答案:D
- 關於函數,以下選項中描述錯誤的是( )
- A. 函數使用時需要了解函數內部實現細節
- B. 函數主要通過接口(interface)與外界通信,傳遞信息
- C. 函數:具有特定功能的可重用代碼片段,實現解決某個特定問題的算法
- D. 函數在需要時被調用,其代碼被執行
答案:A
- 關於函數的目的與意義,以下選項中描述錯誤的是( )
- A. 程序功能抽象,以支持代碼重用
- B. 函數能調用未實現的函數
- C. 有助於采用分而治之的策略編寫大型復雜程序
- D. 使用時無須了解函數內部實現細節
答案:B
- 關於函數,以下選項中描述錯誤的是( )
- A. 函數也是數據
- B. 函數定義語句可執行
- C. 一條函數定義定義一個用戶自定義函數對象
- D. 函數名稱不可賦給其他變量
答案:D
- 關於函數的參數傳遞(parameter passing),以下選項中描述錯誤的是( )
- A. 實際參數是函數調用時提供的參數
- B. 函數調用時,需要將形式參數傳遞給實際參數
- C. Python參數傳遞時不構造新數據對象,而是讓形式參數和實際參數共享同一對象
- D. 形式參數是函數定義時提供的參數
答案:B
- 關於函數的關鍵字參數使用限制,以下選項中描述錯誤的是( )
- A. 關鍵字參數順序無限制
- B. 關鍵字參數必須位於位置參數之前
- C. 關鍵字參數必須位於位置參數之后
- D. 不得重復提供實際參數
答案:B
- 使用( )關鍵字來創建python自定義函數。
- A. function
- B. func
- C. procedure
- D. def
答案:D
- 關於函數參數傳遞中,形參與實參的描述錯誤的是( )。
- A. python實行安值傳遞參數。值傳遞指調用函數時將常量或變量的值(實參)傳遞給函數的參數(形參)
- B. 實參與形參存儲在各自的內存空間中,是兩個不相關的獨立變量
- C. 在參數內部改變形參的值,實參的值一般是不會改變的。
- D. 實參與形參的名字必須相同
答案:D
- 構造函數是類的一個特殊函數,在python中,構造函數的名稱為( )
- A. 與類同名
- B. __construct
- C. init
- D. init
答案:C
- 在每個python類中,都包含一個特殊的變量( )。它表示當前類自身,可以使用它來引用類中的成員變量和成員函數。
- A. this
- B. me
- C. self
- D. 與類同名
答案:C
- Python定義私有變量的方法為( )。
- A. 使用__private 關鍵字
- B. 使用public關鍵字
- C. 使用__xxx__定義變量名
- D. 使用__xxx定義變量名
答案:D
- ( )函數是指直接或間接調用函數本身的函數
- A. 遞歸
- B. 閉包
- C. lambda
- D. 匿名
答案:A
- 關於函數的下列說法不正確的是( )
- A. 函數可以沒有參數
- B. 函數可以有多個返回值
- C. 函數可以沒有return語句
- D. 函數都有返回值
答案:B
- 在Python中,以下關於函數的描述錯誤的是( )項?
- A. 在Python中,關鍵字參數是讓調用者通過使用參數名區分參數,在使用時不允許改變參數列表中的參數順序。
- B. 在Python中,默認參數的值可以修改。
- C. 在Python中,引入了函數式編程的思想,函數本身亦為對象。
- D. 在Python中,函數的return語句可以以元組tuple的方式返回多個值。
答案:A
- 以下關於Python的說法中正確的是( )項?
- A. Python中函數的返回值如果多於1個,則系統默認將它們處理成一個字典。
- B. 遞歸調用語句不允許出現在循環結構中。
- C. 在Python中,一個算法的遞歸實現往往可以用循環實現等價表示,但是大多數情況下遞歸表達的效率要更高一些。
- D. 可以在函數參數名前面加上星號*,這樣用戶所有傳來的參數都被收集起來然后使用,星號在這里的作用是收集其余的位置參數,這樣就實現了變長參數。
答案: D
- 實現以下哪個方法可以讓對象像函數一樣被調用 ( )
- A. str()
- B. iter()
- C. call()
- D. next()
答案:C
- 以下關於函數參數傳遞的描述,錯誤的是:
- A. 定義函數的時候,可選參數必須寫在非可選參數的后面
- B. 函數的實參位置可變,需要形參定義和實參調用時都要給出名稱
- C. 調用函數時,可變數量參數被當做元組類型傳遞到函數中
- D. Python 支持可變數量的參數,實參用”*參數名”表示
答案:D
- 給出如下代碼:
def func(a,b):
c=a**2+b
b=a
return c
a=10
b=100
c=func(a,b)+a
以下選項中描述錯誤的是( )
- A. 執行該函數后,變量a的值為10
- B. 執行該函數后,變量b的值為100
- C. 執行該函數后,變量c的值為200
- D. 該函數名稱為func
答案:C
- 下面代碼實現的功能描述為( )
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是否是完數並輸出結論
答案:A
- 給出如下代碼:
def fact(n):
s = 1 for i in range(1,n+1):
s *= i
return s
以下選項中描述錯誤的是( )
- A. fact(n)函數功能為求n的階乘
- B. range()函數是Python內置函數
- C. s是局部變量
- D. 代碼中n是可選參數
答案:D
- 給出如下代碼:
ls = ["car","truck"]
def funC(a):
ls.append(a)
return funC("bus")
print(ls)
以下選項中描述錯誤的是( )
- A. funC(a)中的a為非可選參數
- B. ls.append(a)代碼中的ls是全局變量
- C. ls.append(a)代碼中的ls是列表類型
- D. 執行代碼輸出結果為['car','truck']
答案:D
- 給出如下代碼:
ls = ["car","truck"]
def funC(a):
ls =[]
ls.append(a)
return
funC("bus")
print(ls)
以下選項中描述錯誤的是( )
- A. 執行代碼輸出結果為['car', 'truck', 'bus']
- B. 代碼函數定義中,ls.append(a)中的ls是局部變量
- C. 執行代碼輸出結果為['car', 'truck']
- D. ls.append(a)代碼中的ls是列表類型
答案:A
- 下面代碼的運行結果是( )
def func(num):
num += 1
a =10
func(a)
print(a)
- A. 11
- B. int
- C. 10
- D. 出錯
答案:C
- 下面代碼的輸出結果是( )
def func(a,b):
return a>>b
s = func(5,2)
print(s)
- A. 20
- B. 1
- C. 6
- D. 12
答案:B
- 下面代碼的輸出結果是( )
def func(a,b):
a *= b
return a
s = func(5,2)
print(s)
- A. 40
- B. 1
- C. 12
- D. 10
答案:D
- 下面代碼的輸出結果是( )
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. [11,33,55]
- C. [22,33,44]
- D. [33,44,55]
答案:A
- 下面代碼的輸出結果是( )
def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a
print (fib(7))
- A. 5
- B. 13
- C. 21
- D. 8
答案:B
- 下面代碼的輸出結果是( )
def hello_world():
print('ST',end="*")
def three_hellos():
for i in range(3):
hello_world()
three_hellos()
- A. STSTST*
- B. ST*
- C. STST
- D. ***
答案:A
- 下面代碼的輸出結果是( )
def exchange(a,b):
a,b = b,a
return (a,b)
x = 10
y = 20
x,y = exchange(x,y)
print(x,y)
- A. 20 10
- B. 20 20
- C. 20,10
- D. 10 10
答案:A
- 下面代碼的輸出結果是( )
MA = lambda x,y : (x > y) * x + (x < y) * y
MI = lambda x,y : (x > y) * y + (x < y) * x
a = 10
b = 20
print(MA(a,b),end=" ")
print(MI(a,b))
- A. 20 10
- B. 20 20
- C. 10 10
- D. 10 20
答案:A
- 下面代碼的輸出結果是( )
a = 4
a ^= 3
b = a ^ 2
print(a,end=",")
print(b)
- A. 4,3
- B. 64, 4096
- C. 5,7
- D. 7,5
答案:D
- 執行下面代碼,錯誤的是( )
def f(x, y = 0, z = 0):
pass
- A. f(1, , 3)
- B. f(1, 2)
- C. f(1)
- D. f(1, 2, 3)
答案:A
- 執行下面代碼,錯誤的是( )
def f(x, y = 0, z = 0):
pass
- A. f(1, z = 3)
- B. f(1, x = 1, z = 3)
- C. f(1, y = 2, z = 3)
- D. f(z = 3, x = 1, y = 2)
答案:B
- 執行下面的代碼,以下選項中正確的是( )
def f(x, y = 0, z = 0):
pass
- A. f(x = 1, 2)
- B. f(1, y = 2, t = 3)
- C. f(1, x = 1, z = 3)
- D. f(x = 1, y = 2, z = 3)
答案:D
- 關於嵌套函數,以下選項中描述錯誤的是( )
- A. 嵌套函數是在函數內部定義函數
- B. 內層函數僅供外層函數調用,外層函數之外不得調用
- C. def f(): print("Outer function f") def g(): print("Inner function g") g() f()
- D. def f(): print("Outer function f") def g(): print("Inner function g") g() f.g()
答案:D
- 下面代碼的執行結果是( )
>>> def area(r, pi = 3.14159):
return pi * r *r
>>> area(pi = 3.14, r = 4)
- A. 出錯
- B. 50.24
- C. 39.4384
- D. 無輸出
答案:B
- 下面代碼的執行結果是( )
>>> def area(r, pi = 3.14159):
return pi * r * r
>>> area(3.14, 4)
- A. 出錯
- B. 39.4384
- C. 50.24
- D. 3.14,4
答案:B
- 下面代碼的執行結果是( )
def greeting(args1, *tupleArgs, **dictArgs):
print(args1)
print(tupleArgs)
print(dictArgs)
names = ['HTY', 'LFF', 'ZH']
info = {'schoolName' : 'NJRU', 'City' : 'Nanjing'}
greeting('Hello,', *names, **info)
- A. Hello, ('HTY', 'LFF', 'ZH')
- B. ['HTY', 'LFF', 'ZH']
- C. 出錯
- D. 無輸出
答案:A
- 下面代碼的執行結果是( )
def greeting(args1, *tupleArgs, **dictArgs):
print(args1)
print(tupleArgs)
print(dictArgs)
names = ['HTY', 'LFF', 'ZH']
info = {'schoolName' : 'NJRU', 'City' : 'Nanjing'}
greeting(*names,'Hello,',**info)
- A. HTY ('LFF', 'ZH', 'Hello,')
- B. 出錯
- C. 無輸出
- D. ['HTY', 'LFF', 'ZH']
答案:A
- 下面程序的運行結果為( )。
a=10
def setNumber():
a=100
setNumber()
print(a)
- A. 10
- B. 100
- C. 10100
- D. 10010
答案:A
- 下面程序的運行結果為( )。
def swap(list):
temp=list[0]
list[0]=list[1]
list[1]=temp
list=[1,2]
swap(list)
print(list)
- A. [1,2]
- B. [2,1]
- C. [2,2]
- D. [1,1]
答案:B
- 對於函數ask,以下調用錯誤的是( )項?
def ask(prompt = "Do you like Python? ", hint = "yes or no"):
while True:
answer = input(prompt)
if answer.lower() in ('y', 'yes'):
print ("Thank you")
return True
if answer.lower() in ('n', 'no'):
print("Why not ")
return False
else:
print(hint)
- A. answer.lower() 是調用了string自帶函數lower(),將輸入轉換為小寫字母。
- B. 調用函數ask(),在交互頁面輸入N,則會繼續打印yes or no提示你繼續輸入。
- C. 調用函數ask(),在交互頁面輸入x,則會打印yes or no,如果繼續輸入y,則會打印Thank you並退出ask()函數的執行同時返回值True。
- D. 函數調用ask("Do you like Python? ")與ask()效果一致
答案:B
- 以下程序的輸出結果是( )
ab = 4
def myab(ab, xy):
ab= pow(ab,xy)
print(ab,end=" ")
myab(ab,2)
print( ab)
- A. 4 4
- B. 16 16
- C. 4 16
- D. 16 4
答案:D
- 以下程序的輸出結果是:
fr = []
def myf(frame):
fa = ['12','23']
fr = fa
myf(fr)
print( fr)
- A. ['12', '23']
- B. '12', '23'
- C. 12 23
- D. []
答案:D
- 下列有關函數的說法中,正確的是( )
- A. 函數的定義必須在程序的開頭
- B. 函數定義后,其中的程序就可以自動執行
- C. 函數定義后需要調用才會執行
- D. 函數體與關鍵字def必須左對齊
答案:C
- 使用( )關鍵字創建自定義函數
- A. function
- B. func
- C. def
- D. procedure
答案:C
- 以下代碼中的print_menu( )函數是哪種分類
def print_menu():
print('--------------------------')
print(' xx涮涮鍋 點菜系統')
print(' 1. 羊肉涮涮鍋')
print(' 2. 牛肉涮涮鍋')
print(' 3. 豬肉涮涮鍋')
print('--------------------------')
print_menu()
- A. 無參無返回值函數
- B. 無參有返回值函數
- C. 有參無返回值函數
- D. 有參有返回值函數
答案:A
- 以下代碼中calculate( )函數屬於哪個分類
def calculate(number):
result = 0
i = 1
while i <= number:
result = result + i
i += 1
return result
result = calculate(100)
print('1~100的累積和為:', result)
- A. 無參無返回值函數
- B. 無參有返回值函數
- C. 有參無返回值函數
- D. 有參有返回值函數
答案:D
- 寫出下面代碼的運行結果。
def Sum(a, b=3, c=5):
print(a,b,c)
Sum(a=8, c=2)
- A. 8 2
- B. 8,2
- C. 8 3 2
- D. 8,3,2
答案:C
- 寫出下面代碼的運行結果。
def Sum(a, b=3, c=5):
print(a,b,c)
Sum(8)
- A. 8
- B. 8 3 5
- C. 8,3,5
- D. 0 3 5
答案:B
- 寫出下面代碼的運行結果。
def Sum(a, b=3, c=5):
print(a,b,c)
Sum(8,2)
- A. 8 2
- B. 8,2
- C. 8,2,5
- D. 8 2 5
答案:D
- 使用( )關鍵字聲明匿名函數
- A. function
- B. func
- C. def
- D. lambda
答案:D
二. 填空題(共47題,23.5分)
- Python中定義函數的關鍵字是______________。
- 答案: def
- 在函數內部可以通過關鍵字來定義全局變量______________。
- 答案: global
- 如果函數中沒有return語句或者return語句不帶任何返回值,那么該函數的返回值為______________。
- 答案: None
- 表達式sum(range(10))的值為______________。
- 答案: 45
- 表達式sum(range(1,10,2))的值為。
- 答案: 25
- 表達式list(filter(None,[0,1,2,3,0,0]))的值為______________。
- 答案: [1,2,3]
- 表達式list(filter(lambda x:x>2,[0,1,2,3,0,0]))的值為______________。
- 答案: [3]
- 表達式list(range(50,60,3))的值為______________。
- 答案: [50,53,56,59]
- 表達式list(filter(lambda x:x%2==0,range(10)))的值為______________。
- 答案: [0,2,4,6,8]
- 表達式list(filter(lambda x:len(x)>3,['a','b','abcd']))的值為______________。
- 答案:['abcd']
- 已知g=lambda x,y=3,z=5:xyz,則語句print(g(1))的輸出結果為______________。
- 答案: 15
- 表達式list(map(lambda x: len(x), ['a', 'bb','ccc']))的值為______________。
- 答案: [1,2,3]
- 已知f = lambda x: x+5,那么表達式f(3) 的值為______________。
- 答案: 8
- 表達式sorted(['abc', 'acd', 'ade'], key=lambda x:(x[0],x[2]))的值為______________。
- 答案:['abc', 'acd', 'ade']
- 已知函數定義def demo(x,y,op):return eval(str(x)+op+str(y)),那么表達式demo(3,5,'+') 的值為______________。
- 答案: 8
- 已知函數定義def demo(x,y,op):return eval(str(x)+op+str(y)),那么表達式demo(3,5,'*') 的值為______________。
- 答案: 15
- 已知函數定義def demo(x,y,op):return eval(str(x)+op+str(y)),那么表達式demo(3,5,'-')的值為______________。
- 答案:-2
- 已知f =lambda n: len(bin(n)[bin(n).rfind('1')+1:]),那么表達式f(6) 的值為______________。
- 答案: 1
- 已知f =lambda n: len(bin(n)[bin(n).rfind('1')+1:]),那么表達式f(7) 的值為______________。
- 答案: 0
- 已知g = lambda x, y=3, z=5: x+y+z,那么表達式g(2) 的值為______________。
- 答案: 10
- 已知函數定義def func(*p):return sum(p),那么表達式func(1,2,3)的值為______________。
- 答案: 6
- 已知函數定義def func(*p):return sum(p), 那么表達式func(1,2,3, 4)的值為______________。
- 答案: 10
- 已知函數定義def func(**p):return sum(p.values()),那么表達式func(x=1, y=2, z=3)的值為______________。
- 答案: 6
- 已知函數定義def func(**p):return ''.join(sorted(p)),那么表達式func(x=1,y=2,z=3) 的值為______________。
- 答案: 'xyz'
- 已知f = lambda x:5,那么表達式f(3) 的值為______________。
- 答案: 5
- Python使用關鍵字來定義類______________。
- 答案: class
- 表達式isinstance('abc',str)的值為______________。
- 答案: True
- 表達式isinstance('abc',int)的值為______________。
- 答案:False
- 表達式isinstance(4j,(int,float,complex))的值為______________。
- 答案: True
- 表達式isinstance('4',(int,float,complex))的值為______________。
- 答案: False
- 表達式type(3) in (int, float,complex)的值為______________。
- 答案:True
- 表達式type(3.0) in (int, float,complex)的值為______________。
- 答案: True
- 表達式type(3+4j) in (int, float,complex)的值為______________。
- 答案: True
- 表達式type('3') in (int, float,complex)的值為______________。
- 答案: False
- 表達式type(3) ==int的值為______________。
- 答案: True
- 函數可以有多個參數,參數之間使用( )分隔
- 答案: 逗號
- 使用( )語句可以返回函數值並退出函數
- 答案: return
- 函數能處理比聲明時更多的參數,它們是( )參數
- 答案:不定長
- 運行結果是( )
def Sum(*p):
return sum(p)
print(Sum(3, 5, 8))
- 答案: 16
- 運行結果是( )
def func5(a, b, *c):
print(a,b)
func5(1,2,3,4,5,6)
- 答案: 1 2
- 在函數里面調用另外一個函數,這就是函數的( )調用
- 答案: 嵌套
- 在函數內部定義的變量稱作( )變量
- 答案: 局部
- ( )變量定義在函數外,可以在整個程序范圍內訪問
- 答案: 全局
- 如果想在函數中修改全局變量,需要在變量的前面加上( )關鍵字
- 答案: global
- 函數的遞歸是指在一個函數的內部調用函數( )的過程
- 答案: 本身
- 遞歸必須要有( ),否則就會陷入無限遞歸的狀態,無法結束調用
- 答案:結束條件
- 請在下列程序中橫線上填寫適當的代碼
#使用遞歸函數,輸出斐波拉契數列的前20位
def func(num):
if num==1 or num==2:
return 1
else:
return
print("斐波拉契數列的前20位的數是:",end="")
for i in range(1,21):
print(func(i),end=" ")
- 答案: func(num-1)+func(num-2)
三. 判斷題(共65題,41分)
- 調用函數時,在實參前面加一個型號*表示序列解包。
- A. 對
- B. 錯
答案:對
- 在Python 中語句 print(*[1,2,3]) 不能正確執行。
- A. 對
- B. 錯
答案:錯
- 函數是代碼復用的一種方式。
- A. 對
- B. 錯
答案:對
- 定義函數時,即使該函數不需要接收任何參數,也必須保留一對空的圓括號來表示這是一個函數。
- A. 對
- B. 錯
答案:對
- 編寫函數時,一般建議先對參數進行合法性檢查,然后再編寫正常的功能代碼。
- A. 對
- B. 錯
答案:對
- 一個函數如果帶有默認值參數,那么必須所有參數都設置默認值。
- A. 對
- B. 錯
答案:錯
- 定義Python函數時必須指定函數返回值類型。
- A. 對
- B. 錯
答案:錯
- 定義Python函數時,如果函數中沒有return語句,則默認返回空值None。
- A. 對
- B. 錯
答案:對
- 如果在函數中有語句 return 3,那么該函數一定會返回整數3。
- A. 對
- B. 錯
答案:錯
- 函數中必須包含return語句。
- A. 對
- B. 錯
答案:錯
- 函數中的return語句一定能夠得到執行。
- A. 對
- B. 錯
答案:錯
- 不同作用域中的同名變量之間互相不影響,也就是說,在不同的作用域內可以定義同名的變量。
- A. 對
- B. 錯
答案:對
- 全局變量會增加不同函數之間的隱式耦合度,從而降低代碼可讀性,因此應盡量避免過多使用全局變量。
- A. 對
- B. 錯
答案:對
- 函數內部定義的局部變量當函數調用結束后被自動刪除。
- A. 對
- B. 錯
答案:對
- 在函數內部,既可以使用global來聲明使用外部全局變量,也可以使用global直接定義全局變量。
- A. 對
- B. 錯
答案:對
- 在函數內部沒有辦法定義全局變量。
- A. 對
- B. 錯
答案:錯
- 在函數內部直接修改形參的值並不影響外部實參的值。
- A. 對
- B. 錯
答案:對
- 在函數內部沒有任何方法可以影響實參的值。
- A. 對
- B. 錯
答案:錯
- 調用帶有默認值參數的函數時,不能為默認值參數傳遞任何值,必須使用函數定義時設置的默認值。
- A. 對
- B. 錯
答案:錯
- 在同一個作用域內,局部變量會隱藏同名的全局變量。
- A. 對
- B. 錯
答案:對
- 形參可以看做是函數內部的局部變量,函數運行結束之后形參就不可訪問了。
- A. 對
- B. 錯
答案:對
- 假設已導入random標准庫,那么表達式 max([(1, 10) for i in range(10)]) 的值一定是10。
- A. 對
- B. 錯
答案:錯
- Python標准庫random的方法randint(m,n)用來生成一個[m,n]區間上的隨機整數。
- A. 對
- B. 錯
答案:對
- 在函數內部沒有任何聲明的情況下直接為某個變量賦值,這個變量一定是函數內部的局部變量。
- A. 對
- B. 錯
答案:對
- 在Python中定義函數時不需要聲明函數參數的類型。
- A. 對
- B. 錯
答案:對
- 在Python中定義函數時不需要聲明函數的返回值類型。
- A. 對
- B. 錯
答案:對
- 在函數中沒有任何辦法可以通過形參來影響實參的值。
- A. 對
- B. 錯
答案:錯
- 已知 x = 3,那么執行語句 x+=6 之后,x的內存地址不變。
- A. 對
- B. 錯
答案:錯
- 在定義函數時,某個參數名字前面帶有一個*符號表示可變長度參數,可以接收任意多個普通實參並存放於一個元組之中。
- A. 對
- B. 錯
答案:對
- 在定義函數時,某個參數名字前面帶有兩個*符號表示可變長度參數,可以接收任意多個關鍵參數並將其存放於一個字典之中。
- A. 對
- B. 錯
答案:對
- 定義函數時,帶有默認值的參數必須出現在參數列表的最右端,任何一個帶有默認值的參數右邊不允許出現沒有默認值的參數。
- A. 對
- B. 錯
答案:對
- 在調用函數時,可以通過關鍵參數的形式進行傳值,從而避免必須記住函數形參順序的麻煩。
- A. 對
- B. 錯
答案:對
- 在調用函數時,必須牢記函數形參順序才能正確傳值。
- A. 對
- B. 錯
答案:錯
- 調用函數時傳遞的實參個數必須與函數形參個數相等才行。
- A. 對
- B. 錯
答案:錯
- 在編寫函數時,建議首先對形參進行類型檢查和數值范圍檢查之后再編寫功能代碼,或者使用異常處理結構,盡量避免代碼拋出異常而導致程序崩潰。
- A. 對
- B. 錯
答案:對
- lambda表達式中可以使用任意復雜的表達式,但是必須只編寫一個表達式。
- A. 對
- B. 錯
答案:對
- g = lambda x: 3不是一個合法的賦值表達式。
- A. 對
- B. 錯
答案:錯
- 包含yield語句的函數一般成為生成器函數,可以用來創建生成器對象。
- A. 對
- B. 錯
答案:對
- 在函數中yield語句的作用和return完全一樣。
- A. 對
- B. 錯
答案:錯
- 語句pass僅起到占位符的作用,並不會做任何操作。
- A. 對
- B. 錯
答案:對
- 無法使用lambda表達式定義有名字的函數。
- A. 對
- B. 錯
答案:錯
- 執行如下代碼后,ls內的值是[5,7,1]
ls = [1,7,5]
reversed(ls)
- A. 對
- B. 錯
答案:錯
- 有函數如下,如果a = 1, b = 2,然后調用foo(a,b),在函數外a,b的值依然為1,2
def foo(a,b):
a, b = 3,4
- A. 對
- B. 錯
答案:錯
- 引用庫及調用庫函數方式之一如下: 引用庫 import <庫名> 調用庫函數 <函數名>(<函數參數>)
- A. 對
- B. 錯
答案:錯
- 在函數中使用return語句可以返回值,所以函數中的return語句后一定要有值
- A. 對
- B. 錯
答案:錯
- 調用函數時傳遞的實參個數必須與函數形參個數相等才行
- A. 對
- B. 錯
答案:錯
- 使用函數的主要目的是實現代碼復用和降低編程難度
- A. 對
- B. 錯
答案:對
- 內置函數len()返回指定序列的元素個數,適用於列表、元組、字符串、字典、集合以及range等迭代對象
- A. 對
- B. 錯
答案:對
- 在函數內部,既可以使用global來聲明使用外部全局變量,也可以使用global直接定義全局變量
- A. 對
- B. 錯
答案:錯
- 函數定義時,在參數前面加一個星號表示可變數量變量
- A. 對
- B. 錯
答案:對
- 函數的名稱可以隨意命名
- A. 對
- B. 錯
答案:錯
- 不帶return的函數代表返回None
- A. 對
- B. 錯
答案:對
- 默認情況下,參數值和參數名稱是跟函數聲明定義的順序匹配的
- A. 對
- B. 錯
答案:對
- 函數定義完成后,系統會自動執行其內部的功能
- A. 對
- B. 錯
答案:錯
- 函數體以冒號起始,並且是縮進格式的
- A. 對
- B. 錯
答案:對
- 帶有默認值的參數位於參數列表的末尾
- A. 對
- B. 錯
答案:對
- 定義函數時,即使該函數不需要接收任何參數,也必須保留一對空的圓括號來表示這是一個函數。
- A. 對
- B. 錯
答案:對
- 一個函數如果帶有默認值參數,那么必須所有參數都設置默認值。
- A. 對
- B. 錯
答案:錯
- 調用帶有默認值參數的函數時,不能為默認值參數傳遞任何值,必須使用函數定義時設置的默認值。
- A. 對
- B. 錯
答案:錯
- 在定義函數時,某個參數名字前面帶有一個*符號表示可變長度參數,可以接收任意多個位置參數並存放於一個元組之中。
- A. 對
- B. 錯
答案:對
- 在定義函數時,某個參數名字前面帶有兩個*符號表示可變長度參數,可以接收任意多個關鍵參數並將其存放於一個字典之中。
- A. 對
- B. 錯
答案:對
- 位置參數必須在關鍵字參數的后面
- A. 對
- B. 錯
答案:錯
- 在調用函數時,可以通過關鍵參數的形式進行傳值,從而避免必須記住函數形參順序的麻煩。
- A. 對
- B. 錯
答案:對
- 調用函數時傳遞的實參個數必須與函數形參個數相等才行。
- A. 對
- B. 錯
答案:錯
- 局部變量的作用域是整個程序,任何時候使用都有效
- A. 對
- B. 錯
答案:錯
