当前位置:首页>python>青少年软件编程(Python)等级考试试卷(四级)2025-12

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

  • 2026-10-21 13:30:21
青少年软件编程(Python)等级考试试卷(四级)2025-12
往届真题点这里, 含GESP真题

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

分数:100题数:38

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

1.下列问题体现分治算法思想的是?( )

A. 打印1000以内的素数

B. 输出100以内能被5整除的整数

C. 求长方体的体积

D. 用快速排序算法对n个整数升序排序

试题编号:20250409-fcl-003

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:快速排序体现了分治算法。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

2.编写如下Python代码求两个数的最大公约数,划线处选择合适的代码?( )

def gcd(m, n):

ifm % n == 0:

returnn

else:

return_________

print(gcd(49, 28))

A. gcd(n,m%n)

B. gcd(m,m%n)

C. gcd(m%n,n)

D. gcd(m%n,m)

试题编号:20250409-fcl-004

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:欧几里得定理求最大公约数,gcd(n,m%n)。

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

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

def fib(n):

a= b = 1

fori in range(3,n+1):

c= a + b

a= b

b= c

returnc

print(fib(5))

A. 3

B. None

C. 5

D. 8

试题编号:20250409-fcl-006

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:斐波那契数列第5项的值为5,故选C。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

4.小明每天存钱,第一天存1元,之后每天存前一天的2倍。

他想用递归算法求出第几天可以存到32元。请问以下Python程序的递归调用次数是?( )

def save_days(amount, target=32):

ifamount >= target:

return0

return1 + save_days(amount * 3)

print(save_days(1))

A. 4

B. 5

C. 6

D. 7

试题编号:20250416-qdc-019

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:第1天:1元 → 未达标;第2天:1+1*2=3元 → 未达标;第3天:3+3*2=9元 → 未达标;第4天:9+9*2=27元 → 未达标,第5天:27+27*2=81元 → 达标,不再调用。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

5.小明每天存钱,第一天存1元,之后每天存前一天的2倍。 小明编写的Python程序,若递归函数缺少终止条件,会导致什么问题?( )

A. 计算结果不准确,但能正常结束

B. 程序陷入无限循环,无法停止

C. 程序运行报错

D. 计算结果正确,但效率降低

试题编号:20250416-qdc-020

试题类型:单选题

标准答案:B

试题难度:容易

试题解析:递归必须定义终止条件(如金额 ≥100 元时停止),否则函数会无限调用自身(如1元→2元→4元→…),导致栈溢出或无限循环。选项B正确,其他选项不符合递归的特性。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

6.老师用递归函数计算连续自然数1到5的和,调用sum_r(5) 时实际递归调用了几次函数?( )

def sum_r(n):

ifn == 1:

return1

returnn + sum_r(n-1)

A. 7

B. 6

C. 4

D. 5

试题编号:20250416-qdc-021

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:第1次,sum_r(5)调用sum_r(4);第2次,sum_r(4)调用sum_r(3);第3次,sum_r(3)调用sum_r(2);第4次,sum_r(1)调用sum_r(1)。

考生答案:D

考生得分:0

是否评分:已评分

评价描述:

7.递归算法的Python程序实现问题,下列说法正确的选项是?( )

A. 问题的规模越大,递归算法的效率越高

B. 需要使用循环语句

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

D. 无需结束递归的边界条件

试题编号:20250416-qdc-022

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:递归算法必须有明确的结束递归的边界条件。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

8.小美想用递归算法实现字符串反转,以下代码能正确反转字符串,划线处应该填写哪个选项?( )

def r(s):

iflen(s) <= 1:

returns

returnr() + s[0]

s='abcde'

print(r(s))

A. s[::-1]

B. s[:]

C. s[:1]

D. s[1:]

试题编号:20250416-qdc-023

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:每一次递归调用,把第一个字符移到右侧,最终实现整个字符串反转。C项正确。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

9.家里有16平方米的房间要打扫,小明和小红两兄妹分别想解决打扫的问题。 小明想用递归的方法解决“打扫房间”的问题:每次打扫一半区域,直到剩余区域小于1平方米。 以下哪项是递归解决此问题的核心思想?( )

