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

分数:100  题数:38

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

1.      下列程序段的运行结果是?( )

def s(n):

    if n==3:

        return 4

    else:

        return n+s(n-1)

print(s(5))

A.             1

B.              12

C.              13

D.             15

试题编号:20230223-lz-020

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:函数f作用是如果是3,返回值是4,如果是非3,就返回n+s(n-1)。因实参为5,运行后返回值依次是5+s(4),4+s(3),也就是5+4+s(3),因为s(3)的值为4,所以最后求得是表达式5+4+4的值,结果为13。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

2.      下列程序段的运行结果是16,则在①处填写的代码是?( )

def s(n):

    s=1

    for a in range(1,5):

              ①      

    return s

print(s(4))

A.             s=s*2

B.              s=s+n

C.              s=s+a

D.             s=s+1

试题编号:20230223-lz-021

试题类型:单选题

标准答案:A

试题难度:容易

试题解析:A选项表达式求得是2的4次幂,最后结果为16,B选项表达式求的是1加上4个n的和,结果为17,C选项表达式求的是1加上1至4之间所有数字的和,最后结果为11,D选项表达式求的是1加上4个1的和,结果为5。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

3.      下列程序功能是通过递归来实现将一个十进制数转换为八进制数,则在______处填写的代码是?( )

def s(n):

    if n < 8:

        return str(n)

    else:

        return _____________

m = s(int(input("输入十进制数字:")))

print("转换后八进制数是:",m)

