202206 青少年软件编程等级考试Python四级真题 建议答题时长:60min
1. 单选题

有如下Python程序,包含lambda函数,运行该程序后,输出的结果是?( )

g = lambda x,y:x*y
print(g(2,3))

A

2

B

3

C

6

D

8

2. 单选题

运行下列程序,输出的结果是?( )

def dtox(x,base = 2):
    s = []
    while x>0:
        s.append(x % base)
        x = x // base
    return s
print(dtox(11))

A

程序出错

B

1101

C

[1, 1, 0, 1]

D

[1, 0, 1, 1]

3. 单选题

下列哪项不是函数的优点?( )

A

提高代码的复用率。

B

使得程序简洁,程序功能清晰。

C

便于程序的修改,便于扩展。

D

代码运行速度更快。

4. 单选题

下列关于函数的描述正确的是?( )

A

函数内的语句不会改变任何非全局变量的值。

B

传入函数的参数都会以副本的形式存在函数中。

C

函数的名称不能与Python的保留字相同。

D

每个函数必须有一个return语句。

5. 单选题

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

A

sub

B

def

C

function

D

void

6. 单选题

运行下列程序,输出的结果是?( )

def nxs(x):
    s = 0
    while x:
        s = s * 10 + x % 10
        x //= 10
    return s
print(nxs(106))

A

106

B

610

C

160

D

601

7. 单选题

Python编写的自定义函数dy,执行该程序段后,输出的结果是?( )

def dy(x,y):
    return x>y
print(dy(10,20))

A

10

B

20

C

False

D

True

8. 单选题

在函数中有一种叫空函数。 构造一个空函数,下面的横线处应填?( )

def  函数名( ):

    ______________

A

None

B

return None

C

pass

D

empty

9. 单选题

下列代码的输出结果是?( )

def fun(a,b):

    t = a

    a = b

    b = t

    print(a, b)

fun(pow(3,2),pow(2,3))   #pow(x,y)返回x**y的值

A

3 2

B

8 9

C

2 3

D

9 8

10. 单选题

函数中用return [表达式] 结束函数,选择性地返回一个值给调用方,有时不带表达式的return相当于返回?( )

A

0

B

None

C

1

D

False

11. 单选题

对于下面的函数:

def f(x,z,y=2):

    print(x+y+z)

用f(1,2,3)和f(1,2)两个调用语句,运行结果分别是?( )

A

都是5

B

6和5

C

都是6

D

5和6

12. 单选题

下列这段程序的打印结果是?( )

def demo(item,lis=[]):
    lis=[]
    lis.append(item)
    return lis
print(demo('a'),end='')
print(demo('b'))

A

['a']['a', 'b']

B

['a']['b']

C

[][]

D

[ ]['b']

13. 单选题

函数如下:

def showNumber(numbers):

    for n in numbers:

        print(n)

下面哪个选项在调用该函数时会报错?( )

A

showNumber([2,4,5])

B