A. 将大房间拆分成多个小房间,同时打扫所有小房间

B. 每次打扫房间剩余的一半区域,直到剩余区域小于1平方米

C. 先打扫整个房间,再逐步缩小范围检查是否干净

D. 随机选择区域打扫,直到剩余区域小于1平方米

试题编号:20250416-qdc-024

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:递归的核心是分而治之,将原问题(打扫整个房间)分解为规模更小的同类子问题(每次打扫一半区域),直到子问题足够简单(剩余区域 <1 平方米)可直接解决。选项B准确描述了这一过程,其他选项未体现递归的“分解-解决”特性。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

10.小明写了一个关于计算梯形面积的函数,运行如下Python代码的结果是什么?( )

def s(a, b, h):

area= (a + b) * h / 2

print(s(1, 2, 2))

A. 2

B. 2.0

C. 3.0

D. None

试题编号:20250418-zj-011

试题类型:单选题

标准答案:D

试题难度:一般

试题解析:函数用return语句将值返回给调用函数的代码行。s()函数没有return语句,所以没有返回值,默认为None。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

11.下列有关Python自定义函数的描述,正确的是?()

A. 调用函数时传递的实参个数必须大于或等于形参个数

B. 函数参数可以是任意数据类型

C. 函数参数必须有默认值

D. 函数参数不能是字符串

试题编号:20250418-zj-012

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:Python函数可以接受任意类型的参数,包括整数、浮点数、字符串、列表等。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

12.在Python语言中,运行如下代码,执行结果正确的是?( )

x = 10

def fun(x):

print(x)

x= 5

fun(x)

print(x)

A. 5

10

B. 5

5

C. 10

10

D. 10

5

试题编号:20250418-zj-013

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:函数的局部变量作用域是函数内部。全局变量的作用域是整个程序。局部变量的修改不能影响全局变量。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

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

a = 5

def fun():

globala

a= a *2

print(a)

fun()

print(a)

A. 10

10

B. 5

5

C. 10

5

D. 5

10

试题编号:20250418-zj-014

试题类型:单选题

标准答案:A

试题难度:一般

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

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

14.小明正在用Python编写一个“魔法数字盒”程序。这个数字盒有一个特殊功能:每次按下按钮时,数字会根据内部规则变化。以下是程序的一部分代码,如果小明连续按下按钮两次,屏幕上会显示什么数字?( )

def magic_box():

num= 0# 初始数字是0

defpress_button():

nonlocalnum

num+= 1# 每次按下按钮,数字加1

returnnum

returnpress_button

button = magic_box()

print(button())# 第一次按下按钮

print(button())# 第二次按下按钮

A. 1

1

B. 1

2

C. 0

1

D. 0

0

试题编号:20250418-zj-015

试题类型:单选题

标准答案:B

试题难度:一般

试题解析:nonlocal 关键字告诉 Python,变量 num 不属于 press_button 函数内部,而是属于外层的 magic_box 函数。因此,每次按下按钮时,num 的值会保留并增加 1。

第一次按下按钮时,num 从 0 变为 1;第二次按下按钮时,num 从 1 变为 2。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

15.Python3.5之后的版本新增了对函数参数和返回值的类型指定和检查,运行如下代码块,结果正确的是?( )

def fun(a:int, b:int)->int:

if(a> b):

returna + b

else:

returnb

print(fun("3", "2"))

A. 2

B. 5

C. 32

D. 类型不对,程序报错!

试题编号:20250418-zj-016

试题类型:单选题

标准答案:C

试题难度:一般

试题解析:Python本质上还是动态类型语言,所以类型不匹配也不会出错。这里参数是两个字符,字符相加是连接。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

16.在Python语言中,导入第三方库的语法正确的是哪一项?( )

A. from math import as m

B. import m as math

C. import math as m

D. from math as m import *

试题编号:20250418-zj-033

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:在Python语言中,导入第三方库的语法有两种:

import 模块名1 [as 别名1], 模块名2 [as 别名2], ......

