分享

2021年12月电子学会Python等级考试试卷(四级)答案解析...

 昵称45893186 2022-11-03 发布于浙江

 

青少年软件编程(Python)等级考试试卷(四级)

分数:100  题数:38

总体情况

姓名 开始时间 结束时间 用时(分钟) 得分 得分率 是否通过 考试状态

朱子轩 2021-12-05 14:00:13 2021-12-05 15:00:22 59.97 45 0.45 N 已评卷

一、单选题(共25题,共50分)

1. Python 中函数不包括?( )

  A.  标准函数

B.  第三库函数

C.  内建函数

D.  参数函数

试题编号:20200316-ysy-008

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:

考生答案:A

考生得分:0

是否评分:已评分

评价描述:

2. 以下关于函数参数和返回值的描述,正确的是?( )

  A.  关键字传递是根据每个参数的名字传递参数,实参的顺序需要和形参的顺序一致。

B.  可选参数传递指的是没有传入对应参数值的时候,就不使用该参数。

C.  函数能同时返回多个值,需要形成一个列表来返回。

D.  给参数赋予默认值,如果该参数最终没有被传递值,将使用该默认值。

试题编号:20200316-ysy-010

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

3. 关于 import 引用,以下选项中描述错误的是?( )

  A.  使用 import turtle 引入turtle 库。

B.  可以使用 from turtle import setup 引入 turtle 库。

C.  使用 import turtle as t 引入 turtle 库,取别名为 t。

D.  import 保留字用于导入模块或者模块中的对象。

试题编号:20200317-ysy-001

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

4. 关于算法的描述,以下选项中错误的是?( )

  A.  算法是指解题方案的准确而完整的描述。

B.  算法的复杂度主要包括时间复杂度和数据复杂度。

C.  算法具有可行性、确定性、有穷性的基本特征。

D.  算法的基本要素包括数据对象的运算和操作及算法的控制结构。

试题编号:20200325-ysy-002

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

5. 变量的作用域是指程序代码所能够访问到该变量的区域,以下表述中哪一个是错误的?( )

  A.  在函数内部定义的变量是局部变量

B.  在函数外部定义的变量是全局变量

C.  在函数外部可以使用函数内部定义的变量

D.  在函数内部可以使用函数外部定义的变量

试题编号:20200402-xc-007

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:在函数内部声明的变量不能在函数外部访问,函数内部声明的变量为局部变量,其作用域仅限于函数内部。有局部变量就有全局变量,全局变量是指在模块范围内的全局变量,其作用域是整个模块。全局变量可以在模块内的函数内部使用,但需要遵循先声明后使用的原则。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

6. 有以下程序,运行程序输出的结果是? ( )

x=1

def demo(): 

    x=2 

    print(x) 

demo() 

print(x)

  A.  1 

1

B.  2 

1

C.  1 

2

D.  2 

2

试题编号:20200402-xc-010

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:在函数内部声明的变量不能在函数外部访问,函数内部声明的变量为局部变量,其作用域仅限于函数内部。有局部变量就有全局变量,全局变量是指在模块范围内的全局变量,其作用域是整个模块。全局变量可以在模块内的函数内部使用,但需要遵循先声明后使用的原则。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

7. 匿名函数是指没有名字的函数,Python中需要使用哪一个表达式来创建匿名函数?( )

  A.  function

B.  filter

C.  lambda

D.  global

试题编号:20200402-xc-011

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:匿名函数是指没有名字的函数,Python中需要使用lambda关键字表达式来创建匿名函数。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

8. 函数调用可以分为将实际参数的值传递给形式参数,以及将实际参数引用传递给形式参数,如果实际参数是可变对象,以下关于函数形式参数和实际参数的表述正确的是?( )

  A.  值传递可以改变实际参数的值,但是形式参数的值不能改变

B.  值传递可以改变形式参数的值,但是实际参数的值不能改变

C.  值传递可以同时改变形式参数和实际参数的值

D.  值传递既不能改变实际参数的值,也不能改变形式参数的值

试题编号:20200402-xc-012

试题类型:单选题

标准答案:C

试题难度:较难

试题解析:函数调用可以分为将实际参数的值传递给形式参数,以及将实际参数引用传递给形式参数,如果实际参数是可变对象,值传递可以同时改变形式参数和实际参数的值。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

9. 关于函数,以下选项中描述错误的是?( )

  A.  函数是一段具有特定功能的、可重复用的语句组

B.  函数能完成特定的功能,对函数的使用不需要了解函数内部实现原理,只要了解函数的输入输出方式即可