showNumber('abcesf’)

C

showNumber(3.4)

D

showNumber((12,4,5))

14. 单选题

下列关键字中,用来导入第三方库的是?( )

A

include

B

from

C

import

D

continue

15. 单选题

以下选项中,不属于第三方库安装工具pip能够实现的功能是?( )

A

安装一个第三方库。

B

卸载已经安装的第三方库。

C

修改已经安装的第三方库。

D

查询已经安装的第三方库。

16. 单选题

关于评价算法的优劣,以下说法正确的是?( )

A

只要考虑是否得出正确答案。

B

只要考虑算法的执行时间。

C

只要考虑算法所占用的空间。

D

从算法执行时间和需占用的空间两方面考虑。

17. 单选题

下列程序实现求菲波那契数列第4项的值:

def f(n):

    if n==1 or n==2:

        return 1

    elif n>2:

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

    else:

        return -1

print(f(4))

 

请问:这种解决方法属于哪种算法?( )

A

归纳

B

列举

C

递推

D

递归

18. 单选题

著名的菲波那契数列为1,1,2,3,5,8,……。即除开始的两项为1外,其余每一项均为前两项之和。

下面的程序实现计算该数列的第4项值的大小。

n,a,b=4,1,1

if n==1:

    print("第%d个数为%d。"%_____(1)______)

if n==2:

    print("第%d个数为%d。"%(n,b))

if n>2:

    for i in range(2,n):

        result=a+b

        a,b=b,result

print("第%d个数为%d。"%(n,result))

请问:横线(1)所在位置不适合填入以下哪个选项?( )

A

(n,1)

B

(n,a)

C

(n,b)

D

(a,n)

19. 单选题

运行下列程序,输出的结果是?( )

def f(n):
    if n==1:
        return 1
    else:
        return f(n-1)+(n-1)*f(n-1)
print(f(4))

A

64

B

24

C

4

D

16

20. 单选题

已知Pell数列定义如下:

第5项的值是?( )

A

29

B

30

C

12

D

32

21. 单选题

运行下列程序,输出的结果是?( )

def Pell(n):
    if n==1:
        return 1
    if n==2:
        return 2
    if n>=3:
        return 2*Pell(n-1)+Pell(n-2)
print(Pell(4))

A

12

B

4

C

3

D

24

22. 单选题

运行下列程序,输出的结果是?( )

def f(n):
    if n==1 or n==2:
        return 1
    elif n>2:
        return f(n-1)+f(n-2)
    else:
        return -1
print(f(-2))

A

-2

B

-1

C

出错

D

1

23. 单选题

在1-20之间玩猜数字的游戏时,如果采用二分法的策略,并且给‘大了’或‘小了’的提示,最差的情况下多少次就可以猜中?( )

A

5

B

10

C

15

D

20

24. 单选题

下列选项中,哪一项不是分治算法的特征?( )

A

问题的规模缩小到一定程度就可以容易解决。

B

该问题分解出的子问题的解可以合并为该问题的解。

C

各个子问题必须分解到不能分解为止。

D

该问题具有最优子结构性质。

25. 单选题

下列排序算法中利用了分治算法思想的是?( )

A

冒泡排序

B

插入排序

C

选择排序

D

快速排序

26. 判断题

Python中自定义函数的代码需要写在调用该函数之前。( )

A

正确

B

错误

27. 判断题

Python定义函数时,可选参数必须写在非可选参数后面。( )

A

正确

B

错误

28. 判断题

用户自定义函数是用户自己写的一段程序,一般包括函数名、参数、返回值、函数体等四部分。其中,函数名和参数是必不可少的部分。( )

A

正确

B

错误

29. 判断题

自定义函数def块中的代码不是主程序的一部分,运行会跳过该段代码。( )

A

正确

B

错误

30. 判断题

算法优化主要是为了减少冗余数据,优化时间复杂度和空间复杂度。( )

A

正确

B

错误

31. 判断题

在Python中使用爬虫技术抓取网站信息需要用到第三方库。( )

A

正确

B

错误

32. 判断题

对于递归而言,递推与回归,二者缺一不可。( )

A

正确

B

错误

33. 判断题

递归算法跟递推算法是一样的,都在重复调用。( )

A

正确

B

错误

34. 判断题

使用分治算法解决问题的一般步骤是分解、求解、合并。( )

A

正确

B

错误

35. 判断题

Python中编写函数时,必须指明该函数的返回值。( )

A

正确

B

错误

36. 编程题

字符加密。将大写字母逐个按其ASCII值转换为7位二进制数,并在最左边补0,使得每个字母转换为8位二进制数,然后将8位二进制数每四位转为十六进制数。如明文是"CIE",加密后的密文是"434945"。编写的python程序如下,完善划线处的代码。 

def xtob(n): #将整数转为二进制数 

    if n <= 1: 

        return str(n) 

    return  xtob(n//2)+  ①   

mingwen = "CIE" 

he = '0123456789ABCDEF' 

rst = '' 

for c in mingwen:

   s = "0" + xtob(ord(c)) #将明文转为8位二进制数 

   i = 0 

   data = 0

   while i < 8:

      data =data * 2 +  ②  

      if (i + 1) % 4 == 0: 

          rst = rst + he[data] 

          data = 0 

         ③   

print('密文是:',rst)

查看答案
37. 编程题

辗转相除法求最大公约数,下列函数是用递归算法实现的,请完善横线处的代码。

def gcd(a,b):

    m=a%b

    if m==0:

        return      ①     

    else:

        a=b

            ②      

        return       ③     

print(gcd(12,18)) 

查看答案
38. 编程题

下面的程序运用分治算法寻找列表中的最大值。请将空格补全代码。

#子问题规模小于或等于2时

def zui_da_zhi(a_list):

    if   ①   :

        if a_list[0]>=a_list[1]:

            most=a_list[0]

        else:

            most=a_list[1]

    else:

        most=a_list[0]

    return most

# 分治算法排序

def fen_zhi(init_list):

    n=len(init_list)

    if n<=2:                  #若问题规模小于或等于2,解决

        return zui_da_zhi(init_list)

    #分解(子问题规模为n/2)

    left_list,right_list=   ②   

    #递归,分治

    left_max,right_max=   ③   

    #合并

    return zui_da_zhi([left_max,right_max])

 

#测试数据

test_data=[12,25,4,47,69,5,4,6,37,89,21]

print('最大值为:',fen_zhi(test_data))

查看答案
试题目录
单选题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
判断题
26 27 28 29 30 31 32 33 34 35
编程题
36 37 38
赣ICP备20007335号-2