2025年9月青少年软件编程Python等级考试(四级)真题试卷
题目总数:38 总分数:100
选择题
第 1 题 单选题
下列关于Python中函数的描述,不正确的是?( )
A.
函数的定义可以在函数调用语句之后
B.
函数中通过return语句返回结果
C.
函数能提高代码的模块性和代码的复用率
D.
Python中使用def 函数名称 格式定义函数
答案
A
解析
Python中函数的定义必须在函数调用语句之前。
第 2 题 单选题
编写计算两数乘积的匿名函数,下列Python语句中正确的是?( )
A.
lambda a,b:a*b
B.
lambda a,b,a*b
C.
rst = lambda a,b,a*b
D.
rst = lambda a,b : a * b
答案
D
解析
关键字lambda表示匿名函数,冒号之前表示的是这个函数的参数,冒号之后表示的是返回值,在定义匿名函数时,需要将它赋值给一个变量。
第 3 题 单选题
有如下Python程序段,执行该程序段后,变量s的值是?( )
s = 1
def sums(num):
global s
s = 0
s = s + num
sums(5)
A.
0
B.
1
C.
5
D.
None
答案
C
解析
函数中变量s 被global语句定义为全局变量,因此函数中s变成5,在函数外s的值也是5。
第 4 题 单选题
Python定义函数语句中若传入的参数数量不确定,划线处正确的代码是?( )
def myfun(___):
A.
pass
B.
a
C.
a[]
D.
*args
答案
D
解析
Python函数中可变数量参数的传递使用*args。
第 5 题 单选题
有如下Python自定义函数:
def myfun(x,y,z)
return x+y*z
下列语句能正确调用该函数的是?( )
A.
myfun(1,2)
B.
myfun(1,2,3)
C.
myfun(x=1,2,3)
D.
myfun(1,y=2,3)
答案
B
解析
参数传递数量要一致,关键字参数要在位置参数后面。
第 6 题 单选题
下列关于函数返回值的描述中,正确的是?( )
A.
函数返回值的数据类型只能是整数
B.
函数中只能有一个return语句
C.
return语句中不能有表达式
D.
函数可以没有返回值
答案
D
解析
函数返回值可以是整数、字符串、列表等 ,函数可以没有返回值。
第 7 题 单选题
下列关于函数功能的描述中正确的是?( )
A.
可以避免编写重复的代码,提高代码复用
B.
函数允许将程序分解为多个模块或组件,每个组件负责完成一个特定的任务
C.
函数提供了一种抽象机制,允许我们隐藏实现细节,只暴露功能接口
D.
函数的大量使用增加了阅读程序的难度,使得程序可读性变差
答案
A
解析
函数的功能:代码复用,增强可读性。
第 8 题 单选题
小红打算每次打扫一半区域,直到剩余区域≤1平方米时停止。分治算法中,递归终止条件是?( )
A.
剩余区域 >1平方米
B.
剩余区域 ≤1平方米
C.
打扫次数超过5次
D.
每次打扫后检查是否干净
答案
B
解析
分治算法的终止条件是问题规模足够小可直接解决。选项B表明当剩余区域≤1平方米时,无需再分解,直接打扫。其他选项:A是继续分解的条件,非终止;C和D与问题规模无关,不符合分治逻辑。
第 9 题 单选题
图书馆有1000本按编号排序的书(1-1000),小刚想用分治算法快速找到编号为450的书。分治算法的正确步骤是?( )
A.
从第1本开始逐本查找,直到找到450
B.
随机抽取100本检查,若未找到则换一批
C.
将书分成两堆,依次查找两堆
D.
先找中间第500本书,如果书的编号 < 500,则在1-499中重复折半查找
答案
D
解析
分治算法的核心是分解-解决-合并。选项D正确体现二分查找的分治思想:分解:选择中间点(如500),将问题规模折半(1-499或501-1000)。解决:在子范围内递归查找。 合并:无需合并,直接找到目标。
第 10 题 单选题
老师需要合并两个已排序的学生成绩表(A班:70,80,90,B班:75,85,95),用分治算法合并成一个有序列表。合并过程中,分治算法的关键步骤是?( )
A.
直接拼接两个列表,然后整体排序
B.
随机打乱两个列表,重新排序
C.
逐个比较两列表当前最小元素,按序插入新列表
D.
仅保留高分,丢弃低分
答案
C
解析
分治中的合并操作需高效整合子问题结果。选项C是归并排序的合并逻辑:分解:将列表拆分为单个元素(已有序)。合并:比较两列表最小元素,按序插入新列表。 其他选项:A是暴力排序,非分治;B和D违背合并原则。
第 11 题 单选题
小明用Python语言编写一个递归函数fun()来计算从1加到n的所有整数之和。
比如 1+2+3+4+5 = 15
请为小明编写正确的递归函数,选择正确的选项是?( )
A.
def fun(n):
if n == 0:
return 0
else:
return n + fun(n+1)
fun(1)
B.
def fun(n):
if n == 0:
return 0
else:
return n + fun(n-1)
fun(5)
C.
def fun(n):
if n == 5:
return 5
else:
return n + fun(n+1)
fun(5)
D.
def fun(n):
if n == 5:
return 5
else:
return n + fun(n-1)
fun(1)
答案
B
解析
当n=0时返回0,否则返回n+fun(n-1), 递归调用fun(5)与递归边界和递归公式相符,结果正确。
第 12 题 单选题
植物园里有一棵智慧的老树精叫做"古拉",它的生长能力极强。如果一棵树每年都能长出两棵新树,那么从第一年开始,第n年总共有多少棵树?
例如:
第1年:1棵树
第2年:1 + 2 * 1 = 3棵树
第3年:3 + 2 * 3 = 9棵树
第4年:9 + 2 * 9 = 27棵树
请你帮忙完善Python递归函数,并选择正确的选项?( )
def tree(n):
if n == 1:
return 1
else:
return _______________
A.
2*(2 * tree(n-1) - 1) + 1
B.
2*tree(n-1) + 1
C.
3*tree(n-1)
D.
2*(tree(n-1)+1) - 1
答案
C
解析
根据题意:递归公式为 3*tree(n-1),递归边界条件为n等于1时返回1。选择C正确。
第 13 题 单选题
小明正在学习辗转相除法求两数的最大公约数,他用Python语言编写了如下程序,请问第二次调用gcd()函数时,函数实参是多少?递归函数总共调用了几次?( )
def gcd(a, b):
if a % b == 0:
return b
return gcd(b, a % b)
print(gcd(168, 66))
A.
gcd(168, 66), 4次
B.
gcd(66, 36), 3次
C.
gcd(66, 36), 4次
D.
gcd(36, 30), 3次
答案
C
解析
递归函数总共调用了4次,调用顺序如下:
gcd(168, 66)->gcd(66, 36)->gcd(36, 30)->gcd(30, 6)
第 14 题 单选题
小明在玩爬楼梯的游戏,需要爬n阶才能到达楼顶。规定每次只能爬1个或2个台阶,编写程序计算一共有多少种不同的方法可以爬到楼顶。
小明用Python语言编写了如下代码,下列哪个选项能得到正确结果?( )