A.             s(n//8)+n

B.              s(n//8)

C.              s(n//8)+str(n%8)

D.             str(n%8)

试题编号:20230223-lz-022

试题类型:单选题

标准答案:C

试题难度:较难

试题解析:十进制转换八进制的方法是将n除以8,余数作为该位的值,商继续除以8,不断重复上述过程,直到商小于8,然后将之前求出的商依次输出即是转换后的8进制数,s函数将每次求出的余数放入字符串,商去求下一位的余数,所以递归表达式是s(n//8)+str(n%8)。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

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

A.             递归算法一定存在递归出口

B.              递归的特点就是反复调用自身,将大问题变为同类小问题

C.              递归可以避免使用复杂的循环结构,从而有效降低代码的复杂程度

D.             递归算法简洁,运行效率较高

试题编号:20230223-lz-024

试题类型:单选题

标准答案:D

试题难度:容易

试题解析:递归算法效率不高。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

5.      有如下Python程序,执行该程序的结果是?( )

def nxs(n):

    s = 0

    while n >0:

        s = s * 10 + n % 10

        n //= 10

    return s

print(nxs(123))

A.             123

B.              6

C.              231

D.             321

试题编号:20240114-fcl-015

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:函数nxs功能是计算n的逆序数。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

6.      有如下Python程序,执行该程序后变量c的值是?( )

def prime(n):

    for i in range(2,n):

        if n % i == 0:

            return 0

    return 1

c = 0

for i in range(2,10):

    if prime(i):

        c += 1

A.             3

B.              4

C.              5

D.             6

试题编号:20240114-fcl-016

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:prime函数功能判断n是否是质数。

考生答案:D

考生得分:0

是否评分:已评分

评价描述:

7.      有如下Python程序,执行该程序后,输出的结果是?( )

def zdz(s):

    m = s[0]

    for i in s[1:]:

        if i > m:

            m = i

    return m

print(zdz('abc789XYZ'))

A.             c

B.              9

C.              Z

D.             None

试题编号:20240114-fcl-017

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:函数zdz()的功能是求参数字符串中最大的字符。

考生答案:B

考生得分:0

是否评分:已评分

评价描述:

8.      有如下Python程序,执行该程序后输出的结果是?( )

n = 10

def fun():

    global n

    n = n ** 2

    print(n)

fun()

print(n)

A.             100

100

B.              20

20

C.              100

10

D.             10

100

试题编号:20240114-fcl-018

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:global定义全局变量。

考生答案:D

考生得分:0

是否评分:已评分

评价描述:

9.      在Python中,可以通过什么语句导入现有的标准库或者其他人提供的第三方库来编程?( )

A.             import

B.              def

C.              input

D.             output

试题编号:20240115-qdc-011

试题类型:单选题

标准答案:A

试题难度:容易

试题解析:导入现有的标准库或者其他人提供的第三方库的操作方法。

考生答案:D

考生得分:0

是否评分:已评分

评价描述:

10.   Python程序中某函数使用了3个变量,其中2个变量都指定了默认值,调用该函数时,参数的个数最少为几个?( )

A.             0

B.              2

C.              1

D.             3

试题编号:20240115-qdc-013

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:Python自定义函数参数的基础知识。

考生答案:B

考生得分:0

是否评分:已评分

评价描述:

11.   递归算法的基本思想是把规模较大的问题变成规模较小的问题,下列选项中哪一项必须要有?( )

A.             循环语句

B.              数学知识

C.              明确的结束递归的边界条件

D.             明确的开始递归的边界条件

试题编号:20240115-qdc-016

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:递归算法的要素。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

12.   图1是一个水平摆放的小正方体木块,图2,图3是由这样的小正方体木块叠放而成的,按照这样的规律放下去,第七个叠放的图形有多少个正方形木块?这个问题我们可以用以下什么算法解决?( )

A.             查找

B.              递推

C.              排序

D.             选择

试题编号:20240115-qdc-018

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:分别观察正方体的个数为:1,1+5,1+5+9,…从图2开始,正方形方格的数量为s[n]=s[n-1]+(n-1)*4+1。这是递推问题。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

13.   以下算法中,不可以按照分治的策略问题由大化小的是?( )

A.             快速排序

B.              冒泡排序

C.              汉诺塔

D.             二分查找

试题编号:20240115-qdc-022

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:冒泡排序的数据是无序的,无法按照分治的策略问题规模由大化小。

考生答案:A

考生得分:0

是否评分:已评分

评价描述:

14.   以下函数的功能是求长方形面积,函数调用的正确方式是哪一项?( )

def fun(a, b):

    return a * b

A.             fun(a = 1, 2)

B.              fun(a = 1)

C.              fun(2)

D.             fun(1, b=2)

试题编号:20240212-zj-006

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:位置实参与关键字实参混用,位置实参必须放在关键字实参之前,否则运行程序会报错。

考生答案:A

考生得分:0

是否评分:已评分

评价描述:

15.   以下函数求圆的面积,运行如下代码结果正确的是哪一项?( )

def fun(r, pi=3.14):

    return r * r * pi

print(fun(10, 3))

A.             314

B.              300

C.              31.4

D.             程序会报错

试题编号:20240212-zj-007

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:如果在调用函数时给函数提供了实参,python将使用指定的实参值,而不是默认值。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

16.   以下函数用“分治算法”求列表元素之和,请补全代码?( )

def fun(arr): 

    if len(arr) == 1:

        return arr[0]

    mid = len(arr) // 2

    left = fun(arr[:mid])

    right = ____________

    return left + right

arr = [1,2,3,4,5,6,7,8,9,10]

print(fun(arr))

A.             fun(arr[mid+1:])

B.              sum([mid:])

C.              fun(arr[mid:])

D.             sum(arr[mid+1:])

试题编号:20240212-zj-030

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:分治算法将原问题分解为多个子问题,每个子问题与原问题类型相同,但比原问题规模小,所以划线处用切片方式取原数组的一半,并且是递归调用。选C

考生答案:D

考生得分:0

是否评分:已评分

评价描述:

17.   下列关于创建词云图的是哪个模块?( )

A.             pyquery

B.              wordcloud

C.              xlrd

D.             wheel

试题编号:20240212-zj-034

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:wordcloud模块可以用来创建词云图。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

18.   下列正确导入海龟库的方式是?( )

A.             import turtle as

B.              from turtle as t

C.              from turtle import t

D.             import turtle

试题编号:20240212-zj-035

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:第三方库导入的方法 import 模块名1 [as 别名1], 模块名2 [as 别名2], ...

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

19.   以下哪一项不属于分治算法的特征?( )

A.             一个复杂的问题可以划分成多个相同或相似的子问题

B.              划分出的子问题容易找到简单的求解方法

C.              将所有子问题的解合并起来可以得到原问题的解

D.             分治算法的执行效率很低

试题编号:20240215-xm-020

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:考查分治算法的特征。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

20.   小明班上有50人,数学成绩已经由高到低排列,使用二分查找查找出小明的成绩,至多进行几次查找?( )

A.             50次

B.              8次

C.              7次

D.             6次

试题编号:20240215-xm-023

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:考查二分查找法的实施过程,对50人进行6次即可查找到。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

21.   对于Python语句f=lambda x,y:x**y+x//y,print(f(7,2))的输出结果是?( )

A.             17

B.              18

C.              52

D.             53

试题编号:202402—tr—001

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:lambda表达式在Python当中和定义函数是完全等效的,7的2次方是49,7整除2的结果是3,两者相加结果为52。

考生答案:A

考生得分:0

是否评分:已评分

评价描述:

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

def  fn(x, y):

        if x >=y:

                return x-y

        else:

                return y

print(fn(4, 7),fn(8, 5))

A.             7 3

B.              7 5

C.              -3 5

D.             -3 3

试题编号:202402—tr—002

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:如果参数x大于参数y,返回值为两者之差,否则返回参数y的值。

考生答案:B

考生得分:0

是否评分:已评分

评价描述:

23.   下列有关函数的说法,不正确的是?( )

A.             使用random模块的函数randint(1, 100)获取随机数时,有可能会得到100

B.              如果Python程序包含一个函数main(),这个函数与其他函数地位相同

C.              函数是代码复用的一种方式

D.             已知 f = lambda x: 5,那么表达式 f(3)的值为3

试题编号:202402—tr—003

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:random.randint(a, b),a和b是两个整数,表示一个闭区间[a, b]。函数的作用是生成一个位于这个闭区间内的随机整数,返回值为生成的随机整数;python并没有强制要求程序中必须有一个显式的主函数main(),如果有的话,与其他函数地位相同;函数本身是代码复用的一种方式;lambda x: 5不管传给函数的实参是什么,返回值都是5。

考生答案:A

考生得分:0

是否评分:已评分

评价描述:

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

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

        return x-y

y=f(y=f(),x=5)

print(y)

A.             -3

B.              3

C.              2

D.             5

试题编号:202402—tr—004

试题类型:单选题

标准答案:B

试题难度:较难

试题解析:第一次调用函数y=f(),没有提供参数值,则取默认值,y=f()值为2。第二次调用函数,传入的实参x=5,y=2,返回值为3。

考生答案:A

考生得分:0

是否评分:已评分

评价描述:

25.   当n为10时,运行下列Python程序后的结果是?( )

def  fn(num):

    if num % 2 == 0:

        return False

    else:

        return True

n=int(input("请输入一个正整数:"))

print(fn(n))

A.             True

B.              False

C.              出错不能运行

D.             None

试题编号:202402—tr—006

试题类型:单选题

标准答案:B

试题难度:容易

试题解析:当参数除以2的余数为0时,返回值为False,否则返回值为True。当传入参数为10,返回False。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

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

26.   递归算法需要设置递归终止条件,不然会进入无限递归的情况。( )

正确        错误         

试题编号:20230223-lz-026

试题类型:判断题

标准答案:正确

试题难度:容易

试题解析:递归需要设置终止条件,否则会不断调用,形成无限递归的情况。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

27.   递归算法的特点是调用自身,所以占用的存储空间较小。( )

正确        错误         

试题编号:20230223-lz-027

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:递归调用会占用额外的存储空间。

考生答案:正确

考生得分:0

是否评分:已评分

评价描述:

28.   添加第三方库可以不用命令或集成开发工具,直接通过网络工具下载任意该库的.exe安装文件,运行安装即可。( )

正确        错误         

试题编号:20230223-lz-036

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:需与当前使用Python版本相对应。

考生答案:正确

考生得分:0

是否评分:已评分

评价描述:

29.   Python中return语句将函数值返回到调用函数的代码处。( )

正确        错误         

试题编号:20240114-fcl-011

试题类型:判断题

标准答案:正确

试题难度:容易

试题解析:函数return语句的用法。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

30.   函数的返回值可以是整数型、字符串型、列表等,不能是字典类型。( )

正确        错误         

试题编号:20240114-fcl-012

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:函数的返回值可以是整数型、字符串型、列表、元组、字典类型等。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

31.   运行以下代码:

def fun(x, y, z):

    return x + y - z

print(fun(1, y=10, 3)

运行结果为:8。( )

正确        错误         

试题编号:20240212-zj-003

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:混用位置实参和关键字实参,位置实参必须放在关键字实参之前,否则运行程序会报错。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

32.   一个袋子里有128枚硬币,其中一枚是假币,并且假币和真币外观一模一样,仅凭肉眼无法区分,仅知道假币比真币轻一些,我们现在借助天平来查找假币,最多称9次可以找到假币。( )

正确        错误         

试题编号:20240212-zj-027

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:128枚硬币可以用3分法分解: (43,43,42)->(14,14,15)->(5,5,4)->(2,2,1)->(1,1) 即最多称5次可以找到假币。

考生答案:正确

考生得分:0

是否评分:已评分

评价描述:

33.   算法的空间复杂度越高,说明算法对应的程序代码量越多。( )

正确        错误         

试题编号:20240215-xm-034

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:考查空间复杂度的定义。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

34.   在Python中自定义函数时,形参与返回值不是必需的( )

正确        错误         

试题编号:202402—tr—020

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:如果函数不需要参数,则不需要定义形参。如果return 后没有返回值,也可以没有return 语句,这样的函数会返回None值。

考生答案:错误

考生得分:0

是否评分:已评分

评价描述:

35.   在Python中,函数体return语句之后的代码行都不会被执行,return语句结束整个函数。( )

正确        错误         

试题编号:202402—tr—021

试题类型:判断题

标准答案:正确

试题难度:容易

试题解析:在Python自定义函数中,一旦执行到return语句,后面的语句就不再执行了。

考生答案:错误

考生得分:0

是否评分:已评分

评价描述:

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

36.   米粒问题

阿凡提与国王比赛下棋,国王说要是自己输了的话阿凡提想要什么他都可以拿得出来。阿凡提说那就要点米吧,棋盘一共64个小格子,在第一个格子里放1粒米,第二个格子里放2粒米,第三个格子里放4粒米,第四个格子里放8粒米,以此类推,后面每个格子里的米都是前一个格子里的2倍,一直把64个格子都放满。需要多少粒米呢?根据题意,请完善划线处的代码。

def fun(n):

    x =         ①       

    for i in range(n):

                ②        

    return x

s =         ③       

for i in range(64):

    s += fun(        ④        )

print(s)

试题编号:202503-P4-36

试题类型:编程题

标准答案:

参考程序:

def fun(n):

    x = 1

    for i in range(n):

        x *= 2

    return x

s = 0

for i in range(64):

    s += fun(i)

print(s)

试题难度:一般

试题解析:

评分标准:

(1)1 或等效答案;(3分)

(2)x *= 2 或等效答案;(4分)

(3)0 或等效答案;(3分)

(4)i 或等效答案。(2分)

展示地址:点击浏览

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

考生得分:0

是否评分:已评分

评价描述:

37.   查字典

假如字典为1000页,若用二分法来翻到具体指定的页码,则横线处能正确控制循环体运行的表达式是什么?请完善横线处的代码。

x=int(input("请输入要查找的页码(小于1000):"))

flagleft=1

flagright=1000

n=0

while        ①        :

        mid= (flagleft+flagright)//2

        n=n+1

        if  mid>x:

                    ②        

        elif mid<x:

                     ③        

        else:

                break

print('需要查找的次数为:',n)

试题编号:202503-P4-37

试题类型:编程题

标准答案:

参考程序:

x=int(input("请输入要查找的页数(小于1000):"))

flagleft=1

flagright=1000

n=0

while flagleft<=flagright:

        mid=(flagleft+flagright)//2

        n=n+1

        if  mid>x:

                flagright=mid-1

        elif mid<x:

                flagleft=mid+1

        else:

                break

print('需要查找的次数为:',n)

本题考查的知识点为二分法求解问题。空白处①需要填写的是退出循环的条件,即左边界页码要小于右边界页码;空白处②③需要填写的是左右边界的迭代控制。

试题难度:容易

试题解析:

评分标准:

(1)flagleft<=flagright 或等效答案;(2分)

(2)flagright=mid-1 或等效答案;(3分)

(3)flagleft=mid+1 或等效答案。(3分)

展示地址:点击浏览

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

考生得分:0

是否评分:已评分

评价描述:

38.   蜗牛爬行

一只蜗牛在如下图所示的数字方格上移动,已知它只能从标号小的方格移动到标号大的相邻方格。现在请你计算:蜗牛从方格M开始爬到方格N,1<=M<N<=1000,有多少种移动路线?以下用Python编程实现,请你补全代码。

def woniu(m , n):

    k =         ①        

    a = [0] * (k+1)

    a[1]= 1

    a[2]=         ②       

    for i in range(3,        ③        ):

        a[i]=        ④        

    return a[k]

m = int(input())

n = int(input())

print(woniu(m,n))

试题编号:202503-P4-38

试题类型:编程题

标准答案:

参考代码:

def woniu(m , n):

    k = n - m

    a = [0] * (k+1)

    a[1]=1

    a[2]=2

    for i in range(3,k+1):

        a[i]=a[i-1]+a[i-2]

    return a[k]

m = int(input())

n = int(input())

print(woniu(m,n))

试题难度:一般

试题解析:

评分标准:

(1)n – m  或等效答案;(3分)

(2)2 或等效答案;(2分)

(3)k+1 或等效答案;(2分)

(4)a[i-1]+a[i-2] 或等效答案。(3分)

展示地址:点击浏览

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

考生得分:0

是否评分:已评分

评价描述:

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