C.  使用函数的主要目的是降低编程难度和代码重用

D.  Python使用del保留字定义一个函数

试题编号:20200402-xc-014

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:Python使用def保留字定义一个函数

考生答案:B

考生得分:0

是否评分:已评分

评价描述:

10. 在Python中,以下关于函数的描述错误的一项是?( )

  A.  默认参数的值可以修改

B.  引入了函数式编程的思想,函数本身亦为对象

C.  关键字参数在使用时不允许改变参数列表中的参数顺序

D.  函数的return语句可以以元组的方式返回多个值

试题编号:20200402-xc-017

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:关键字参数在使用时没有顺序限制,但是如果参数中有位置参数,关键字参数必须位于位置参数之后。

考生答案:D

考生得分:0

是否评分:已评分

评价描述:

11. 关于Python的自定义函数的说法,下列哪个表述是错误的?( )

  A.  函数名的命名规则与变量名的命名规则相同

B.  如果有多个参数,各参数之间使用“;”隔开

C.  即使函数没有参数,也必须在函数名后面保留一对空的“()”

D.  函数体相对于自定义函数的关键字必须保持一定的缩进

试题编号:20200402-xc-024

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:自定义函数名的命名规则与变量名的命名规则相同,如果有多个参数,各参数之间使用“,”隔开,即使函数没有参数,也必须在函数名后面保留一对空的“()”,函数体相对于自定义函数的关键字必须保持一定的缩进。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

12. 执行以下程序,以下表述中错误的一个是? ( )

def demo(a,b): 

    c=a**2+b 

    b=a 

    return c 

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。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

13. 调用函数时,使用位置参数接收实际参数,以下表述正确的是?( )

  A.  指定的实际参数必须与形式参数的数量一致,位置一致

B.  指定的实际参数必须与形式参数的数量一致,位置可以不一致

C.  指定的实际参数必须与形式参数的位置一致,数量可以不一致

D.  指定的实际参数与形式参数的数量以及位置不需要一致

试题编号:20200402-xc-028

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致,否则 Python 解释器会抛出 TypeError 异常,并提示缺少必要的位置参数。

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

14. 设有以下函数,运行程序输出的结果是? ( )

def demo(a,b): 

    a*=b 

    return a 

s=demo(5,2) 

print(s)

  A.  5

B.  10

C.  12

D.  20

试题编号:20200402-xc-030

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:函数返回5*2的结果。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

15. 递归算法的执行过程,一般来说,可先后分成以下哪两个阶段?( )

  A.  穷举和回归

B.  递推和回归

C.  穷举和回溯

D.  递推和回溯

试题编号:20200404-xc-003

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成一些规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模稍大问题的解。特别地,当规模N=1时,能直接得到解。 递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题的求解推到比原问题简单一些的问题的求解;在回归阶段,当获得最简单情况的解后,逐级返回,依次获得稍复杂问题的解。

考生答案:D

考生得分:0

是否评分:已评分

评价描述:

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。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

17. 运行以下程序,正确的打印结果是?( )

def sum1( arg1, arg2 ):
    total = arg1 + arg2
    return total
t= sum1( 10, 20 )
print(t)

  A.  10

B.  20

C.  30

D.  40

试题编号:20200413-zwy-020

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:知识点:自定义函数的创建与调用

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

18. 若要求出把a个元素分成b个子集,有多少种可能性,例:function(4,2)返回值为7,则返回值中函数的参数分别为?( )

def function(a,b):

    if (b == 1 or b == a):

        return 1

    else:

        return function(   )+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

试题难度:一般

试题解析:知识点:分治算法

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

19. 下列属于math库中的数学函数是?( )

  A.  time()

B.  round()

C.  sqrt()

D.  random()

试题编号:20200413-zwy-040

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:知识点:第三方库的调用

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

20. 运行下列代码,正确的输出结果是?( )

