当前位置: 首页 > news >正文

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

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

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

1.

有n个按名称排序的商品,使用对分查找法搜索任何一商品,

最多查找次数为5次,则n的值可能为?( )

A. 

5

B. 

15

C. 

30

D. 

35

试题编号:20220428-fcl-017

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:对分查找最多查找次数m与个数之间n的关系是:n对2的对数的取整后加1,

现在最多查找次数是5次,因此n的取值范围在[2^4+1,2^5]即[16,31]之间,因此选C。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

2.

下列有关分治算法思想的描述不正确的是?( )

A. 

将问题分解成的子问题具有相同的模式

B. 

当问题足够小时,可以直接求解

C. 

可以将子问题的结果合并成原问题的解

D. 

将问题分解出的各个子问题相互包含,相互之间可以有公共子问题

试题编号:20220428-fcl-020

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:将问题分解出的各个子问题是相互独立的,即子问题之间不包含公共子子问题

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

3.

下列问题使用分治算法思想的是?( )

A. 

求100以内的素数

B. 

求100个整数之和

C. 

求斐波那契数列第n项

D. 

快速排序算法对n个数排序

试题编号:20220428-fcl-022

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:快速排序算法使用了分治算法。因此选D。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

4.

李宇同学利用Python语言编写了一段“根据出生年月判断生肖属相”的程序,调试运行时,

程序没有报错且顺利运行,但未能正确输出对应属相,造成这个结果的原因可能是?( )

A. 

程序语句语法错误

B. 

时间复杂度太高

C. 

求解算法逻辑错误

D. 

Python环境配置不对

试题编号:20220501-tr-031

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:程序能正常运行,排除了其他三个可能。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

5.

一般来说,递归需要有边界条件、递归前进段和递归返回段。当不满足边界条件时,( );

当满足边界条件时,( )。

A. 

返回,前进

B. 

中断,前进

C. 

前进,返回

D. 

中断,返回

试题编号:20220501-zwy-003

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:递归运行的条件,不满足边界条件前进,满足返回。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

6.

以下哪一项不是递归算法的特征?( )

A. 

要实现递归必须有一个函数,并且在这个函数体内要自己调用自己。

B. 

递归必须要有判断条件,这个判断条件可以是判断次数。

C. 

到达判断的条件后必须有返回,目的是结束递归。

D. 

未到达判断条件时,不可以返回该函数。

试题编号:20220501-zwy-016

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:未到达判断条件时,可以返回该函数,也可以不返回。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

7.

关于斐波那契数列,下列空白处的代码填写正确的是?( )

def func(num):

    if num==1:

        return 1

    elif num==2:

        return 1

    else:

                      

lst=[]

b=input('请输入选择的数字:')

b1=int(b)

for a in range(1,b1+1):

    print(func(a))

    lst.append(func(a))

    a+=1

print(lst)

A. 

return func(num+1)+func(num-2)

B. 

return func(num-1)+func(num)

C. 

return func(num-1)+func(num-2)

D. 

return func(num-1)+func(num+2)

试题编号:20220501-zwy-017

试题类型:单选题

标准答案:C

试题难度:较难

试题解析:斐波那契数列,从第三项开始,每一项都等于前两项之和。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

8.

在有序列表[2,3,10,15,20,25,28,29,30,35,40]中,使用二分法查找20,

需要查找多少次能找到?( )

A. 

5

B. 

4

C. 

3

D. 

2

试题编号:20220501-zwy-019

试题类型:单选题

标准答案:B

试题难度:容易

试题解析:可以模拟二分法的执行过程分析得出。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

9.

下列程序输出正确的是?( )

def ac(n):

    if n < 0:

        return

    else:

        ac(n-1)

        print(n)

ac(4)

A. 

0,1,2,3,4

B. 

1,2,3,4

C. 

0

1

2

3

D. 

1

2

3

4

试题编号:20220501-zwy-020

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:依次输出0-4,print()默认换行。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

10.

阅读下列程序,运行结果正确的是?( )