from 模块名 import 成员名1 [as 别名1], 成员名2 [as 别名2], ......

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

17.在Python语言中,可以使用pip命令安装第三方库,以下哪个命令是安装命令?( )

A. pip download

B. pip search

C. pip show

D. pip install

试题编号:20250418-zj-034

试题类型:单选题

标准答案:D

试题难度:容易

试题解析:pip install <第三方库名>:安装指定的第三方库。

pip download <第三方库名>:下载但不安装指定的第三方库。

pip search <第三方库名>:根据关键词在名称和介绍中搜索第三方库。

pip show <第三方库名>:列出指定第三方库的详细信息。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

18.在Python语言编程中,创建一个自定义函数,用于统计图书借阅次数,以下正确的无参函数定义是?( )

A. def get_count(book_id=0):

B. def get_count():

C. def get_count(None):

D. def get_count(*):

试题编号:20250424-tr-001

试题类型:单选题

标准答案:B

试题难度:容易

试题解析:无参数函数定义的正确语法,不带参数传入。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

19.小张想用lambda函数计算两个数的和,正确的写法是?( )

A. lambda a,b: a + b

B. lambda a,b: return a + b

C. lambda a,b -> a + b

D. lambda (a,b): a + b

试题编号:20250424-tr-002

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:A:lambda a,b: a + b 是正确写法,lambd函数隐式返回表达式结果,无需return。 B:错误,lambda函数中不能显式使用return语句。 C:错误,Python的lambda语法使用冒号(:)而非箭头(->)。 D:错误,Python 3中lambda的参数不能以元组形式声明。

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

20.有如下Python自定义函数,能正确调用该函数的选项是?( )

def f(a,b,c)

returna-b/c

A. f(1,2)

B. f(1,2,c=3)

C. f(a=1,2,3)

D. f(1,b=2,3)

试题编号:20250424-tr-003

试题类型:单选题

标准答案:B

试题难度:较难

试题解析:参数传递数量要一致,关键字参数要在位置参数后面。

考生答案:B

考生得分:2

是否评分:已评分

评价描述:

21.下面Python代码的输出结果是?( )

def add(x=2, y=3):

returnx + y

print(add(y=5))

A. 5

B. 7

C. 8

D. 报错

试题编号:20250424-tr-004

试题类型:单选题

标准答案:B

试题难度:容易

试题解析:Python函数允许通过关键字参数覆盖部分默认参数,未覆盖的参数仍使用默认值,结果为2+5=7。

考生答案:C

考生得分:0

是否评分:已评分

评价描述:

22.在下列Python代码中,将data变为全局变量,横线处应该填入的是?( )

data = 0

def add_data():

______

data+=2# 修改全局变量

A. global

B. nonlocal

C. var

D. 不需要填

试题编号:20250424-tr-005

试题类型:单选题

标准答案:A

试题难度:容易

试题解析:修改全局变量需global声明。

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

23.有以下食堂点餐Python函数,现需要点"牛肉面"、不点甜品(dessert),下列四个点餐选项中最合适的是?( )

def order_meal(food, dessert=None):

...

A. order_meal('牛肉面', dessert=0)

B. order_meal(food='牛肉面', dessert=True)

C. order_meal('牛肉面', dessert='')

D. order_meal('牛肉面')

试题编号:20250424-tr-006

试题类型:单选题

标准答案:D

试题难度:较难

试题解析:使用默认参数dessert=None。

考生答案:D

考生得分:2

是否评分:已评分

评价描述:

24.在Python语言编程中,以下哪个函数调用后,可以打印输出欢迎语“Welcome!”?( )

A. def greet():

print("Welcome!")

B. def greet:

return"Welcome!"

C. def greet(): 

return "Welcome!"

D. def greet("user"):

print("user","Welcome!")

试题编号:20250424-tr-007

试题类型:单选题

标准答案:A

试题难度:一般

试题解析:直接打印输出欢迎语,选A。

考生答案:A

考生得分:2

是否评分:已评分

评价描述:

25.下列哪种情况的程序,时间复杂度最低?( )

