2025年9月青少年软件编程Python等级考试(四级)真题试卷
剩余时间 --:--:--
单选题 共 25 题
1.

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

2.

编写计算两数乘积的匿名函数,下列Python语句中正确的是?(

3.

有如下Python程序段,执行该程序段后,变量s的值是?( )

s = 1
def sums(num):
    global s
    s = 0
    s = s + num
sums(5)
4.

Python定义函数语句中若传入的参数数量不确定,划线处正确的代码是?( )

def myfun(___):

5.

有如下Python自定义函数:

def myfun(x,y,z)

    return x+y*z

下列语句能正确调用该函数的是?( )

6.

下列关于函数返回值的描述中,正确的是?(

7.

下列关于函数功能的描述中正确的是?(

8.

小红打算每次打扫一半区域,直到剩余区域1平方米时停止。分治算法中,递归终止条件是?( )

9.

图书馆有1000本按编号排序的书(1-1000),小刚想用分治算法快速找到编号为450的书。分治算法的正确步骤是?( )

10.

老师需要合并两个已排序的学生成绩表(A:70,80,90B:75,85,95),用分治算法合并成一个有序列表。合并过程中,分治算法的关键步骤是?( )

11.

小明用Python语言编写一个递归函数fun()来计算从1加到n的所有整数之和。

比如 1+2+3+4+5 = 15

请为小明编写正确的递归函数,选择正确的选项是?( )

12.

植物园里有一棵智慧的老树精叫做“古拉”,它的生长能力极强。如果一棵树每年都能长出两棵新树,那么从第一年开始,第n年总共有多少棵树?

例如:

1年:1棵树

2年:1 + 2 * 1 = 3棵树

3年:3 + 2 * 3 = 9棵树

4年:9 + 2 * 9 = 27棵树

请你帮忙完善Python递归函数,并选择正确的选项?(

def tree(n):
    if n == 1:
        return 1
    else:
        return _______________
13.

小明正在学习辗转相除法求两数的最大公约数,他用Python语言编写了如下程序,请问第二次调用gcd()函数时,函数实参是多少?递归函数总共调用了几次?( )

def gcd(a, b):
    if a % b == 0:
        return b
    return gcd(b, a % b)
print(gcd(168, 66))
14.

小明在玩爬楼梯的游戏,需要爬n阶才能到达楼顶。规定每次只能爬1个或2个台阶,编写程序计算一共有多少种不同的方法可以爬到楼顶。

小明用Python语言编写了如下代码,下列哪个选项能得到正确结果?( )

def fun(n):
    if n in (1, 2):
        return n
    f1, f2, res = 1, 2, 0
    for i in range(3, n+1):
        __________
    return res
15.

小兔子有一堆胡萝卜,它每天都会吃掉原来的一半再多吃一根。 这样连续吃了3天,发现只剩下1根胡萝卜了。小兔子想知道第一天有多少根胡萝卜并且递推公式是什么,请选择正确的选项?( )

16.

小明和小红在玩一种数字游戏。游戏规则如下:

(1)小明先从整数1开始写下一个数字;

(2)接下来,小红会将当前数字加3后写下新的数字;

(3)然后小明会将当前数字乘以2后写下新的数字;

(4)两人轮流按照这个规则操作,直到写下的数字第一次超过100为止。

请根据游戏规则模拟推理游戏结果?(

17.

自定义函数按性别处理学生身高与体重的体测数据,下列Python函数中参数设计最合理的选项是?( )

18.

自定义函数def weather(city,unit='C'),调用函数时参数传递正确的是哪个选项?( )

19.

想用lambda函数快速实现两数相加,正确的写法是?( )

20.

关于Python自定义函数,下列说法正确的是?( )

21.

自定义游戏得分计算函数,下列Python函数调用结果正确的是?( )

def calc_score(base, bonus=10):
    return base + bonus
print(calc_score(50))
22.

自定义温度转换函数,下面Python代码横线处填入正确的是哪个选项?(  )

def celsius_to_fahrenheit(c):

    _______ c * 9/5 + 32

23.

小张想用Python爬取网页数据,老师建议安装requests库。正确的安装命令是下列哪个选项?( )

24.

更新已安装的matplotlib库到最新版本,应使用的python命令是?( )

25.

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

判断题 共 10 题
1.

Python中编写自定义函数时,不能没有参数。( )

2.

Python函数必须有返回值。( )

3.

算法的时间复杂度反应了程序执行时间随问题规模增长而增长的量级,在很大程度上能很好地反映出算法的优劣。(

4.

分治算法在所有场景下都比暴力枚举法效率更高。(

5.

递归算法有明确的结束递归的边界条件(又称终止条件)以及结束时的边界值,可以通过循环结构实现。(

6.

阅读以下Python代码:

def fact(n):
       if n <= 1:
           return 1
      else:
           return n*fact(n-1)
def fact2(n):
      s = 1
      for i in range(1, n+1):
          s = s * i
           return s


上述Python语言编写的两个函数,它们实现的功能是一样的。( )

7.

Python语言编程中,def buy(fruit="苹果", num):是合法参数定义。( )

8.

Python语言编程中,lambda x: x+1可以赋值给变量使用。( )

9.

使用pip list命令可以查看当前Python环境中已安装的所有第三方库及其版本号。( )

10.

定义一个函数时可以没有参数,也可以有多个参数,但是参数的个数必须是确定。(

问答题 共 3 题
1.

猜价格

爸爸五一旅游回来给小明购买了一文创礼物,问能否用最少的次数猜出礼物的价格。提示该礼物的价格在1-200之间,且是整数。小明编写如下Python程序解决该问题,输出结果中包含猜价格的过程以及猜的次数。请完善划线处的代码。来源:www.6547.cn 6547网题库

price = int(input()) #存礼物的实际价格
def sear(p,pmin,pmax):
    i = pmin
    j = pmax
    s = ''
    c = 0
    while         ①        :
        c = c + 1
        m = (i + j)//2
        if m == p:
            s = s  + str(m) + ','
                    ②        
        elif m < p:            
            i = m + 1
        else:
                    ③        
        s = s  + str(m) + ','
    return s,c
pmin = 1
pmax = 200
rst , c = sear(price,pmin,pmax)
print('猜价格的过程是',rst)
print('一共猜了',c,'次就猜对价格')


2.

铺设积木

小乐用 1x2 1x3 的乐高积木块横向铺满长度为 n(不为0) 的积木条。小乐只能使用 1x2 1x3 的格子。可以任意组合这些格子来覆盖小路。格子只能横着铺,不能竖着铺。求不同的铺法总数。

def          ①        :
    if          ②        :
        return 0
    if x == 2 or x == 3:
        return          ③        
    return          ④        
n = int(input())
print(calc(n)
3.

垃圾分类

为了响应国家“绿色环保,健康生活”的号召,某小区安装了智能垃圾桶,能自动识别垃圾类型并分类。请你完善以下Python程序,实现垃圾自动分类功能。

recycle = ["纸", "塑料瓶", "玻璃", "金属"]
harmfull = ["电池", "药品", "灯泡", "油漆"]
category = {1: "可回收垃圾", 2: "有害垃圾", 3: "其他垃圾"}
trash_lst = ["烟蒂", "药品", "金属"]
def judge(item):
    if         ①        :
        return 1
    elif item in harmfull:
        return 2
    else:
        return         ②        
def classify(trash):#通过字典键获取垃圾类型
    i = judge(trash)
    return         ③        
for trash_name in trash_lst:#判断垃圾类型
    cate_name =         ④        (trash_name)
    print(f"{trash_name} 属于: {cate_name}")

输出效果:

烟蒂 属于: 其他垃圾

药品 属于: 有害垃圾

金属 属于: 可回收垃圾

C++ 编辑器
输入
输出