def power(x,y):

    if y==0:

        return 1

    else:

        return x * power(x,y-1)

print(power(4,5))

A. 

243

B. 

8

C. 

1206

D. 

1024

试题编号:20220501-zwy-023

试题类型:单选题

标准答案:D

试题难度:较难

试题解析:power(a,b)表示a的b次幂,当y不等于0,返回x*power(x,y-1)。

据题,x=4,y=5,因此4*power(4,4),即4*(4的4次幂),结果为1024。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

11.

下载但不安装一个第三方库的命令格式是?( )

A. 

pip search 第三方库名

B. 

pip uninstall 第三方库名

C. 

pip install 第三方库名

D. 

pip download 第三方库名

试题编号:20220502-cj-001

试题类型:单选题

标准答案:D

试题难度:容易

试题解析:

pip search为搜索三方包

pip install为安装三方包

pip uninstall为卸载三方包

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

12.

不需要使用Python的pip工具安装的是?( )

A. 

Python标准库

B. 

第三方库

C. 

用户自己开发的库

D. 

Python扩展库

试题编号:20220502-cj-002

试题类型:单选题

标准答案:A

试题难度:容易

试题解析:其它要安装

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

13.

使用lambda定义匿名函数如下:f=lambda x:x+1,则f(f(1))代码运行结果是?( )

A. 

1

B. 

2

C. 

3

D. 

会报错

试题编号:20220502-cj-005

试题类型:单选题

标准答案:C

试题难度:较难

试题解析:f(1)=2,f(2)=3

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

14.

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

A. 

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

B. 

函数能完成特定的功能,对函数的调用不需要了解函数内部实现原理,

只要了解函数的输入输出方式即可。

C. 

使用函数的主要目的是减低编程难度和代码重用。

D. 

Python 使用“del”保留字定义一个函数。

试题编号:20220502-cj-008

试题类型:单选题

标准答案:D

试题难度:一般

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

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

15.

某自定义函数有两个参数,并且这两个参数都指定了默认值。我们在调用这个函数时,最少需要提供几个实参?( )

A. 

0

B. 

1

C. 

2

D. 

3

试题编号:20220502-cj-010

试题类型:单选题

标准答案:A

试题难度:容易

试题解析:只要有默认值就可以省略。

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

16.

以下关于Python中使用函数的描述,错误的是?( )

A. 

程序里一定要有main函数。

B. 

使用函数前要先定义函数。

C. 

函数在被调用时才执行。

D. 

函数执行结束后,程序执行流程会自动返回到函数被调用的语句之后。

试题编号:20220502-cj-013

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:Python程序不必一定要有main函数。

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

17.

在Python中,函数通过可变参数*args传入的参数,在函数内以哪种数据类型存储?( )

A. 

元组

B. 

列表

C. 

集合

D. 

字典

试题编号:20220502-cj-014

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:可变参数在函数内以元组方式存储。

考生答案:B

考生得分:0

是否评分:已评分

评价描述:

18.

下列关于函数调用的说法正确的是?( )

A. 

调用函数时一定要赋值。

B. 

只要安装成功第三方库,不要导入,就可以直接调用第三方库里的函数。

C. 

Python内置的标准函数可以多次调用。

D. 

函数调用时,如果参数有默认值,就不能给它再赋新的值了。

试题编号:20220516-cqf-11

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:调用函数时不一定是必须要给参数赋值的;先导入第三方库,

再调用第三方库里的函数;有默认值的参数也可以赋新值。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

19.

自定义函数的关键字是?( )

A. 

define

B. 

del

C. 

def

D. 

dfe

试题编号:20220516-cqf-12

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:自定义函数的关键字是def。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

20.

下列选项中不能作为自定义函数名的是?( )

A. 

Int

B. 

_int2

C. 

str2int

D. 

2_int

试题编号:20220516-cqf-13

试题类型:单选题

标准答案:D

试题难度:容易

试题解析:函数名不能以数字开头。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

21.

函数定义如下:

def func(a,b=0,c=0):

    pass

下列选项调用错误的是?( )

A. 

func(1)

B. 

func(1,2)

C. 

func(1, ,3)

D. 

func(1,2,3)

试题编号:20220516-cqf-16

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:C选项中连续输入了两个逗号,解释器会报语法错误。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

22.

下列选项中,函数定义错误的是?( )

A. 

def afunc(a,b=2):

B. 

def bfunc(a,b):

C. 

def cfunc(a,*b):

D. 

def dfunc(*a,b):

试题编号:20220516-cqf-17

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:可变参数必须在不可变参数的后面。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

23.

运行下列代码,输出结果为?( )

def func(a,b,*args):

    print(a)

    print(b)

    print(args)

func(1,2,3,4,5,6)

A. 

1,2,3,4,5,6

B. 

1 2 (3,4,5,6)

C. 

1 2 [3,4,5,6]

D. 

1 2 3,4,5,6

试题编号:20220516-cqf-18

试题类型:单选题

标准答案:B

试题难度:较难

试题解析:a,b是位置参数,所以a=1,b=2,其余的参数会被*args收集打包放进一个元组中,

即(3,4,5,6)。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

24.

下列关于函数的说法正确的是?( )

A. 

一个函数在同一个程序中最多只能被调用999次

B. 

函数的返回值不可以赋值给变量

C. 

使用Python内置模块里的函数时,要先导入该模块到当前文件中

D. 

调用没有参数的函数时可以不带圆括号

试题编号:20220516-cqf-2

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:函数的调用次数没有限制,A错误;函数的返回值可以赋值给变量,

B错误;调用没有参数的函数时,函数名后面也要跟一对圆括号,D错误。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

25.

下列选项中,不是函数的是?( )

A. 

max()

B. 

input()

C. 

string()

D. 

sum()

试题编号:20220516-cqf-6

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:Python中string为模块

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

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

26.

计算下面这段程序的时间复杂度为平方阶:O(n^2)。( )

sum1=0

for i in range(101):

    sum1+=i

正确 

错误 

试题编号:20220501-tr-032

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:时间复杂度为线性阶,计O(n)。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

27.

汉诺塔游戏是递归调用的经典案例。( )

正确 

错误 

试题编号:20220501-zwy-029

试题类型:判断题

标准答案:正确

试题难度:容易

试题解析:汉诺塔是学习递归算法最为常见的例子。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

28.

递推关系是递归的重要组成。( )

正确 

错误 

试题编号:20220501-zwy-030

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:对于递归而言,递推与回归,二者缺一不可。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

29.

以下命令:

pip get pandas

用于下载第三方库pandas,但不马上安装。( )

正确 

错误 

试题编号:20220502-cj-003

试题类型:判断题

标准答案:错误

试题难度:容易

试题解析:没有get这个命令。

考生答案:正确

考生得分:0

是否评分:已评分

评价描述:

30.

使用Python语言编程,可以定义一个名叫pass的函数。( )

正确 

错误 

试题编号:20220502-cj-011

试题类型:判断题

标准答案:错误

试题难度:容易

试题解析:pass是保留字。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

31.

函数中没有return语句或者return语句不带任何返回值,那么该函数的返回值为True。( )

正确 

错误 

试题编号:20220502-cj-012

试题类型:判断题

标准答案:错误

试题难度:容易

试题解析:返回值为None

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

32.

在Python中调用函数的时候,必须将每个实参都关联到函数定义中的每一个形参,

最简单的关联方式就是基于实参的顺序。但也可以通过关键字实参的“关键字-值”方式关联形参,

这时就不必考虑函数调用过程中实参的顺序。( )

正确 

错误 

试题编号:20220503-cj-002

试题类型:判断题

标准答案:正确

试题难度:容易

试题解析:

考生答案:错误

考生得分:0

是否评分:已评分

评价描述:

33.

在Python中,全局变量名和局部变量名一定不能重名。( )

正确 

错误 