A. 一个for循环,循环 100 次

B. 两个嵌套的for循环,每个循环 100 次

C. 执行一次print语句

D. 用while循环找列表里的某个元素

试题编号:20250424-tr-031

试题类型:单选题

标准答案:C

试题难度:容易

试题解析:执行一次print语句,操作次数固定,时间复杂度是 O (1) ;一个for循环循环 100 次是 O (n) ;两个嵌套for循环是 O (n2) ;用while循环找列表元素,最坏情况要遍历整个列表,也是 O (n) ,O (1) 是最低的时间复杂度。

考生答案:C

考生得分:2

是否评分:已评分

评价描述:

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

26.分治思想是将一个大问题分解成若干个小问题,分别解决这些小问题,然后再将小问题的解合并起来以解决原始的大问题。程序实现时必须使用递归程序。( )

正确 错误 

试题编号:20250409-fcl-010

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:分治思想程序实现时可以不使用递归程序,如二分查找。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

27.Python语言编程中,递归函数可以没有终止条件,只要问题规模能自动缩小到最小值。( )

正确 错误 

试题编号:20250416-qdc-025

试题类型:判断题

标准答案:错误

试题难度:容易

试题解析:无终止条件会导致无限递归,触发RecursionError。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

28.对于斐波那契数列,递推算法的时间复杂度远低于递归算法。( )

正确 错误 

试题编号:20250416-qdc-026

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:斐波那契数列的计算求解,递推算法时间复杂度为 O(n),递归算法时间复杂度为 O(2^n)。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

29.Python语言中,全局变量的作用域是整个程序,局部变量的作用域是函数内部。所以执行以下代码块打印输出是"wang"。( )

name = "zhang"

def fun(name):

print(name)

name= "wang"

fun(name)

正确 错误 

试题编号:20250418-zj-017

试题类型:判断题

标准答案:错误

试题难度:容易

试题解析:全局变量的作用域是整个程序,局部变量的作用域是函数内部,没错。

但函数中的同名局部变量在print()调用之后申明的,所以print()函数调用的name,是参数传入的全局变量值,应该输出"zhang"。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

30.在Pyhon语言中,nonlocal关键字用来在定义局部变量的同时,修改全局变量的值;global关键字用来在函数或局部作用域使用外层(非全局)变量。( )

正确 错误 

试题编号:20250418-zj-018

试题类型:判断题

标准答案:错误

试题难度:容易

试题解析:global与nonlocal两者定义搞反了。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

31.小明想用Python画一幅彩色的图画,他听说可以使用一个叫turtle的库来完成。因此,必须打开命令窗口输入"pip install turtle"来安装这个第三方库。( )

正确 错误 

试题编号:20250418-zj-035

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:turtle是Python的标准库之一,已经默认包含在Python的安装包中,因此不需要额外安装。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

32.Python语言编程中,函数convert = lambda x: str(x)可以把数字转为字符串。( )

正确 错误 

试题编号:20250424-tr-008

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:lambda合法赋值使用。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

33.在Python中,自定义函数的函数体内必须有return语句。( )

正确 错误 

试题编号:20250424-tr-009

试题类型:判断题

标准答案:错误

试题难度:一般

试题解析:自定义函数的函数体内可以没有return语句。

考生答案:错误

考生得分:2

是否评分:已评分

评价描述:

34.函数参数**kwargs可以接收学号-姓名键值对。( )

正确 错误 

试题编号:20250424-tr-010

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:**kwargs接收键值对。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

35.时间复杂度为O(n)的程序,比时间复杂度为O(n2)的程序执行效率要高。( )

正确 错误 

试题编号:20250424-tr-032

试题类型:判断题

标准答案:正确

试题难度:一般

试题解析:随着输入规模n的增大,O (n) 增长速度比 O (n2) 慢,即执行相同规模的任务,O (n) 时间复杂度的算法所需执行次数更少,效率更高 。

考生答案:正确

考生得分:2

是否评分:已评分

评价描述:

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

36.回文单词

