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

对自然数1至n求和,如果将递推式f(n)=f(n-1)+n(n>1)转化成递归函数,则递归出口是?( )

2.

下列哪个是正确的函数名?(

3.

下列哪个选项的返回值与其他三项不同?(

4.

Python中,调用下面函数的返回值为?( )

 def fun():

   x=101

5.

以下哪项不是使用分治法解决问题的步骤?(

6.

下列几个选项中,不是Python定义函数规则的是?( )

7.

下列程序段中自定义函数do(n)的作用是?( )

 def do(n):
   s=0
   f=1
   for i in range(1,n+1,2):
     s=s+1/i*f
     f=-f
   return s
 print(do(10))
8.

Python Shell提示符下输入以下哪个选项,回车后,再输入pi,回车,能得到数值3.141592653589793?( )

9.

 在解决问题过程中,常用的“二分法”是一种什么算法?( )

10.

运行下列程序,输出结果正确的是?(

def demo(lst, k):
   if k<len(lst):
     return lst[k:]+lst[:k]
 lst=[1,2,3,4,5,6]
 print(demo(lst,4))
11.

下列选项中,哪个选项调用如下函数会报错?(

 def show(numbers):

   for n in numbers:

     print(n)

12.

安装wheel,wheel用于离线安装已经下载到本地的whl文件,可以在命令窗口直接运行?( )

13.

运行下列这段程序,正确的输出结果是?(

 def f(a,b):
   c=a**2+b
   b=a
   return c
 a=5
 b=100
 c=f(a,b)+b
 print(c)
14.

以下程序是用什么算法思维来显示数列 1,4,7,10,13,16 ?( )  

a=1  
  for i in range(6):  
    print(a)  
    a+=3
15.

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

16.

下面关于递归算法的描述,错误的是?(

17.

以下能正确计算出“1!+3!+5!”值(n!=1x2x3…xn)的自定义函数是?( )

18.

下列哪项不是分治算法所具有的特征?(

19.

下面关于递归的描述不正确的是?(

20.

以下几项关于函数的说法,错误的是?(    

21.

下列程序使用了哪种算法?(

def fact(n):
   if n==0:
     return 1
   else:
     return n*fact(n-1)
22.

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。假如兔子都不死,要求输出一年内兔子的数量是多少。如果采用递归算法来编程,则核心的递归逻辑应该是?( )

23.

若以下程序段的运行结果为“*#*#*”,则空格 (1)  (2) 处填写结果不可能为?(

def f(n):
   s=""
   for i in range(   (1)   ,n):
     if i % 2==1:
       s=s+"*"
     else:
       s=s+"#"
   return s
 print(f(   (2)   ))
24.

对比两个求等差数列1+2+…+n的和的程序,其算法效率?( )

 程序1:

 n=int(input())
 s=(1+n)*n/2
 print(s)

 程序2:

n=int(input())
 s=0
 for i in range(n+1):
   s=s+i
 print(s)
25.

以下函数的返回值是?(

 def pic(a:int,b:str)->str:
   c=a*b
   print(c)
   return c
 pic(5,’*#*’)
判断题 共 10 题
1.

递归方法的运用不仅会简化主程序的设计,也会大大减少程序的代码量。

2.

可以统计字符串、列表、元组、字典等内某元素个数的Python内置函数是index()。

3.

下列程序段运行后,打印结果为9。

def f():
   s=0
   for i in range(3,1,-1):
     if i<=1:
       x=1
     if i<=2:
       x=2
     if i<=3:
       x=3
     s=s+x
   return s
 print(f())
4.

已知大写字母“A”对应的ASCII码值为65,变量ch保存输入的大写英文字母,则语句chr((ord(ch)+1-ord("A")) % 26+ord("A"))能实现大写英文字母后移一位,如A→B, B→C, ……Y→Z, Z→A。

5.

将一个复杂的问题分解成若干个规模较小的子问题后,能不能利用分解出的子问题的解合并得到原问题的解是最关键的特征,它决定了是否可以使用分治算法。

6.

将一个大问题分解为若干子问题,且子问题与大问题是相同的问题,就构成了递归。

7.

通常问题的规模越大算法执行的时间就越长,算法执行时间的增长率和问题规模的增长关系,称为空间复杂度。

8.

Python程序是模块化架构,以.py的文件可以作为一个模块被引用。一些Python爱好者和支持者开发和分享了大量扩展库(包),可以根据需要用包管理器来安装或自定义,体现了Python语言强大的扩展性。

9.

Python中定义函数时不需要声明函数的返回值类型。

10.

判断下列代码的正确与错误。  def f(a,b,c):

   print(a+b,b,c-a)

 f(8,b=2,6)

 运行上述程序段,结果为10 2 -2。

问答题 共 3 题
1.

质数是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。下面的程序设计中,先自定义一个函数,用来判断一个数是否为质数。然后,通过键盘输入一个数,调用所编写的函数,判断该输入的数是否为质数。请根据上述设计思想,完成程序段中划线处的填空。  

       def findprime(m):
   for i in range(2,m):
     if _______①:
       return False   
     else:
       return ________ ②
 n = int(input('请输入一个数:'))
 if _______③:
   print("该数是质数.")
 else:
   print("该数不是质数.")
2.

随机生成的10个在[1,100)范围内整数存入列表;输入一个待查找的整数k,运用二分法在列表中查找k,根据查找状态输出对应的结果,请将程序补充完整。

from random import randint
 def b(s,v):
   top=0
   last=len(s)
   while  ①_
     mid=(top+last)//2
     if v==s[mid]:
       return mid
     elif v&gt;s[mid]:
        ②_
     elif v&lt;s[mid]:
       last=mid-1
   return None
 
 s=[randint(1,100) for i in range(10)]
 s.sort() 
 print(s) 
 k=int(input())
 ans=b(s,k)
 if  ③_
   print('找到,下标是:',ans)
 else:
   print('没有找到这个数!')

运行结果1:

 [13, 25, 27, 41, 52, 66, 67, 69, 72, 75]

 72

 找到,下标是: 8

 

运行结果2:

 [9, 15, 16, 19, 27, 31, 43, 64, 84, 93]

 20

没有找到这个数!

3.

有一群兔子,4个4个地数余1个,5个5个地数余2个,9个9个地数余7个,试问兔子有多少只?(请将程序补充完整)

  def   ① 
   while  ② 
     if n%5==2:
       break
     n+=9
 
   while True:
     if  ③ 
       break
     n+=45
   print(n) 
      f(16)
C++ 编辑器
输入
输出