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

一款经典的猜数字游戏:甲先在50以内随意写一个数字,乙开始猜,如果乙猜的比甲写的数大了,甲就说大了,反之,则说小了。请问根据对分查找思想,乙最多用多少次能猜出甲写的正确数字?( )

2.

二分查找法是利用了哪种Python算法思想?( )

3.

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

def f(n):
    if(n==1):
        return 1
    return n*f(n-1)
print(f(5))
4.

下列定义计算圆周长的匿名函数中,正确的是?( )

5.

有如下Python程序段,在调用函数sjc时实参是?( )

def sjc(x):
    a,b=1,1
    print(a,b,x)
sjc(20)
6.

下列有关匿名函数lambda的描述,错误的是?( )

7.

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

def qh(a,b,c=5):
    return a+b+c
print(qh(5,10),qh(10,10,10))
8.

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

def area(r,pi=3.14):
    return r*r*pi
print(area(3,10))
9.

fun函数可以传入的参数a不确定有多少个,划线处的代码正确的是?( )

def fun(___):
    pass
10.

请选择下面python代码的输出结果是?( )

def f(n):
    n += 1
    return n
x = 10
y = f(x)
print(y)
11.

执行如下Python程序,语句“s=s+i”被执行的次数是?( )

def f(n):
    s = 0
    for i in range(1,n):
        if i % 3 == 0 or i % 2 == 0:
            s = s+i
f(10)
12.

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

def qh(n):
    s , f = 0,1
    for i in range(1,n+1):
        s += f * i
        f = -f
    return s
print(qh(4))
13.

有如下Python程序,运行后fac(a)函数被调用了几次?( )

def fac(a):
    if a == 1:
        return 1
    else:
        return a + fac(a-1)
print(fac(6))
14.

Python中对已经安装的第三方库进行更新,使之升级到最新版本的pip指令是?( )

15.

Python中可以通过import math 语句导入math函数库,下列选项中可以实现向下取整的是?( )

16.

以下python代码的时间复杂度是多少?( )

i = 1
n = 100
while i < n:
    i = i * 2
17.

以下哪种函数一定是直接或间接调用函数本身的函数?( )

18.

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

19.

实现递推算法的核心程序结构通常是使用?( )

20.

关于递归与递推算法,表述不准确的观点是?( )

21.

实际应用中,一般不采用递归的方法来解决层次或序列规模较大的计算问题,其原因是?( )

22.

运行下列Python程序后的结果是?( )

def f(n):
        n=n*2
        return n
a=[7,1]
b=f(a)
print(a,b)
23.

陈丽把自己每天的学习时间情况记录在文本文件“record.txt”中,现在她想用Python程序打开并读取某天的学习时间情况,请问打开文件的正确操作的是?( )

24.

小明设计了一个计算矩形体积的函数,以下调用函数的四个选项中,参数传递错误的是?( )

def vol(length,width,height): 
    v = length * width * height
    return v
25.

小陈编写了一段计算超市打折活动的Python程序,运行时报错,原因可能是下面哪项?( )

def discount(price,rate):
    final_price = price * rate
old_price = float ( input ('请输入原价:'))
rate = float (input ('请输入折扣率:'))
discount ( old_price , rate )
print ('打折后价格是:',final_price )
判断题 共 10 题
1.

对数组进行快速排序是利用分治的思想,整个排序过程可以递归进行,算法效率高效,是一种稳定的排序算法,时间复杂度为O(nlogn)。( )

2.

把实现相同功能的代码作为一个代码块封装在一起,形成函数。( )

3.

调用函数时如果位置实参和关键字实参两种方式混用,位置实参必须要放在关键字实参之前。( )

4.

有如下Python程序段,运行该程序段后,将提示错误。( )

 def js(x=3,y):
      print(x,y)
js(10)
5.

我们可以通过import模块的方法安装Python第三方库。 ( )

6.

如果执行算法所需的临时空间不会随变量的变化而变化,那么该算法的空间复杂度为一个常量。( )

7.

递归函数中,一定要包含对自身的调用,而且一定要有终止条件。( )

8.

递推算法设计时,首要任务是寻找规律,确定递推表达式,从而求解问题。( )

9.

在Python语法中,全局变量只能在主程序中使用,局部变量只能在局部函数中可用。( )

10.

Python自定义函数时,传递参数的数量必须是明确的。( )

问答题 共 3 题
1.

日期问题:

 小明同学学习Python的函数后,想动手利用函数来解决生活中的问题。于是他突发奇想,输入日期,统计这一天是这一年的第几天。其中,闰年指年份能被4整除但不能被100整除,或者仅能够被400整除。编写的代码如下,请完善划线处的Python代码。

def isRn(year):           #判断year是否闰年
    if         ①        or year % 400 == 0:
        return 1
    return 0
def jsDays(data):         #计算日期data在这一年是第几天
    s = 0  
    year = int(data[:4])
    month = int(data[4:6])
    day = int(data[6:])
    for i in range(        ②        ):
        s += days[i]
    s += day
    if month > 2 and        ③        :
        s += 1
    return s
def checkRq(data):      #判断输入的日期是否正确
    month = int(data[4:6])
    day = int(data[6:])
    if month <1 or month >12:
        return 0
    if days[month-1]<day or day <1:
        return 0
    return 1
days = [31,28,31,30,31,30,31,31,30,31,30,31]    #定义每个月的天数   
rq = input('输入年月日,格式如:20240102\n')
if checkRq(rq):
    d =         ④        
    print(rq,'是这一年的第',d,'天')
else:
    print(rq,'输入的日期有错误')
2.

数学游戏:

 校园里流行一种新的数学游戏:每次邀请两个同学参加,第一个同学先从12中挑一个数字,第二个同学可以在对方的基础上选择加1或者加2,然后又轮到第一个同学,他也可以选择加1或者加2,之后再把选择权交给对方,就这样交替地选择加1或者加2,谁先加到20,谁就赢了。小智编写了以下程序,分析总共存在多少种可能出现的情形。请补充完成该Python程序。

def act(n):
 
    if n == 1 or        ①        :
 
        return 1
 
    sn =         ②        
 
    return         ③        
 
tn = act(        ④        )
 
print("总共存在%d种可能出现的情形。"%tn)
3.

乘客问题:

某路公共汽车,总共有八站,从一号站发车时车上已有n位乘客,到了第二站先下一半乘客,再上来了六位乘客,到了第三站也先下一半乘客,再上来了五位乘客,以后每到一站都先下车上已有的一半乘客,再上来了乘客比前一站少一个......,到了终点站车上还有乘客6人,问发车时车上的乘客有多少?根据递归思想,编写自定义函数完成该程序功能,完善空白处Python代码。

 def num(i):
        if i == 8:
                return        ①        
        else:
                return        ②        
print(        ③        )
C++ 编辑器
输入
输出