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

Python中自定义函数f(x,y,z),参数xyz是整型变量,下列函数调用语句正确的是?( )

2.

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

def fun(x,y):
    if x >y:
        rst = 2 ** x
    else:
        rst = x ** 2
    return rst
x,y = 3,5
print(fun(x,y))
3.

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

def js(x,y):
    rst = x * y - x // y
    return rst
x,y = 3,5
print(js(x,y))
4.

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

def zdz(a):
    m = 0
    for i in range(1,len(a)):
        if a[i] > a[m]:
            m = i
    return m
a = [1,5,6,5,4,3,9,0,8,9]
print(zdz(a))
5.

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

def fac(n):
    s = 1
    for i in range(1,n+1):
        s = s * i
    return s
print(fac(5))
6.

运行以下Python程序,表述中错误的选项是?( 

def de(a,b): 
    c=a*2+b 
    b=a 
    return c 
a=10 
b=20
c=de(a,b)+b
7.

Python中显示第三方库的详细信息的pip指令是?( )

8.

生成1-10之间的随机整数,下列程序段不能实现该功能的是?( )

9.

小明想用lambda函数计算两个数的平方和,正确的写法是?( )

10.

五一节庆到来,各大商场都推出折扣活动,小红打算写一个计算折扣的函数,但调用时报错,以下是小红编写的代码,错误的原因是?(

def discount(price=100, rate):
    return price * rate
print(discount(80))
11.

小刚用lambda函数计算游戏技能冷却时间,以下代码的结果是?( )

cool_down = lambda t: t // 2 + 5
print(cool_down(10))


12.

老师想用*args统计学生成绩总和,以下正确的结果是?( )

def total_score(*scores):
    return sum(scores)
print(total_score(80, 90, 70))
13.

以下lambda函数中,哪个会因变量未定义而报错?( )

14.

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

15.

社团活动中,小明分享一个编好的程序,小伙伴们试运行结果是?(

def add(*arge):
    s=0
    for i in args:
        s+=i
    return s
s=add(2,3,4,5)
print(s)
16.

某物流公司需要每日处理数十万条配送路线数据,技术团队考虑使用分治算法或顺序查找算法进行路线规划,以优化货车路径并减少燃油消耗。已知城市大部分路线可分解为独立子问题。在以下哪种情况下,分治算法相比顺序查找更具优势?(

17.

小明用“分治算法”编写了一个函数。他的任务是计算1+2+3+......+100的和。

请选择下列哪一项填入①处,使程序运行成功?( )

def sum_range(start, end):
    if start == end:
        return start
    mid = (start + end) // 2
    return sum_range(start, mid) +  ①    
print(sum_range(1, 100))
18.

小明的班级有8个同学,每个人身上贴了一个不同的数字,

现在要举办一场”快速排序比赛“,规则如下:

1)设置两个变量i, j,排序开始时,i=0,j=N-1

2)以第一个元素作为关键数据,将其赋值给key, key = A[0]

3)从j开始向前搜索,即由后向前搜索(j--), 找到第一个小于key的值A[j],将A[j]A[i]交换。

4)从i开始向后搜索,即由前向后搜索(i++),找到第一个大于key的值A[i], A[i]A[j]交换。

5)重复第(3),(4)步骤,直到i==j

6)分成的前后两组数据,分别再按(1)~(5)递归排序,直到全部数据有序排列。

初始队伍顺序:[5, 3, 9, 1, 7, 2, 8, 6]

