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

执行以下python程序后所输出的结果是?( 

def f(n):
    s=0
    for i in range(2, n+1):
        p = True
        for j in range(2, int(i**0.5)+1):
            if i % j == 0:
                p = False
                break     
        if p==True and i%3==1:
            s=s+i
    return s
print(f(13))
2.

以下说法错误的是?( )

3.

当Python程序运行时,如果自定义函数内某个变量与程序的全局变量使用相同的变量名,程序会如何处理?( )

4.

如下代码,运行之后,最终打印结果是?( )

def f(x):         
    color=["红","橙","黄","绿","青","蓝","紫"] 
    def lucky(x,y):     
        n=x+y
        return n
    m=x*int(lucky(5,6))%7
    print("幸运颜色是:",color[m])
f(5)
5.

以下有关return 语句的表述中错误的是?( )

6.

以下关于关键字nonlocal 和 global表述中错误的是?( )

7.

用枚举算法求解“各位数之和等于8的所有三位数”时,下列枚举范围中效率最高的是?( )

8.

下列关于分治算法的描述中,错误的是?( )

9.

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

10.

有6位学生的身高分别为“166、168、169、171、172、175”,其中小王的身高为172,若采用二分查找,则需要找多少次才能够找到小王?( )

11.

阶乘是一个数与所有小于它的正整数的乘积。例如,5的阶乘(写作5!)是5 * 4 * 3 * 2 * 1 = 120。以下是用递归方法编写求阶乘的代码,横线处填写的Python代码是?( )

def fun(n):
    if n == 1:
        return 1
    else:
        return ________
print(fun(5))
12.

运行如下Python代码,请输出运算结果?( )

def fun(lst):
    if len(lst) == 0:
        return 0
    return lst[0] + fun(lst[1:])
x = [1,2,3,4,5]
print(fun(x))
13.

以下是编写一个Python函数,使用递归方法实现字符串的反转,请在横线处填写正确的代码?( )

def fun(s):
    if len(s) <= 1:
        return s
    else:
        return _____________
x = "abcde"
print(fun(x))
14.

运行以下Python代码,请输出运算结果?( )

def fun(s, n):
    if n == 0:
        return ""
    else:
        return s + fun(s, n-1)
s = "abc"
n = 3
print(fun(s, n))
15.

运行以下python代码,请输出运算结果?( )

x = 1
while x < 100:
    if  x % 3 != 0:
        print(x, end=',')
    elif x // 10:
        break
    x += 2
print(x)
16.

下面图形每一行从字母A开始,以ABC方式重复。行数为输入的整数。请在python代码段横线处填入合适的代码?( )

AB 

ABC 

ABCA 

ABCAB 

ABCABC  

ABCABCA 

n = int(input())
for i in range(1, n+1):
    for j in range(0, i):
        print("%s" % _____________, end='')
    print()
17.

以下哪种情况下适合使用自定义函数?( )

18.

调用自定义函数时,以下哪种情况下python程序运行时一定会出错?( )

19.

以下python程序语句中,存在语法错误的是?( )

20.

对于如下自定义的函数:

def myfunc(a,b,c)

    return a+b+c

以下调用该函数的python语句中,能正确执行的是?( )

21.

对于以下自定义函数及Python程序,运行后的结果是?( 

def prts( str ):
   print (str)
   return str
s="Py"
prts(prts(s))
22.

使用*args和**kwargs形参来定义函数时,正确的说法是?( )

23.

下列关于函数return语句的说法,正确的是?( )

24.

用Python绘制y=x**2+6*x+2的函数图像,需要用到的模块是?( )

25.

陈明同学利用Python语言编写了一段“根据出生年月判断生肖属相”的程序,调试运行时,程序没有报错且顺利运行,但未能正确输出对应属相,造成这个结果的原因可能是?( )

判断题 共 10 题
1.

如果在函数内访问其作用域内不存在的Python变量,程序一定会报错。( )

2.

时间复杂度最小的是常数阶O(1)。( )

3.

某同学参加猜幸运数(幸运数范围是1-100之间)游戏:先猜50,主持人说偏大;然后猜25,主持人说偏小;然后又猜37……通过这种策略,该同学很快猜出幸运数,这体现了分治思想。( )

4.

某个问题既能用递归算法求解,又能用递推算法求解,则使用递归算法求解更容易,效率也高得多。( )

5.

执行如下Python代码,输出结果是95。( )

n = 100
while n > 0:
    if n % 2:
        break
    elif n % 3 == 0:
        n -= 5
    else:
        n -= 20
print(n)
6.

Python编程时,必须把实现复杂功能的代码封装起来,设计成函数。( )

7.

Python自定义函数中可以不使用return语句,但匿名函数中要通过return语句返回运算结果。( )

8.

如果Python允许形参设置默认值,则函数定义时要先列出没有默认值的形参,再列出有默认值的形参。( )

9.

Numpy是Python的一个第三方库,是一个科学计算库,提供各种数学运算和科学计算的方法。( )

10.

变量作用域的使用可提高程序逻辑的局部性,增强程序的可靠性,减少名字冲突,有效提高Python程序运行效率。( )

问答题 共 3 题
1.

计算问题:

1n的数字(包含n),分别计算出能被k整除的数字之和与不能被k整除的数字之和,并输出它们差的绝对值,完成下列Python程序。  

n=int(input("n="))
k=int(input("k="))
s1,s2=0,0
for i in range(1,        ①        ):
    if(        ②        ==0):
        s1=        ③        
    else:
        s2=        ④        
print(        ⑤        )
2.

劳动实践基地:

育才学校的劳动实践基地是一个巨大的矩形,参与劳动实践的同学们每次只能种一个正方形地块,每种一个正方形时所花的体力值是正方形的周长,本学期种过的地不可以再种,同学们想使用最少的体力值去种完这块田地,请帮助计算花费最小的体力值。

 输入格式

两个正整数 x,y,表示田地的长和宽。


输出格式

输出最小体力值。

 

输入样例1 

1 10

 

输出样例1

40

 

输入样例2

2 2

 

输出样例2

8

def solve(x, y):
 
    if x == y:
 
        return        ①        
 
    if x > y:
 
        a, b = x, y
 
    else:
 
        a, b =        ②        
 
    if         ③        :
 
        return 4 * a
 
    else:
 
        return 4 * a + solve(        ④        , b)
 
n, m = map(int, input().split())
 
print(solve(n, m))

3.

约瑟夫环:

 2024年春节联欢晚会上,刘谦表演了一个纸牌魔术,深受观众欢迎。这个魔术的内容其实是一个经典的约瑟夫环问题,相当于n张牌形成一个环,依次循环报数,每次报到m的那一张牌扔掉,直到剩下最后一张牌。小智编写了以下Python程序来模拟8张牌的淘汰过程,请补充完成该程序。 

def Josephus(num,gap):
 
     location_list = [a for a in range(1,num+1)]
 
     if num ==   1 :
 
                ①        
 
     else:
 
         index = 0
 
         for i in        ②        :
 
            index = (index + gap - 1 )%        ③        
 
            print("本次淘汰的牌为:",location_list[index])
 
            del location_list[index]
 
         print( "最后剩下的牌为:",location_list[        ④        ]) 
Josephus(8,2)
C++ 编辑器
输入
输出