某同学收集了很多单词,不同的单词之间用'-'拼接在一起,如'refer-level-face-',他发现有些单词如level,从左往右读和从右往左读该单词是一样的,称之为回文单词。他想统计他收集的单词中有多少个回文单词。步骤如下:(1)首先将单词按'-'分割出所有单词,(2)统计这些单词中回文单词的数量。编写的Python代码如下,完善划线处的代码。

def revstr(str):

iflen(str) == 1:

return①

else:

return②

word = 'refer-level-face-'

wordlst = []

s = ''

for t in word:

ift !='-':

③

else:

wordlst.append(s)

s= ''

c = 0

for w in wordlst:

rev= revstr(w)

if④:

c+= 1

print('对称的字符串个数有',c)

试题编号:202512-P4-36

试题类型:编程题

标准答案:

参考程序:

def revstr(str):

iflen(str) == 1:

returnstr

else:

returnrevstr(str[1:]) + str[0]

word = 'refer-level-face-'

wordlst = []

s = ''

for t in word:

ift !='-':

s+= t

else:

wordlst.append(s)

s= ''

c = 0

for w in wordlst:

rev= revstr(w)

ifw == rev:

c+= 1

print('对称的字符串个数有',c)

试题难度:一般

试题解析:

评分标准:

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

(2)revstr(str[1:]) + str[0](或等效答案);(3分)

(3)s += t 或 s = s + t(或等效答案); (2分)

(4)w == rev(或等效答案)。(3分)

37.孪生素数

素数是指大于1的自然数,且只能被1和它本身整除的数。孪生素数是指差值为2的两个素数,例如 (3, 5)、(11, 13) 等。问题:给定一个整数 n,请编写程序输出所有小于等于 n 的孪生素数对,按升序排列。 补全下列程序代码。

defis_prime(num):

if① :

returnFalse

fori in range(2, num):

if②:

returnFalse

return③

deffind(n):

fori in range(2,n-1):

ifis_prime(i) and④:

print(i,i + 2)

n = int(input())

find(n)

试题编号:202512-P4-37

试题类型:编程题

标准答案:

参考程序:

def is_prime(num):

ifnum < 2:# ① 小于2的数非素数

returnFalse

fori in range(2, num):

ifnum % i == 0:# ② 存在因数则非素数

returnFalse

returnTrue # ③ 通过所有检查则为素数

def find(n):

fori in range(2, n - 1):

ifis_prime(i) and is_prime(i + 2):# ④ 检查孪生素数对

print(i,i + 2)

n = int(input())

find(n)

试题难度:容易

试题解析:

评分标准:

(1)num < 2 (或等效答案);(3分)

(2)num % i == 0 (或等效答案);(3分)

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

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

38.细胞分裂

在生物课实验中,有一个细胞,每分钟会分裂一次。前 2 分钟,它每次分裂会变成 2 个新细胞;从第 3 分钟开始,每次分裂会变成 3 个新细胞。下面的递归函数用于计算12分钟后细胞的总数,请完善划线处的代码。 

def cell_division(n):

ifn == 0:

return①

elifn <= 2:

return②

else:

return③

print( ④)

试题编号:202512-P4-38

试题类型:编程题

标准答案:

参考程序:

def cell_division(n):

ifn == 0:

return1

elifn <= 2:

return2 * cell_division(n-1)

else:

return3 * cell_division(n-1)

print(cell_division(12))

试题难度:一般

试题解析:

评分标准:

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

(2)2 * cell_division(n-1)(或等效答案) ;(2分)

(3)3 * cell_division(n-1)(或等效答案);(2分)

(4)cell_division(12)(或等效答案) 。 (2分)

备考资料:

机器人等级考试(一级)知识点汇总+例题

机器人等级考试(二级)知识点汇总+例题

机器人等级考试(三级)知识点汇总+例题

机器人等级考试(四级)知识点汇总+例题

全国青少年软件编程等级考试(python一级)知识点

全国青少年软件编程等级考试(python二级)知识点汇总+例题

全国青少年软件编程等级考试(python三级)知识点汇总+例题

最新文章

随机文章