请问如果第一趟快速排序后,分组结果是什么?(

19.

光明小学有128位同学参加夏令营,老师为这些学生从1~128编上号码。现在老师随机抽取一个号码,让小明找到这位同学,小明想用二分查找的方法去查找,请问最差情况下需要查找几次才能找到这位同学?( )

20.

Python编程语言中,下面程序的输出结果是?( )

def f(a, b, c=0):
    return a + b + c
print(f(3, 9))
21.

一张彩纸厚度为0.2mm,求对折20次后的厚度,下面Python代码错误的地方是?( )

width= 0.2 
for i in range(1,20):
    width = width *2


22.

小明每天做俯卧撑,第1天做10个,之后每天比前一天多2个。可以计算5天总训练量的Python递推程序是下列哪个选项?( )

23.

小陈每年存100元,年利率5%,要计算5年后总额(假设年利率没有变化),下面Python程序段采用的算法是哪种?( )

def total_money(n):
    money = 0
    for i in range(n):
        money = (money + 100) * 1.05
    return money
24.

小明每天跑步距离是前一天的两倍,下列哪个选项可表示第n天距离?( )

25.

某社团志愿者人数每天增长量为前一天的1.5倍,若第1天增长100人,用递归法计算第5天增长量,下面Python代码①处应该填入哪个选项?( )

def growth(n):  
    if n == 1:  
        return 100  
    return   ①
判断题 共 10 题
1.

有如下Python程序, 

def jf(a,b=0): 
    return a+b

使用语句 jf(10) 调用函数,程序后输出10。( )

2.

调用Python库时可以给其取一个别名,如执行语句import numpy as np后,在程序中可以用np代替numpy。( )

3.

函数内修改全局变量时,必须使用global声明,否则会创建同名局部变量。( )

4.

Python语言编程中,必须把每一个循环语句组封装起来,设计成函数。( )

5.

将代码封装成函数可以提高程序的执行速度。(

6.

下面的Python程序的时间复杂度是否为O(n2)?( )

n = 1000
total = 0
for i in range(n):
    for j in range(i, n):
        total += 1
print(total)
7.

在用"分治算法"计算8^4时,为了体现”分而治之“的算法思想,我们可以先把问题分解成8^2*8^2,而不是直接计算8*8*8*8。( )

(备注:8^4就是8的四次方)

8.

Python语言编程中,递归函数必须包含for循环。( )

9.

递推算法必须有明确的递推公式才能实现。(

10.

定义函数时含有位置参数和关键字参数时,关键字参数必须写在位置参数之后,否则会造成语法错误。(

问答题 共 3 题
1.

无人机社团

小明参加了一个无人机社团,现有n架无人机,编号为1, 2, 3, ..., n,依照规则出队执行任务。规则:从队列中按顺序出队第k架无人机,直到剩下最后一架无人机时,它将完成最终任务。现在需要计算第m架被出队的无人机的编号,请补充完成该程序。

def solve(n, k, m):
    if   ①   :  #递归终止条件:当排除第1架时
        return (n + k - 1) %  ②  #计算首轮被排除的位置
    else:
        return (solve(  ③   ) + k) % n
n, k, m = map(int, input().split())
print(   ④   )
2.

岩浆活动

2024年,我国科学家通过对嫦娥六号月壤样品的分析研究,发现月球背面某区域的岩浆活动层数呈现递减规律:

最上层有n层岩浆活动,下一层岩浆活动层数是上一层的三分之一(向下取整),直到层数小于等于1时停止。

此外,每层岩浆活动有一个厚度值,最上层厚度为t,下一层厚度为上一层的0.5倍。

请完善以下程序,计算该区域的总岩浆活动层数和总厚度。

def moon(n, t):
    """
    计算月球某区域的总岩浆活动层数和总厚度
     n: 最上层的岩浆活动层数
     t: 最上层的岩浆活动厚度
     return: (总层数, 总厚度)
    """
    if        ①       :
        return 1, t
    else:
        sub_layers, sub_thickness = moon(n // 3,        ②       )
        return       ③       , t + sub_thickness
# 测试代码
n = int(input("请输入最上层的岩浆活动层数:"))
t = float(input("请输入最上层的岩浆活动厚度:"))
total_layers, total_thickness =      ④      
print(f"该区域的总岩浆活动层数为:{total_layers}")
print(f"该区域的总岩浆活动厚度为:{total_thickness}")
3.

收费标准

某快递公司对于不同重量的包裹和不同的寄送距离有不同的收费标准。该公司将寄送距离分为两个区间:

在距离distance小于或等于1000公里时,如果包裹重量weight小于等于2千克,收费base_near元;如果重量大于2千克,超出2千克的部分每千克收费extra_near元。

在距离大于1000公里时,如果包裹重量小于等于2千克,收费base_far元;如果重量大于2千克,超出2千克的部分每千克收费extra_far元。编写一个函数来计算包裹的快递费用,完善空白处代码。

def courier_fee(weight, distance, base_near, extra__near, base_far, extra_far):
    if distance <= 1000:
        if  ①  :
            fee = base_near
        else:
            ② 
            fee = base_near + extra_charge
    else:
        if weight <= 2:
            fee =  ③ 
        else:
              ④   
            fee = base_far + extra_charge
    return fee
# 调用函数计算快递费用
result = courier_fee(5, 1500, 10, 3, 15, 5)
print(result)
C++ 编辑器
输入
输出