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

Python 中函数不包括?( )

2.

下面哪种算法使用了分治的方法?(

3.

对于数列1,2,8,11,15,17,19,25,30,45,采用“二分查找”法查找11,需要查找多少次?( )

4.

以下函数要实现3的阶乘,则应补充选项为?( )

def func(m):
    if(___):
        return func(m+1)*m
    else:
        return 1
print(func(1))
5.

下列程序段的运行结果为?(  

def f(n):
    if n<=0:
         return 1
    else:
        return f(n-1)*3
print(f(4))
6.

运行下列代码,正确的输出结果是?(

def yang(n):
    if n == 0:
        return [1]
    else:
        return[([0]+yang(n-1))[i]+(yang(n-1)+[0])[i]  for i in range(n+1) ]
print(yang(4))
7.

下列属于math库中的数学函数是?( )

8.

若要求出把a个元素分成b个子集,有多少种可能性,例:function(4,2)返回值为7,则返回值中函数的参数分别为?( )

def function(a,b):
    if (b == 1 or b == a):
        return 1
    else:
        return function(   )+b*function(a-1,b)
9.

运行以下程序,正确的打印结果是?(

def sum1( arg1, arg2 ):
    total = arg1 + arg2
    return total
t= sum1( 10, 20 )
print(t)
10.

设某算法的计算时间表示为递推关系式T(n)=T(n-1)+n(n为正整数)及T(0)=1,该算法的时间复杂度为以下哪一项?( )

11.

递归算法的执行过程,一般来说,可先后分成以下哪两个阶段?( )

12.

设有以下函数,运行程序输出的结果是? ( )

def demo(a,b): 
    a*=b 
    return a 
s=demo(5,2) 
print(s)
13.

调用函数时,使用位置参数接收实际参数,以下表述正确的是?(

14.

执行以下程序,以下表述中错误的一个是? ( )

def demo(a,b): 
    c=a**2+b 
    b=a 
    return c 
a=10 
b=100 
c=demo(a,b)+a
15.

关于Python的自定义函数的说法,下列哪个表述是错误的?( )

16.

Python中,以下关于函数的描述错误的一项是?( )

17.

关于函数,以下选项中描述错误的是?(

18.

函数调用可以分为将实际参数的值传递给形式参数,以及将实际参数引用传递给形式参数,如果实际参数是可变对象,以下关于函数形式参数和实际参数的表述正确的是?(

19.

匿名函数是指没有名字的函数,Python中需要使用哪一个表达式来创建匿名函数?( )

20.

有以下程序,运行程序输出的结果是? ( )

x=1
def demo(): 
    x=2 
    print(x) 
demo() 
print(x)
21.

变量的作用域是指程序代码所能够访问到该变量的区域,以下表述中哪一个是错误的?(

22.

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

23.

关于 import 引用,以下选项中描述错误的是?( )

24.

以下关于函数参数和返回值的描述,正确的是?(

25.

关于递归函数出口的说明,以下选项中错误的是?(

判断题 共 10 题
1.

运行如下图的代码,将不会报错而打印出数字7。请判断对错!

2.

假设一个一维列表中有200个元素,列表中的元素都已经按降序排列,若采用二分搜索策略查找某一个元素,则最多需要8次比较就能确定是否存在所查找的元素。

3.

执行以下代码:

def fun(m):
    if len(m)==1:
        return m[0]
    mid=len(m)//2
    l=fun(m[:mid])
    r=fun(m[mid:])
    return l+r
m=[5,23,41,3,11]
print(fun(m))

程序输出的结果为:42

4.

执行以下代码:

def add(sum,x):
    if sum<10:
        x +=2
        sum=sum+x
        add(sum,x)
    return sum
print (add(0,0))

程序输出的结果为:2

5.

执行以下代码:

Func(2,3)
def Func(a,b):
    z=a*b
    return z

程序返回结果为:6

6.

执行以下代码:

def funct():
    print("I love")
    def funct_1():
        print("Python")
funct()

程序输出的结果为:I lovePython

7.

执行以下代码:
def fun():
     x=15
print(x)
程序输出的结果为15。

8.

如果在printnum(number)函数内部想要使用全局变量value,那么就要在函数内部使用关键词global声明全局变量value。

 value = 10
   def printnum(number):
        global value
        num = number + value
        return num
9.

如下图代码,最后运行结果将会打印出数值6,请问对吗?

10.

当你安装的第三方库有一个或者多个依赖时,我们可以选择自动安装,直接运行 pip install xxx (xxx为你要安装库的名字)。

问答题 共 3 题
1.

要求:设计一个算法,求1n(n为大于2的正整数)中有哪些素数,总共是多少个素数? 根据上述计算规则,补全下列代码。

函数名:getPrime(n)
参数表:n -- n为大于2的正整数。
返回值:返回素数组成的数组。
示例:当n=9时,返回:您输入的区间1-n中素数分别是:[2, 3, 5, 7],总共是4个素数!

primeList = []
import math
def getPrime(n):
    for x in range(2,n+1):
        x_sqrt =   ①    
        for prime in primeList:
            if   ②    
                primeList.append(x)
                break
            if   ③    
                break
        else:
            primeList.append(x)
    return primeList

m=int(input("请您输入一个整数n:"))
print('您输入的区间1-n中素数分别是:'+  ④    )+',总共是'+str(len(primeList))+'个素数!')
2.

编写上交作业的程序,老师要求把小组7位同学(编号为1,2,3,...,6,7)的作业收齐,小组编号1的同学跟编号2的同学说“收作业了”,之后每位同学依次向后面的一位同学说要“收作业了”,直到最后,编号7的同学将自己的作业,上交到编号6的同学手中,编号6的同学将编号7的作业及自己的作业一起上交到编号5的同学,按这样的流程;直到编号1将其他同学的作业及自己的作业上交到老师中。要求编号7同学的作业放在最前面,即老师看到的作业是编号7的作业,然后是编号6的作业,最后是编号1的作业。


根据上述算法思想,编写自定义函数完成程序功能,完善空白处代码。
"""
函数名def getHomeWork(hw,n)
参数表:hw存储每位同学的作业信息,n表示第n位同学的作业
返回值:每位同学的作业,要求最后1位同学的作业显示在最前面,第1位同学作业显示在最后面
"""

def getHomeWork(hw,n):
    if n ==  ①  :
        return   ②  
    return   ③  
homew=["作业1","作业2","作业3","作业4","作业5","作业6","作业7"]
zuoye = getHomeWork(homew,0)
print(zuoye)
3.

设计一个算法,枚举排列问题。输入1-n的第1个排列,如1 2 3,按照大小输出1~n的所有排列,并统计全部排列总数。
根据上述算法思想,补全下列代码。
描述:输入1-n的第1个排列,如1 2 3,按照大小输出1~n的所有排列。
函数名:perm(n,begin,end)参数表:n -- 整数n,begin -- 指向排列的第一个元素,end-- 指向排列的最后一个元素。

返回值:输出1-n的所有排列方式,每行一个排列,按从小到大。
示例:当输入1 2 3时,返回:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]

[2, 3, 1]

[3, 2, 1]

[3, 1, 2]

排列总数是:6个!

COUNT=0
def perm(n,begin,end):
    global COUNT
    if   ①    
        print (n)
        COUNT +=1
    else:
        i=begin
        for num in   ②    :
            n[num],n[i]=n[i],n[num]
              ③    
            n[num],n[i]=n[i],n[num]
 
arr = input("1-n的第1个排列:")    
n = [int(n) for n in arr.split()]
  ④    
print ("排列总数是:%d个!"% COUNT)
C++ 编辑器
输入
输出