试卷 2024年3月青少年软件编程Python等级考试(四级)真题试卷
2024年3月青少年软件编程Python等级考试(四级)真题试卷
选择题
第 1 题    单选题

运行如下Python代码,若输入整数3,则最终输出的结果为?( )

def f(x):
    if x==1:
        s=1
    else:
        s=f(x-1)*x
    return s
n=int(input("请输入一个大于1的整数:"))
print(f(n)+f(n-1))
A.

2

B.

4

C.

8

D.

16

第 2 题    单选题

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

def fun(x):
    if x > 3:
        return x * fun(x-1)
    else:
        return x
 print(fun(6))
A.

120

B.

360

C.

720

D.

60

第 3 题    单选题

下列关于递归的描述不正确的是?( 

A.

递归函数一定包含if语句

B.

递归函数体内一定包含调用自身的语句

C.

在调用自身函数时需要明确的边界终止条件与边界值

D.

递归算法一般代码简洁,执行效率高,空间复杂度低

第 4 题    单选题

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

def fun(a, n):
    s = 0
    for i in range(1, n+1):
        temp = str(a)*i
        s += int(temp)
    return s
print(fun(1, 3))
A.

3

B.

6

C.

12

D.

123

第 5 题    单选题

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

def fun(a, b):
    s = 0
    a = a[::-1]
    for i in range(len(a)):
        s += int(a[i])*b**i
    return s
print(fun('45', 16))
A.

69

B.

45

C.

64

D.

61

第 6 题    单选题

一个荷花池,第一天荷花开放得很少,第二天开放的数量是第一天的两倍,之后的每一天,荷花都会以前一天两倍的数量开放。如果到第30天,荷花就开满了整个池塘,设第一天开一朵,编程求第30天共开了多少朵荷花。下面空白处的python代码填写正确的是?( )

s = 0
t = 1
for i in range(1,        ①        ):    
    s += t
            ②        
print(s)
A.

30, t = t*2

B.

31, t = t*2

C.

31, t+=2

D.

30, t*=2

第 7 题    单选题

解决下列问题时,时间复杂度最大的是?( 

A.

输入n个不同的包含两位小数的实数,计算这n个数的和

B.

n个数据中,查找数据k

C.

n个数据用冒泡排序实现排序

D.

计算算式1-2+3-4+...-n的结果,n为偶数

第 8 题    单选题

以下关于分治算法的描述正确的是?( 

A.

各个子问题既相互独立又相互联系

B.

问题可以分解成若干个规模较小的相同问题

C.

可以直接对问题进行求解

D.

子问题的解不能合并成原问题的解

第 9 题    单选题

下列选项中哪一项使用了分治算法?( 

A.

二分搜索

B.

选择搜索

C.

插入搜索

D.

顺序搜索

第 10 题    单选题

不超过20个元素的降序数列,使用对分查找能找到指定的元素,可能的查找次数不包括?( )

A.

3

B.

4

C.

5

D.

6

第 11 题    单选题

下面python程序段的输出结果是?( 

def add_Run(L=None):
     if L is None:
          L = ['Lying']
     else:
          L.append('Run')
     return L
add_Run()
print(add_Run())
print(add_Run(['Lying']))
A.

['Lying']

['Run']

B.

['Lying']

['Lying']

['Lying', 'Run']

C.

['Lying']

['Lying', 'Run']

D.

[]

['Lying', 'Run']

第 12 题    单选题

下面关于计数器的python程序,输出结果正确的是?( 

count = 0
def increment():
         global count
         count += 1
         print("计数器的值:", count)
increment()
increment() 
increment()
A.

计数器的值: 1

计数器的值: 2

计数器的值: 3

B.

计数器的值:0

计数器的值:1

计数器的值:2

C.

计数器的值: 1

计数器的值: 1

计数器的值: 1

D.

计数器的值:3

第 13 题    单选题

下列Python程序段的输出结果是?( 

L = []
x = 3
def  test(x):
       L.append(x)
       x = 5
test(x)
print('L = {}, x = {}'.format(L, x))
A.

L = [3], x = 3

B.

L = [5], x = 5

C.

L = [3], x = 5

D.

L = 3, x = 5

第 14 题    单选题

以下Python程序,运行程序输出结果正确的是?( 

def demo(x):  
    return x*2 
print(demo(demo(1)))
A.

return  None

B.

2

C.

4

D.

8

第 15 题    单选题

Python使用下列哪个函数接收用户输入的数据?( )

A.

accept()

B.

input()

C.

print()

D.

login()

第 16 题    单选题

下面Python程序段的输出结果正确的是?( 

def  power():
     x ='python'
     y = 'world'
     z = x + " " + y
     return z
print(power())
A.

z

B.

x + " " + y

C.

python world

D.

python" "world

第 17 题    单选题

下列关于Python函数的描述中,不正确的是?( )

A.

自定义函数时用到的关键字是def

B.

python函数中,至少有一条return语句

C.

函数print()可以一次输出多个参数,如print('1',"2",3,[4])

D.

用函数eval()可以用于求字符串里表达式的值,如eval'3+5-1'

第 18 题    单选题

关于以下Python代码的描述中,正确的是?( 

#求两个正方形的面积差
def MianJiCha(a,b):
    s=a**2-b**2 
    return s
a=5
b=10
c=MianJiCha(b,a)+a
A.

代码运行后,变量c的值是80

B.

函数名是MianJiCha(a,b)

C.

可以用MianJiCha(100)的形式调用此函数

D.

代码运行时会报错

第 19 题    单选题

下列关于Python函数的说法中,错误的是?( )

A.

利用函数可以降低编程复杂度,增加代码可读性

B.

函数可以重复调用

C.

函数可以降低修改代码的工作量

D.

调用函数时,每次都必须输入相同的参数值

第 20 题    单选题

下列选项中,调用下列代码定义的函数时,程序会报错的是?( 

def ShuChu(a,b,c):

    print(c,b,a)

A.

ShuChu('1','2','3')

B.

ShuChu('1','2','3,4')

C.

ShuChu(1,2,3)

D.

ShuChu(1,2,3,4)

第 21 题    单选题

下列选项中,调用以下代码定义的函数时,程序会报错的是?( 

 def kp(a,b,c): 

    print(a,b,c)

A.

kp(1,b=2,3)

B.

kp(a=3,b=1,c=2)

C.

kp(1,2,3)

D.

kp(1,b=2,c=3)

第 22 题    单选题

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

>>>s=lambda m,n:m*n

>>>s(6,6)

A.

6

B.

6,6

C.

36

D.

12

第 23 题    单选题

以下函数定义错误的选项是?( 

A.

def aFunc(m,n):

    print(m,n)

B.

def aFunc(m,n=2):

    print(m,n)

C.

def aFunc(*m,n):

    print(m,n)

D.

def aFunc(m,*n):

    print(m,n)

第 24 题    单选题

用于安装Python第三方库的工具是?

A.

install

B.

pip

C.

Wheel

D.

setup

第 25 题    单选题

编程时,如果只需要导入某第三方库中的某个成员,需要使用到的关键字是?( 

A.

from

B.

as

C.

into

D.

inport

判断题
第 26 题    判断题

若某个问题既能用递归算法求解,又能用递推算法求解,则使用递归方法求解更容易,效率也高得多。( 

A.
正确
B.
错误
第 27 题    判断题

如下代码因为递归的边界条件设置错误,产生了无限递归程序报错。( 

def fun(n):
    if n > 10:
        return 0
    else:
        return n + fun(n-1)
print(fun(10))
A.
正确
B.
错误
第 28 题    判断题

算法的时间复杂度与空间复杂度没有必然关系。( 

A.
正确
B.
错误
第 29 题    判断题

已知有n本按照书名拼音排序好的图书,使用对分查找法搜索其中任何一本书,最多查找次数为4次,则n的值有可能为10。( )

A.
正确
B.
错误
第 30 题    判断题

函数定义语句def  f(c=1,d=2,a,b):是正确的,因为默认值形参要放在前面。( )

A.
正确
B.
错误
第 31 题    判断题

return语句可以返回任何数据类型的值,包括整数、浮点数、字符串、列表、元组、字典等。( )

A.
正确
B.
错误
第 32 题    判断题

def ZiDian(**kwargs):
    print(kwargs)
ZiDian(a=1)

运行上面的Python代码后,输出结果为{'a':1}。( )

A.
正确
B.
错误
第 33 题    判断题

以下Python代码可以正常运行,输出8。( )

def qh(a,b=3):
    print(a+b)
qh(b=2,6)
A.
正确
B.
错误
第 34 题    判断题

python代码>>>lambda:x=2,y=3:x+y 的运行结果是5。( )

A.
正确
B.
错误
第 35 题    判断题

使用pip install --upgrade numpy命令能够升级numpy科学计算库。( )

A.
正确
B.
错误
编程题
第 36 题    问答题

数的分解

 给出一个正整数a,要求分解成若干个正整数的乘积,即a=a1×a2×a3×...×an,并且1<a1a2a3...an,问这样分解的种类有多少。注意到a=a也是一种分解。

例如,8可以分解成8=2*2*2,8=2*4,8=8总共3种。  

python代码如下,完善划线处的代码:

def fun(x, y=2):
    if x == 1:
        global ans
               ①        
    for i in range(y, x+1):
        if         ②        :
            fun(x//i,i)
lst = [2, 8, 9, 20] #测试数据
for i in lst:
    ans = 0
            ③        
    print(ans)

程序运行结果如下:

1
3
2
4
第 37 题    问答题

购物组合

小明单位发了100元的购物卡,小明到超市买三类洗化用品:洗发水(15元)、香皂(2元)、牙刷(5元)。要把100元正好花掉,可有哪些购买组合?

def  gouwu(money):
        for i in range(0,money//15+1):
             for j in range(0,money//2+1):
                   for  k  in  range(0,        ①        ):
                          if           ②        :
                               print('可选择的购买组合:\t购买洗发水 {} 瓶,香皂 {} 块,牙刷 {}个。'.format(        ③        ))
gouwu(100)

第 38 题    问答题

回文素数

回文素数是指一个不小于11的自然数n从左向右和从右向左读,其结果值相同且是素数,即称n为回文素数。一种求解的方法是先判断一个自然数是否为回文数,再判断它是否为素数。如果两个判断都成立,则该自然数是回文素数。请补全python代码,找出自然数1000以内的所有回文素数。

#判断是否为素数
def         ①        (n):             
    for i in range(2,n):
        if         ②        :
            break
    else:
        return True
 
#判断是否为回文数
def HuiWenShu(n):
    n=str(n)
    if n==        ③        :
        return True
    else:
        return False
for i in range(11,1001):
    if ZhiShu(i)==True         ④        :
        print('{}是回文素数!'.format(i))

答题卡
选择题
判断题
编程题
36 37 38
题目总数:38
总分数:100
时间:90分钟