一、單項選擇題(本大題共 10 小題)
1、關于 Python 函數的定義,以下說法正確的是:
① 函數定義時必須有參數
② 函數必須使用 return 語句返回值
③ 函數定義使用 def 關鍵字
④ 函數名不能與 Python 關鍵字相同,但可以與內置函數同名
2、以下函數調用會輸出什么結果?
print(test(1, c=4))① 10
② 7
③ 程序出錯
④ 6
3、關于函數參數,以下描述錯誤的是:
① 位置參數必須在關鍵字參數之前
② 默認參數必須放在非默認參數之后
③ *args 用于接收任意數量的位置參數
④ **kwargs 用于接收任意數量的關鍵字參數,但不能與位置參數混合使用
4、執行以下代碼后,輸出結果是:
print("函數外:", x)① 函數內:10 函數外:10
② 函數內:5 函數外:5
③ 函數內:10 函數外:5
④ 程序出錯
5、以下關于遞歸函數的說法,正確的是:
① 遞歸函數必須包含 return 語句
② 遞歸函數必須有明確的終止條件
③ 遞歸函數比循環效率更高
④ Python 對遞歸深度沒有限制
6、以下哪個選項是合法的 lambda 函數?
① lambda x: x**2
② lambda: return x*2
③ lambda x, y: x+y; print(result)
④ def lambda(x): return x+1
7、以下代碼的輸出結果是:
print(func(4))① 24
② 10
③ 程序出錯
④ 120
8、關于 Python 的作用域規則,以下說法正確的是:
① 函數內部可以訪問和修改全局變量而無需特殊聲明
② 使用 global 關鍵字可以在函數內部創建全局變量
③ 嵌套函數中,內部函數不能訪問外部函數的局部變量
④ LEGB 原則中的 E 表示External(外部模塊)
9、以下代碼使用了哪個高階函數?
squares = list(map(lambda x: x**2, numbers))① filter
② reduce
③ map
④ sorted
10、關于 Python 模塊導入的說法,以下哪項是正確的?
① import 語句會重復加載同一個模塊
② from module import * 只會導入模塊中以單下劃線 _ 開頭的名稱
③ 模塊被首次導入時會執行該模塊的頂層代碼
④ import 導入模塊時不會執行任何代碼,只建立引用
二、判斷題(本大題共 5 小題)
1、函數定義時的參數稱為實際參數,調用時的參數稱為形式參數。( )
2、在函數中,return 語句可以返回多個值,這些值會被打包成元組。( )
3、lambda 函數可以包含多條語句和復雜的邏輯結構。( )
4、在函數內部修改全局變量需要使用 global 關鍵字聲明。( )
5、遞歸函數調用自身時,每次調用都會創建新的命名空間。( )
三、多項選擇題(本大題共 5 小題)
1、以下哪些是 Python 中合法的函數定義?
① def func(): pass
② def func(a, b=1): return a+b
③ def func(*args, **kwargs): pass
④ def func(a, b, /, c, *, d): pass
2、關于函數返回值,以下哪些說法是正確的?
① 函數可以沒有 return 語句,此時返回 None
② 函數可以返回多個值,實際上返回的是元組
③ return 語句執行后,函數立即結束
④ 一個函數只能有一個 return 語句
3、以下哪些情況會創建新的作用域?
① 函數定義
② 類定義
③ 模塊導入
④ lambda 表達式
4、關于閉包,以下哪些描述是正確的?
① 閉包是函數和其相關引用環境的組合
② 閉包可以訪問外部函數的局部變量
③ 閉包可以修改外部函數的局部變量
④ 所有嵌套函數都是閉包
5、以下哪些是 Python 內置的高階函數?
① map
② filter
③ reduce
④ apply
四、程序填充題(本大題共 3 小題)
1、以下函數用于計算斐波那契數列的第 n 項。請在下劃線處補全代碼。
print(fibonacci(6)) # 應輸出82、以下函數使用遞歸計算 1 到 n 的和。請在下劃線處補全代碼。
print(sum_to_n(5)) # 應輸出153、以下函數用于判斷一個數是否為偶數,使用 lambda 表達式實現。請在下劃線處補全代碼。
print(is_even(5)) # 應輸出False五、編程題(本大題共 3 小題)
1、字符串字符統計函數
編寫一個函數 count_characters(s),統計傳入字符串中各類字符的數量。
要求:
(1)統計字符串中的數字、字母、空格、其他字符的數量
(2)返回一個包含四個計數的元組:(數字個數, 字母個數, 空格個數, 其他字符個數)
(3)使用 Python 字符串方法進行字符類型判斷(如.isdigit(), .isalpha() 等)
編寫主程序測試該函數
(4)主要變量:s, digit_count, letter_count, space_count, other_count
2、素數生成函數
編寫一個函數 find_primes(N),找出小于正整數 N 的所有素數。
要求:
(1)使用 is_prime() 函數判斷每個數是否為素數
(2)返回一個包含所有素數的列表
(3)編寫主程序測試該函數,輸出小于 100 的所有素數及其個數
(4)使用循環遍歷 2 到 N-1 的所有整數
(5)主要變量:N, primes, num
3、最大公約數與最小公倍數
編寫兩個函數:
gcd(a, b):計算兩個整數的最大公約數(使用輾轉相除法)
lcm(a, b):計算兩個整數的最小公倍數(利用最大公約數)
要求:
(1)最大公約數函數使用歐幾里得算法(輾轉相除法)
(2)最小公倍數函數調用最大公約數函數:lcm = a * b / gcd(a, b)
(3)編寫主程序測試這兩個函數
(4)主要變量:a, b, result_gcd, result_lcm
“點贊有美意,贊賞是鼓勵”
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.