一、单项选择题(本大题共 10 小题)
1、关于 Python 函数的定义,以下说法正确的是:
① 函数定义时必须有参数
② 函数必须使用 return 语句返回值
③ 函数定义使用 def 关键字
④ 函数名不能与 Python 关键字相同,但可以与内置函数同名
2、以下函数调用会输出什么结果?
def test(a, b=2, c=3): return a + b + c print(test(1, c=4))① 10
② 7
③ 程序出错
④ 6
3、关于函数参数,以下描述错误的是:
① 位置参数必须在关键字参数之前
② 默认参数必须放在非默认参数之后
③ *args 用于接收任意数量的位置参数
④ **kwargs 用于接收任意数量的关键字参数,但不能与位置参数混合使用
4、执行以下代码后,输出结果是:
x = 5 def change(): x = 10 print("函数内:", x) change()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、以下代码的输出结果是:
def func(n): if n == 0: return 1 else: return n * func(n-1) print(func(4))① 24
② 10
③ 程序出错
④ 120
8、关于 Python 的作用域规则,以下说法正确的是:
① 函数内部可以访问和修改全局变量而无需特殊声明
② 使用 global 关键字可以在函数内部创建全局变量
③ 嵌套函数中,内部函数不能访问外部函数的局部变量
④ LEGB 原则中的 E 表示External(外部模块)
9、以下代码使用了哪个高阶函数?
numbers = [1, 2, 3, 4, 5]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 项。请在下划线处补全代码。
def fibonacci(n): if n <= 0: return 0 elif n == 1: return 1 else: return ________ + ________ # 测试print(fibonacci(6)) # 应输出82、以下函数使用递归计算 1 到 n 的和。请在下划线处补全代码。
def sum_to_n(n): if n <= 0: return 0 else: return ________ + ________ # 测试print(sum_to_n(5)) # 应输出153、以下函数用于判断一个数是否为偶数,使用 lambda 表达式实现。请在下划线处补全代码。
is_even = lambda x: ________# 测试print(is_even(4)) # 应输出Trueprint(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
附:参考答案与解析
“点赞有美意,赞赏是鼓励”