青少年编程等级Python四级真题.docx
《青少年编程等级Python四级真题.docx》由会员分享,可在线阅读,更多相关《青少年编程等级Python四级真题.docx(22页珍藏版)》请在冰豆网上搜索。
青少年编程等级Python四级真题
2021/12青少年软件编程(Python)等级考试试卷(四级)
分数:
100 题数:
38
一、单选题(共25题,共50分)
1.Python中函数不包括?
()
A. 标准函数
B. 第三库函数
C. 内建函数
D. 参数函数
试题编号:
20200316-ysy-008
试题类型:
单选题
标准答案:
D
试题难度:
一般
试题解析:
2.以下关于函数参数和返回值的描述,正确的是?
()
A. 关键字传递是根据每个参数的名字传递参数,实参的顺序需要和形参的顺序一致。
B. 可选参数传递指的是没有传入对应参数值的时候,就不使用该参数。
C. 函数能同时返回多个值,需要形成一个列表来返回。
D. 给参数赋予默认值,如果该参数最终没有被传递值,将使用该默认值。
试题编号:
20200316-ysy-010
试题类型:
单选题
标准答案:
D
试题难度:
一般
试题解析:
3.关于import引用,以下选项中描述错误的是?
()
A. 使用importturtle引入turtle库。
B. 可以使用fromturtleimportsetup引入turtle库。
C. 使用importturtleast引入turtle库,取别名为t。
D. import保留字用于导入模块或者模块中的对象。
试题编号:
20200317-ysy-001
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
4.关于算法的描述,以下选项中错误的是?
()
A. 算法是指解题方案的准确而完整的描述。
B. 算法的复杂度主要包括时间复杂度和数据复杂度。
C. 算法具有可行性、确定性、有穷性的基本特征。
D. 算法的基本要素包括数据对象的运算和操作及算法的控制结构。
试题编号:
20200325-ysy-002
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。
5.变量的作用域是指程序代码所能够访问到该变量的区域,以下表述中哪一个是错误的?
()
A. 在函数内部定义的变量是局部变量
B. 在函数外部定义的变量是全局变量
C. 在函数外部可以使用函数内部定义的变量
D. 在函数内部可以使用函数外部定义的变量
试题编号:
20200402-xc-007
试题类型:
单选题
标准答案:
C
试题难度:
一般
试题解析:
在函数内部声明的变量不能在函数外部访问,函数内部声明的变量为局部变量,其作用域仅限于函数内部。
有局部变量就有全局变量,全局变量是指在模块范围内的全局变量,其作用域是整个模块。
全局变量可以在模块内的函数内部使用,但需要遵循先声明后使用的原则。
6.有以下程序,运行程序输出的结果是?
()
x=1
defdemo():
x=2
print(x)
demo()
print(x)
A. 1
1
B. 2
1
C. 1
2
D. 2
2
试题编号:
20200402-xc-010
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
在函数内部声明的变量不能在函数外部访问,函数内部声明的变量为局部变量,其作用域仅限于函数内部。
有局部变量就有全局变量,全局变量是指在模块范围内的全局变量,其作用域是整个模块。
全局变量可以在模块内的函数内部使用,但需要遵循先声明后使用的原则。
7.匿名函数是指没有名字的函数,Python中需要使用哪一个表达式来创建匿名函数?
()
A. function
B. filter
C. lambda
D. global
试题编号:
20200402-xc-011
试题类型:
单选题
标准答案:
C
试题难度:
容易
试题解析:
匿名函数是指没有名字的函数,Python中需要使用lambda关键字表达式来创建匿名函数。
8.函数调用可以分为将实际参数的值传递给形式参数,以及将实际参数引用传递给形式参数,如果实际参数是可变对象,以下关于函数形式参数和实际参数的表述正确的是?
()
A. 值传递可以改变实际参数的值,但是形式参数的值不能改变
B. 值传递可以改变形式参数的值,但是实际参数的值不能改变
C. 值传递可以同时改变形式参数和实际参数的值
D. 值传递既不能改变实际参数的值,也不能改变形式参数的值
试题编号:
20200402-xc-012
试题类型:
单选题
标准答案:
C
试题难度:
较难
试题解析:
函数调用可以分为将实际参数的值传递给形式参数,以及将实际参数引用传递给形式参数,如果实际参数是可变对象,值传递可以同时改变形式参数和实际参数的值。
9.关于函数,以下选项中描述错误的是?
()
A. 函数是一段具有特定功能的、可重复用的语句组
B. 函数能完成特定的功能,对函数的使用不需要了解函数内部实现原理,只要了解函数的输入输出方式即可
C. 使用函数的主要目的是降低编程难度和代码重用
D. Python使用del保留字定义一个函数
试题编号:
20200402-xc-014
试题类型:
单选题
标准答案:
D
试题难度:
一般
试题解析:
Python使用def保留字定义一个函数
10.在Python中,以下关于函数的描述错误的一项是?
()
A. 默认参数的值可以修改
B. 引入了函数式编程的思想,函数本身亦为对象
C. 关键字参数在使用时不允许改变参数列表中的参数顺序
D. 函数的return语句可以以元组的方式返回多个值
试题编号:
20200402-xc-017
试题类型:
单选题
标准答案:
C
试题难度:
一般
试题解析:
关键字参数在使用时没有顺序限制,但是如果参数中有位置参数,关键字参数必须位于位置参数之后。
11.关于Python的自定义函数的说法,下列哪个表述是错误的?
()
A. 函数名的命名规则与变量名的命名规则相同
B. 如果有多个参数,各参数之间使用“;”隔开
C. 即使函数没有参数,也必须在函数名后面保留一对空的“()”
D. 函数体相对于自定义函数的关键字必须保持一定的缩进
试题编号:
20200402-xc-024
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
自定义函数名的命名规则与变量名的命名规则相同,如果有多个参数,各参数之间使用“,”隔开,即使函数没有参数,也必须在函数名后面保留一对空的“()”,函数体相对于自定义函数的关键字必须保持一定的缩进。
12.执行以下程序,以下表述中错误的一个是?
()
defdemo(a,b):
c=a**2+b
b=a
returnc
a=10
b=100
c=demo(a,b)+a
A. 该函数名称为demo
B. 执行该函数后,变量a的值为10
C. 执行该函数后,变量b的值为100
D. 执行该函数后,变量c的值为200
试题编号:
20200402-xc-027
试题类型:
单选题
标准答案:
D
试题难度:
一般
试题解析:
调用后函数返回值局部变量c为200,调用结束时程序返回到调用出,全局变量c=200+10=210。
13.调用函数时,使用位置参数接收实际参数,以下表述正确的是?
()
A. 指定的实际参数必须与形式参数的数量一致,位置一致
B. 指定的实际参数必须与形式参数的数量一致,位置可以不一致
C. 指定的实际参数必须与形式参数的位置一致,数量可以不一致
D. 指定的实际参数与形式参数的数量以及位置不需要一致
试题编号:
20200402-xc-028
试题类型:
单选题
标准答案:
A
试题难度:
一般
试题解析:
位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致,否则Python解释器会抛出TypeError异常,并提示缺少必要的位置参数。
14.设有以下函数,运行程序输出的结果是?
()
defdemo(a,b):
a*=b
returna
s=demo(5,2)
print(s)
A. 5
B. 10
C. 12
D. 20
试题编号:
20200402-xc-030
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
函数返回5*2的结果。
15.递归算法的执行过程,一般来说,可先后分成以下哪两个阶段?
()
A. 穷举和回归
B. 递推和回归
C. 穷举和回溯
D. 递推和回溯
试题编号:
20200404-xc-003
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
用递归描述的算法通常有这样的特征:
为求解规模为N的问题,设法将它分解成一些规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模稍大问题的解。
特别地,当规模N=1时,能直接得到解。
递归算法的执行过程分递推和回归两个阶段。
在递推阶段,把较复杂的问题的求解推到比原问题简单一些的问题的求解;在回归阶段,当获得最简单情况的解后,逐级返回,依次获得稍复杂问题的解。
16.设某算法的计算时间表示为递推关系式T(n)=T(n-1)+n(n为正整数)及T(0)=1,该算法的时间复杂度为以下哪一项?
()
A. O(log2n)
B. O(nlog2n)
C. O(n)
D. O(n2)
试题编号:
20200404-xc-007
试题类型:
单选题
标准答案:
D
试题难度:
较难
试题解析:
T(n)=T(n-1)+n
T(n)=(T(n-2)+n-1)+n
T(n)=T(0)....n-2+n-1+n=n*(n+1)/2,当n趋近于无穷大的时候,T(n)=n*n。
17.运行以下程序,正确的打印结果是?
()
defsum1(arg1,arg2):
total=arg1+arg2
returntotal
t=sum1(10,20)
print(t)
A. 10
B. 20
C. 30
D. 40
试题编号:
20200413-zwy-020
试题类型:
单选题
标准答案:
C
试题难度:
一般
试题解析:
知识点:
自定义函数的创建与调用
18.若要求出把a个元素分成b个子集,有多少种可能性,例:
function(4,2)返回值为7,则返回值中函数的参数分别为?
()
deffunction(a,b):
if(b==1orb==a):
return1
else:
returnfunction( )+b*function(a-1,b)
A. (a-1,b-1)
B. (a+1,b-1)
C. (a-1,b+1)
D. (a+1,b+1)
试题编号:
20200413-zwy-035
试题类型:
单选题
标准答案:
A
试题难度:
一般
试题解析:
知识点:
分治算法
19.下列属于math库中的数学函数是?
()
A. time()
B. round()
C. sqrt()
D. random()
试题编号:
20200413-zwy-040
试题类型:
单选题
标准答案:
C
试题难度:
容易
试题解析:
知识点:
第三方库的调用
20.运行下列代码,正确的输出结果是?
()
defyang(n):
ifn==0:
return[1]
else:
return[([0]+yang(n-1))[i]+(yang(n-1)+[0])[i] foriinrange(n+1)]
print(yang(4))
A. [1,4,6,4,1]
B. [1,5,10,10,5,1]
C. [1,1,1]
D. [1,3,3,1]
试题编号:
20200413-zwy-042
试题类型:
单选题
标准答案:
A
试题难度:
较难
试题解析:
知识点:
递归与递推
21.下列程序段的运行结果为?
()
deff(n):
ifn<=0:
return1
else:
returnf(n-1)*3
print(f(4))
A. 9
B. 27
C. 81
D. 243
试题编号:
20211109-ssn-001
试题类型:
单选题
标准答案:
C
试题难度:
一般
试题解析:
f(4)=f(3)*3=f
(2)*3*3=f
(1)*3*3*3=f(0)*3*3*3*3=1*81=81
22.以下函数要实现3的阶乘,则应补充选项为?
()
deffunc(m):
if(___):
returnfunc(m+1)*m
else:
return1
print(func
(1))
A. m<3
B. m<=3
C. m<=4
D. m<=2
试题编号:
20211109-ssn-002
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
23.对于数列1,2,8,11,15,17,19,25,30,45,采用“二分查找”法查找11,需要查找多少次?
()
A. 5
B. 4
C. 3
D. 2
试题编号:
20211109-ssn-003
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
按二分查找法的规律,每次先查找中间值,进行比较。
24.下面哪种算法使用了分治的方法?
()
A. 冒泡排序
B. 选择排序
C. 插入排序
D. 对分查找
试题编号:
20211109-ssn-004
试题类型:
单选题
标准答案:
D
试题难度:
一般
试题解析:
25.关于递归函数出口的说明,以下选项中错误的是?
()
A. 递归函数的出口决定递归的深度。
B. 每个递归函数都只能有一个递归出口。
C. 递归函数必须有出口。
D. 递归函数的出口不再进行递归。
试题编号:
20200316-ysy-001
试题类型:
单选题
标准答案:
B
试题难度:
一般
试题解析:
递归函数的出口必须有一个及以上。
比如斐波拉契数列,它的递归出口有两个f
(1)=1,f
(2)=1。
二、判断题(共10题,共20分)
26.运行如下图的代码,将不会报错而打印出数字7。
请判断对错!
正确 错误
试题编号:
20200319-LL-010
试题类型:
判断题
标准答案:
正确
试题难度:
一般
试题解析:
这题考查学生对函数“关键字调用”的理解,有意多加了变量a,干扰学生思维。
27.如下图代码,最后运行结果将会打印出数值6,请问对吗?
正确 错误
试题编号:
20200319-LL-026
试题类型:
判断题
标准答案:
正确
试题难度:
一般
试题解析:
最基本的递推,循环3次,每次累加2,答案为6,正确。
28.如果在printnum(number)函数内部想要使用全局变量value,那么就要在函数内部使用关键词global声明全局变量value。
value=10
defprintnum(number):
globalvalue
num=number+value
returnnum
正确 错误
试题编号:
20200320-wc-008
试题类型:
判断题
标准答案:
错误
试题难度:
较难
试题解析:
在函数内部通过global关键字,通过局部变量修改全局变量的值。
29.执行以下代码:
deffun():
x=15
print(x)
程序输出的结果为15。
正确 错误
试题编号:
20200407-zpf-003
试题类型:
判断题
标准答案:
错误
试题难度:
一般
试题解析:
30.执行以下代码:
deffunct():
print("Ilove")
deffunct_1():
print("Python")
funct()
程序输出的结果为:
IlovePython
正确 错误
试题编号:
20200407-zpf-013
试题类型:
判断题
标准答案:
错误
试题难度:
较难
试题解析:
31.执行以下代码:
Func(2,3)
defFunc(a,b):
z=a*b
returnz
程序返回结果为:
6
正确 错误
试题编号:
20200407-zpf-014
试题类型:
判断题
标准答案:
错误
试题难度:
一般
试题解析:
32.执行以下代码:
defadd(sum,x):
ifsum<10:
x+=2
sum=sum+x
add(sum,x)
returnsum
print(add(0,0))
程序输出的结果为:
2
正确 错误
试题编号:
20200407-zpf-024
试题类型:
判断题
标准答案:
正确
试题难度:
一般
试题解析:
33.执行以下代码:
deffun(m):
iflen(m)==1:
returnm[0]
mid=len(m)//2
l=fun(m[:
mid])
r=fun(m[mid:
])
returnl+r
m=[5,23,41,3,11]
print(fun(m))程序输出的结果为:
42
正确 错误
试题编号:
2020408-zpf-033
试题类型:
判断题
标准答案:
错误
试题难度:
较难
试题解析:
34.假设一个一维列表中有200个元素,列表中的元素都已经按降序排列,若采用二分搜索策略查找某一个元素,则最多需要8次比较就能确定是否存在所查找的元素。
正确 错误
试题编号:
2020408-zpf-036
试题类型:
判断题
标准答案:
正确
试题难度:
较难
试题解析:
35.当你安装的第三方库有一个或者多个依赖时,我们可以选择自动安装,直接运行pipinstallxxx(xxx为你要安装库的名字)。
正确 错误
试题编号:
2020408-zpf-038
试题类型:
判断题
标准答案:
正确
试题难度:
一般
试题解析:
三、编程题(共3题,共30分)
36.要求:
设计一个算法,求1~n(n为大于2的正整数)中有哪些素数,总共是多少个素数?
根据上述计算规则,补全下列代码。
函数名:
getPrime(n)
参数表:
n--n为大于2的正整数。
返回值:
返回素数组成的数组。
示例:
当n=9时,返回:
您输入的区间1-n中素数分别是:
[2,3,5,7],总共是4个素数!
primeList=[]
importmath
defgetPrime(n):
forxinrange(2,n+1):
x_sqrt= ①
forprimeinprimeList:
if ②
primeList.append(x)
break
if ③
break
else:
primeList.append(x)
returnprimeList
m=int(input("请您输入一个整数n:
"))
print('您输入的区间1-n中素数分别是:
'+ ④ )+',总共是'+str(len(primeList))+'个素数!
')
试题编号:
20200320-ph-001
试题类型:
编程题
标准答案:
评分标准:
①math.sqrt(x)或等效答案;(4分)
②prime>x_sqrt:
或等效答案;(3分)
③x%prime==0:
或等效答案;(3分)
④str(getPrime(m))或等效答案;(2分)
试题难度:
容易
试题解析:
参考程序:
primeList=[]
importmath
defgetPrime(n):
forxinrange(2,n+1):
x_sqrt=math.sqrt(x)
forprimeinprimeList:
ifprime>x_sqrt:
primeList.append(x)
break
ifx%prime==0:
break
else:
primeList.append(x)
returnprimeList
m=eval(input("请您输入一个整数n:
"))
print('您输入的区间1-n中素数分别是:
'+str(getPrime(m))+',总共是'+str(len(primeList))+'个素数!
')
37.编写上交作业的程序,老师要求把小组7位同学(编号为1,2,3,...,6,7)的作业收齐,小组编号1的同学跟编号2的同学说“收作业了”,之后每位同学依次向后面的一位同学说要“收作业了”,直到最后,编号7的同学将自己的作业,上交到编号6的同学手中,编号6的同学将编号