def yang(n):

    if n == 0:

        return [1]

    else:

        return[([0]+yang(n-1))[i]+(yang(n-1)+[0])[i]  for i in range(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

试题难度:较难

试题解析:知识点:递归与递推

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

21. 下列程序段的运行结果为?( ) 
def f(n):
    if n<=0:
         return 1
    else:
        return f(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

考生答案:D

考生得分:0

是否评分:已评分

评价描述:

22. 以下函数要实现3的阶乘,则应补充选项为?( )

def func(m):

    if(___):

        return func(m+1)*m

    else:

        return 1

print(func(1))

  A.  m<3

B.  m<=3

C.  m<=4

D.  m<=2

试题编号:20211109-ssn-002

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

23. 对于数列1,2,8,11,15,17,19,25,30,45,采用“二分查找”法查找11,需要查找多少次?( )

  A.  5

B.  4

C.  3

D.  2

试题编号:20211109-ssn-003

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:按二分查找法的规律,每次先查找中间值,进行比较。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

24. 下面哪种算法使用了分治的方法?( )

  A.  冒泡排序

B.  选择排序

C.  插入排序

D.  对分查找

试题编号:20211109-ssn-004

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

25. 关于递归函数出口的说明,以下选项中错误的是?( )

  A.  递归函数的出口决定递归的深度。

B.  每个递归函数都只能有一个递归出口。

C.  递归函数必须有出口。

D.  递归函数的出口不再进行递归。

试题编号:20200316-ysy-001

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:递归函数的出口必须有一个及以上。比如斐波拉契数列,它的递归出口有两个f(1)=1,f(2)=1。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

二、判断题(共10题,共20分)

26. 运行如下图的代码,将不会报错而打印出数字7。请判断对错!

  正确  错误   

试题编号:20200319-LL-010

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:这题考查学生对函数“关键字调用”的理解,有意多加了变量a,干扰学生思维。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

27. 如下图代码,最后运行结果将会打印出数值6,请问对吗?

  正确  错误   

试题编号:20200319-LL-026

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:最基本的递推,循环3次,每次累加2,答案为6,正确。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

28. 如果在printnum(number)函数内部想要使用全局变量value,那么就要在函数内部使用关键词global声明全局变量value。
   value = 10
   def printnum(number):
        global value
        num = number + value
        return num

  正确  错误   

试题编号:20200320-wc-008

试题类型:判断题

标准答案:错误

试题难度:较难

试题解析:在函数内部通过global关键字,通过局部变量修改全局变量的值。

考生答案:正确

考生得分:0

是否评分:已评分

评价描述:

29. 执行以下代码:
def fun():
     x=15
print(x)
程序输出的结果为15。

  正确  错误   

试题编号:20200407-zpf-003

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

30. 执行以下代码:
def funct():
    print("I love")
    def funct_1():
        print("Python")
funct()
程序输出的结果为:I lovePython

  正确  错误   

试题编号:20200407-zpf-013

试题类型:判断题

标准答案:错误

试题难度:较难

试题解析:

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

31. 执行以下代码:
Func(2,3)
def Func(a,b):
    z=a*b
    return z
程序返回结果为:6

  正确  错误   

试题编号:20200407-zpf-014

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

32. 执行以下代码:
def add(sum,x):
    if sum<10:
        x +=2
        sum=sum+x
        add(sum,x)
    return sum
print (add(0,0))
程序输出的结果为:2

  正确  错误   

试题编号:20200407-zpf-024

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:

考生答案:错误

考生得分:0

是否评分:已评分

评价描述:

33. 执行以下代码:
def fun(m):
    if len(m)==1:
        return m[0]
    mid=len(m)//2
    l=fun(m[:mid])
    r=fun(m[mid:])
    return l+r
m=[5,23,41,3,11]
print(fun(m))程序输出的结果为:42

  正确  错误   

试题编号:2020408-zpf-033

试题类型:判断题

标准答案:错误

试题难度:较难

试题解析:

考生答案:正确

考生得分:0

是否评分:已评分

评价描述:

34. 假设一个一维列表中有200个元素,列表中的元素都已经按降序排列,若采用二分搜索策略查找某一个元素,则最多需要8次比较就能确定是否存在所查找的元素。

  正确  错误   

试题编号:2020408-zpf-036

试题类型:判断题

标准答案:正确

试题难度:较难

试题解析:

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

35. 当你安装的第三方库有一个或者多个依赖时,我们可以选择自动安装,直接运行 pip install xxx (xxx为你要安装库的名字)。

  正确  错误   

试题编号:2020408-zpf-038

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

三、编程题(共3题,共30分)

36. 要求:设计一个算法,求1~n(n为大于2的正整数)中有哪些素数,总共是多少个素数? 根据上述计算规则,补全下列代码。

函数名:getPrime(n)
参数表:n -- n为大于2的正整数。
返回值:返回素数组成的数组。
示例:当n=9时,返回:您输入的区间1-n中素数分别是:[2, 3, 5, 7],总共是4个素数!

primeList = []

import math
def getPrime(n):
    for x in range(2,n+1):
        x_sqrt =   ①    
        for prime in primeList:
            if   ②    
                primeList.append(x)
                break
            if   ③    
                break
        else:
            primeList.append(x)
    return primeList

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 = []


import math
def getPrime(n):
    for x in range(2,n+1):
        x_sqrt = math.sqrt(x)
        for prime in primeList:
            if prime > x_sqrt:
                primeList.append(x)
                break
            if x%prime==0:
                break
        else:
            primeList.append(x)
    return primeList

m=eval(input("请您输入一个整数n:"))
print('您输入的区间1-n中素数分别是:'+str(getPrime(m))+',总共是'+str(len(primeList))+'个素数!')

考生答案:(此题已作答)

考生得分:3

是否评分:已评分

评价描述:

37. 编写上交作业的程序,老师要求把小组7位同学(编号为1,2,3,...,6,7)的作业收齐,小组编号1的同学跟编号2的同学说“收作业了”,之后每位同学依次向后面的一位同学说要“收作业了”,直到最后,编号7的同学将自己的作业,上交到编号6的同学手中,编号6的同学将编号7的作业及自己的作业一起上交到编号5的同学,按这样的流程;直到编号1将其他同学的作业及自己的作业上交到老师中。要求编号7同学的作业放在最前面,即老师看到的作业是编号7的作业,然后是编号6的作业,最后是编号1的作业。
根据上述算法思想,编写自定义函数完成程序功能,完善空白处代码。
"""
函数名def getHomeWork(hw,n)
参数表:hw存储每位同学的作业信息,n表示第n位同学的作业
返回值:每位同学的作业,要求最后1位同学的作业显示在最前面,第1位同学作业显示在最后面
"""
def getHomeWork(hw,n):
    if n ==  ①  :
        return   ②  
    return   ③  
homew=["作业1","作业2","作业3","作业4","作业5","作业6","作业7"]
zuoye = getHomeWork(homew,0)
print(zuoye)

 

试题编号:20200330-fcl-005

试题类型:编程题

标准答案:评分标准
①len(hw)-1 (3分)
②hw[len(hw)-1]  (3分)
③getHomeWork(hw,n+1)+hw[n]  (4分)

试题难度:一般

试题解析:def getHomeWork(hw,n):
    if n == len(hw)-1:
        return hw[len(hw)-1]
    return getHomeWork(hw,n+1)+hw[n]
homew=["作业1","作业2","作业3","作业4","作业5","作业6","作业7"]
zuoye = getHomeWork(homew,0)
print(zuoye)

考生答案:(此题已作答)

考生得分:0

是否评分:已评分

评价描述:

38. 要求:设计一个算法,枚举排列问题。输入1-n的第1个排列,如1 2 3,按照大小输出1~n的所有排列,并统计全部排列总数。
根据上述算法思想,补全下列代码。
描述:输入1-n的第1个排列,如1 2 3,按照大小输出1~n的所有排列。
函数名:perm(n,begin,end)
参数表:n -- 整数n,begin -- 指向排列的第一个元素,end-- 指向排列的最后一个元素。
返回值:输出1-n的所有排列方式,每行一个排列,按从小到大。
示例:当输入1 2 3时,返回:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]

[2, 3, 1]

[3, 2, 1]

[3, 1, 2]

排列总数是:6个!

COUNT=0
def perm(n,begin,end):
    global COUNT
    if   ①    
        print (n)
        COUNT +=1
    else:
        i=begin
        for num in   ②    :
            n[num],n[i]=n[i],n[num]
              ③    
            n[num],n[i]=n[i],n[num]
 
arr = input("1-n的第1个排列:")    
n = [int(n) for n in arr.split()]
  ④    

print ("排列总数是:%d个!"% COUNT)

 

试题编号:20200330-ph-007

试题类型:编程题

标准答案:评分标准:
① begin>=end: 或等效答案;(2分)
② range(begin,end) 或等效答案;(2分)
③ perm(n,begin+1,end) 或等效答案;(2分)
④ perm(n,0,len(n)) 或等效答案;(2分)

试题难度:较难

试题解析:

参考程序:

COUNT=0

def perm(n,begin,end):
    global COUNT
    if begin>=end:
        print (n)
        COUNT +=1
    else:
        i=begin
        for num in range(begin,end):
            n[num],n[i]=n[i],n[num]
            perm(n,begin+1,end)
            n[num],n[i]=n[i],n[num]
 
arr = input("1-n的第1个排列:")    
n = [int(n) for n in arr.split()]
perm(n,0,len(n))
print ("排列总数是:%d个!"% COUNT)

考生答案:(此题已作答)

考生得分:0

是否评分:已评分

评价描述:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多