试题编号:20220516-cqf-14

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:全局变量名和局部变量名可以是相同的变量名。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

34.

调用函数时,Python将形式参数传递给实际参数。( )

正确 

错误 

试题编号:20220516-cqf-15

试题类型:判断题

标准答案:错误

试题难度:容易

试题解析:调用函数时,Python将实际参数传递给形式参数。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

35.

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,

这些子问题相互独立且与原问题性质相同。( )

正确 

错误 

试题编号:20220428-fcl-030

试题类型:判断题

标准答案:正确

试题难度:容易

试题解析:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,

这些子问题相互独立且与原问题性质相同。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

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

36.

从键盘接收一组不重复整数,并将这组整数按从小到大的顺序排列。

以下程序采取快速排序法对这组整数进行排序。

快速排序法的原理是:

(1)取这组数据中间那个数为锚定值mid;

(2)从这组数据开头往右找,遇到比mid大的数则停下,位置记为i;

(3)从这组数据末尾往左找,遇到比mid小的数则停下,位置记为j;

(4)如果此时i仍在j左边,即i<=j,则交换这两个数;

(5)重复(2)~(4)直到i、j重合;

(6)对i左边的数进行快速排序;

(7)对右边的数进行快速排序。

输入示例:

请输入需要排序的一组整数,数与数之间用空格隔开:6 10 11 8 4 1 9 7

输出示例:

排序结果:1 4 6 7 8 9 10 11 

程序模板:

def QuickSort(left,right):

    if            ①           :

        return

    mid=Numbers[left+(right-left)//2]

    i=left

    j=right

    while i<j:

        while Numbers[i]<mid:

            i+=1

        while Numbers[j]>mid:

            j-=1

        if i<=j:

                               

        QuickSort(left,j-1)

        QuickSort(i+1,right) 

Numbers=list(map(int,input("请输入需要排序的一组整数,数与数之间用空格隔开:").           ③           ))

QuickSort(0,           ④           )

print("排序结果:",end="")

for i in Numbers:

    print(i,end=" ")

试题编号:202212-P4-36

试题类型:编程题

标准答案:

参考程序:

def QuickSort(left,right):

    if left>=right:

        return

    mid=Numbers[left+(right-left)//2]

    i=left

    j=right

    while i<j:

        while Numbers[i]<mid:

            i+=1

        while Numbers[j]>mid:

            j-=1

        if i<=j:

            Numbers[i],Numbers[j]=Numbers[j],Numbers[i]

    QuickSort(left,j-1)

    QuickSort(i+1,right) 

Numbers=list(map(int,input("请输入需要排序的一组整数,数与数之间用空格隔开:").split()))

QuickSort(0,len(Numbers)-1)

print("排序结果:",end="")

for i in Numbers:

    print(i,end=" ")

试题难度:较难

试题解析:

评分标准:

(1)left>=right;(2分)

(2)Numbers[i],Numbers[j]=Numbers[j],Numbers[i];(2分)

(3)split();(2分)

(4)len(Numbers)-1。(2分)

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

考生得分:6

是否评分:已评分

评价描述:

37.

鸡兔同笼是中国古代的数学名题之一。大约在1500年前,《孙子算经》中就记载了这个有趣的问题。

书中是这样叙述的:

今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?

意思是:有若干只鸡兔同在一个笼子里(笼中最少有一只鸡和一只兔),

从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?

今天我们用编程的方法来求解一下这道数学命题吧。

def ji_tu(head,leg):

    j=0

    t=0

    while j<head:

        j += 1

        t =                       

        if (leg==                      ):

            print('有鸡{}只,有兔子{}只。'.format(           ③           ))

    return (j,t)

while True:

    try:

        sum_head=int(input('请输入总头数:'))

        sum_leg=int(input('请输入总脚数:'))

        if            ④           :

            print('输入鸡和兔子的总头数或总脚数错误,请重新输入!')

        else:

            ji_tu(                      )

    except:

        print('能不能正常输入数据?')

试题编号:202212-P4-37

试题类型:编程题

标准答案:

参考程序:

def ji_tu(head,leg):

    j=0

    t=0

    while j<head:

        j += 1

        t = head-j

        if (leg==(j*2+t*4)):

            print('有鸡{}只,有兔子{}只。'.format(j,t))

    return (j,t)

while True:

    try:

        sum_head=int(input('请输入总头数:'))

        sum_leg=int(input('请输入总脚数:'))

        if sum_head<2 or sum_leg<6:

            print('输入鸡和兔子的总头数或总脚数错误,请重新输入!')

        else:

            ji_tu(sum_head,sum_leg)

    except:

        print('能不能正常输入数据?')

试题难度:一般

试题解析:

评分标准:

(1)head-j ;  (2分)

(2)(j*2+t*4);  (3分)

(3)j,t; (2分)

(4)sum_head<2 or sum_leg<6 ;  (3分)

(5)sum_head,sum_leg。  (2分)

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

考生得分:4

是否评分:已评分

评价描述:

38.

有一个游戏:有两个人,第一个人先从1和2中挑一个数字,

第二个人可以在对方的基础上选择加1或者加2,然后又轮到第一个人,他也可以选择加1或者加2,

之后再把选择权交给对方,就这样双方交替地选择加1或者加2,谁先加到20,谁就赢了。

在不考虑谁输谁赢的情况下,从一开始(以1或2为起点)加到20,

有多少种不同的递加过程?比如1,4,7,10,12,15,18,20算一种;

2,5,8,11,14,17,20又是一种。那么一共会有多少种这样的过程呢?

我们可以用递归算法来解决这个问题,请补全代码。

def guo_cheng(n):

    if                        :

        return 1

    return                       

# 输出所有过程的个数

print (guo_cheng(                      ))

试题编号:202212-P4-38

试题类型:编程题

标准答案:

参考程序:

def guo_cheng(n):

    if n==1 or n==2:

        return 1

    return guo_cheng(n-1)+guo_cheng(n-2)

# 输出所有过程的个数

print (guo_cheng(20))

试题难度:一般

试题解析:

评分标准: 

(1)n==1 or n==2;    (3分)

(2)guo_cheng(n-1)+guo_cheng(n-2) ;     (4分)

(3)20 。   (3分)

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

考生得分:0

是否评分:已评分

评价描述:

http://www.lryc.cn/news/2739.html

相关文章:

  • 通过实例告诉你lua中ipairs到底是怎么遍历的!
  • Axios异步请求 json格式
  • Postgresql源码(100)Portal与事务的关系(顶层事务与子事务)
  • Java、JSP企业快信系统的设计与实现
  • 1.2(完结)C语言进阶易忘点速记
  • 雅思经验(十一)
  • C++中的智能指针
  • LSTM已死,Transformer当立(LSTM is dead. Long Live Transformers! ):下
  • OJ万题详解––[NOIP2004 提高组] 合并果子(C++详解)
  • MySQL-字符集和比较规则
  • 微搭低代码从入门到精通12-网格布局
  • 【c语言】二叉树
  • 六、Java框架之SpringBoot
  • 「Python|环境安装|Windows」如何在Windows上安装Python环境?
  • 人工智能轨道交通行业周刊-第33期(2023.2.6-2.12)
  • 五分钟看懂Java字节码:极简手册
  • C++ 类与对象(下)
  • Java基础——I/O
  • 关于@hide的理解
  • 使用python加密主机文件几种方法实现
  • 西湖论剑 2023 比赛复现
  • 微信小程序更换管理员/重置管理员
  • 企业进存销管理系统
  • C++入门
  • 视频知识点(20)- H264码流如何在SPS中获取宽高信息?
  • 鲜花数据集实验结果总结
  • ElasticJob-Lite架构篇 - 认知分布式任务调度ElasticJob-Lite
  • 【直击招聘C++】2.6 对象之间的复制
  • 学了这么久python,不会连自己啥python版本都不知道吧?
  • Revive:从间谍软件进化成银行木马