|
|
发表于 4 天前
|
查看: 10 |
回复: 0
掌握Python函数是编程的基础,也是实现代码复用的核心。本练习题集涵盖了函数定义、参数传递、作用域、递归和高阶函数等关键知识点,帮助你系统检验对Python函数机制的理解。
一、单项选择题
-
关于 Python 函数的定义,以下说法正确的是:
① 函数定义时必须有参数
② 函数必须使用 return 语句返回值
③ 函数定义使用 def 关键字
④ 函数名不能与 Python 关键字相同,但可以与内置函数同名
-
以下函数调用会输出什么结果?
def test(a, b=2, c=3):
return a + b + c
print(test(1, c=4))
① 10
② 7
③ 程序出错
④ 6
-
关于函数参数,以下描述错误的是:
① 位置参数必须在关键字参数之前
② 默认参数必须放在非默认参数之后
③ *args 用于接收任意数量的位置参数
④ **kwargs 用于接收任意数量的关键字参数,但不能与位置参数混合使用
-
执行以下代码后,输出结果是:
x = 5
def change():
x = 10
print("函数内:", x)
change()
print("函数外:", x)
① 函数内:10 函数外:10
② 函数内:5 函数外:5
③ 函数内:10 函数外:5
④ 程序出错
-
以下关于递归函数的说法,正确的是:
① 递归函数必须包含 return 语句
② 递归函数必须有明确的终止条件
③ 递归函数比循环效率更高
④ Python 对递归深度没有限制
-
以下哪个选项是合法的 lambda 函数?
① lambda x: x*2
② lambda: return x2
③ lambda x, y: x+y; print(result)
④ def lambda(x): return x+1
-
以下代码的输出结果是:
def func(n):
if n == 0:
return 1
else:
return n * func(n-1)
print(func(4))
① 24
② 10
③ 程序出错
④ 120
-
关于 Python 的作用域规则,以下说法正确的是:
① 函数内部可以访问和修改全局变量而无需特殊声明
② 使用 global 关键字可以在函数内部创建全局变量
③ 嵌套函数中,内部函数不能访问外部函数的局部变量
④ LEGB 原则中的 E 表示External(外部模块)
-
以下代码使用了哪个高阶函数?
numbers = [1, 2, 3, 4, 5]
squares = list(map(lambda x: x**2, numbers))
① filter
② reduce
③ map
④ sorted
-
关于 Python 模块导入的说法,以下哪项是正确的?
① import 语句会重复加载同一个模块
② from module import * 只会导入模块中以单下划线 _ 开头的名称
③ 模块被首次导入时会执行该模块的顶层代码
④ import 导入模块时不会执行任何代码,只建立引用
二、判断题
- 函数定义时的参数称为实际参数,调用时的参数称为形式参数。( )
- 在函数中,return 语句可以返回多个值,这些值会被打包成元组。( )
- lambda 函数可以包含多条语句和复杂的逻辑结构。( )
- 在函数内部修改全局变量需要使用 global 关键字声明。( )
- 递归函数调用自身时,每次调用都会创建新的命名空间。( )
三、多项选择题
-
以下哪些是 Python 中合法的函数定义?
① def func(): pass
② def func(a, b=1): return a+b
③ def func(*args, *kwargs): pass
④ def func(a, b, /, c, , d): pass
-
关于函数返回值,以下哪些说法是正确的?
① 函数可以没有 return 语句,此时返回 None
② 函数可以返回多个值,实际上返回的是元组
③ return 语句执行后,函数立即结束
④ 一个函数只能有一个 return 语句
-
以下哪些情况会创建新的作用域?
① 函数定义
② 类定义
③ 模块导入
④ lambda 表达式
-
关于闭包,以下哪些描述是正确的?
① 闭包是函数和其相关引用环境的组合
② 闭包可以访问外部函数的局部变量
③ 闭包可以修改外部函数的局部变量
④ 所有嵌套函数都是闭包
-
以下哪些是 Python 内置的高阶函数?
① map
② filter
③ reduce
④ apply
四、程序填充题
-
以下函数用于计算斐波那契数列的第 n 项。请在下划线处补全代码。
def fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return ________ + ________
# 测试
print(fibonacci(6)) # 应输出8
-
以下函数使用递归计算 1 到 n 的和。请在下划线处补全代码。
def sum_to_n(n):
if n <= 0:
return 0
else:
return ________ + ________
# 测试
print(sum_to_n(5)) # 应输出15
-
以下函数用于判断一个数是否为偶数,使用 lambda 表达式实现。请在下划线处补全代码。
is_even = lambda x: ________
# 测试
print(is_even(4)) # 应输出True
print(is_even(5)) # 应输出False
五、编程题
-
字符串字符统计函数
编写一个函数 count_characters(s),统计传入字符串中各类字符的数量。
要求:
(1) 统计字符串中的数字、字母、空格、其他字符的数量。
(2) 返回一个包含四个计数的元组:(数字个数, 字母个数, 空格个数, 其他字符个数)。
(3) 使用 Python 字符串方法进行字符类型判断(如 .isdigit(), .isalpha() 等)。
(4) 编写主程序测试该函数。
主要变量:s, digit_count, letter_count, space_count, other_count
-
素数生成函数
编写一个函数 find_primes(N),找出小于正整数 N 的所有素数。
要求:
(1) 使用 is_prime() 函数判断每个数是否为素数。
(2) 返回一个包含所有素数的列表。
(3) 编写主程序测试该函数,输出小于 100 的所有素数及其个数。
(4) 使用循环遍历 2 到 N-1 的所有整数。
主要变量:N, primes, num
-
最大公约数与最小公倍数
编写两个函数:
gcd(a, b):计算两个整数的最大公约数(使用辗转相除法)。
lcm(a, b):计算两个整数的最小公倍数(利用最大公约数)。
要求:
(1) 最大公约数函数使用欧几里得算法(辗转相除法)。
(2) 最小公倍数函数调用最大公约数函数:lcm = a * b / gcd(a, b)。
(3) 编写主程序测试这两个函数。
主要变量:a, b, result_gcd, result_lcm
|
上一篇:PostgreSQL向量数据生成实战:基于正态分布的高效测试数据构建与AI编程下一篇:网络追踪技术深度解析:从浏览器指纹到跨设备追踪的隐私防护策略
|