选择题 共25道

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25


判断题 共10道

26 27 28 29 30 31 32 33 34 35


编程题 共3道

36 37 38

E850 CIE-202512-Python四级真题-练习

选择题 共25道
01

下列问题体现分治算法思想的是?

2分
登录后查看选项
02

编写如下Python代码求两个数的最大公约数,划线处选择合适的代码?

def gcd(m, n):
    if m % n == 0:
        return n
    else:
        return _________
print(gcd(49, 28))
2分
登录后查看选项
03

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

def fib(n):
  a = b = 1
  for i in range(3,n+1):
    c = a + b
    a = b
    b = c
  return c
print(fib(5))
2分
登录后查看选项
04

小明每天存钱,第一天存1元,之后每天存前一天的2倍。他想用递归算法求出第几天可以存到32元。请问以下Python程序的递归调用次数是?

def save_days(amount, target=32):
  if amount >= target:
    return 0
  return 1 + save_days(amount * 3)
print(save_days(1))
2分
登录后查看选项
05

小明每天存钱,第一天存1元,之后每天存前一天的2倍。 小明编写的Python程序,若递归函数缺少终止条件,会导致什么问题?

2分
登录后查看选项
06

老师用递归函数计算连续自然数1到5的和,调用sum_r(5) 时实际递归调用了几次函数?

def sum_r(n):
  if n == 1:
    return 1
  return n + sum_r(n-1)
2分
登录后查看选项
07

递归算法的Python程序实现问题,下列说法正确的选项是?

2分
登录后查看选项
08

小美想用递归算法实现字符串反转,以下代码能正确反转字符串,划线处应该填写哪个选项?

def r(s):
  if len(s) <= 1:
    return s
  return r(   ) + s[0]
s='abcde'
print(r(s))
2分
登录后查看选项
09

家里有16平方米的房间要打扫,小明和小红两兄妹分别想解决打扫的问题。 小明想用递归的方法解决“打扫房间”的问题:每次打扫一半区域,直到剩余区域小于1平方米。 以下哪项是递归解决此问题的核心思想?

2分
登录后查看选项
10

小明写了一个关于计算梯形面积的函数,运行如下Python代码的结果是什么?

def s(a, b, h):
  area = (a + b) * h / 2
print(s(1, 2, 2))
2分
登录后查看选项
11

下列有关Python自定义函数的描述,正确的是?

2分
登录后查看选项
12

在Python语言中,运行如下代码,执行结果正确的是?

x = 10
def fun(x):
	print(x)
	x = 5
fun(x)
print(x)
2分
登录后查看选项
13

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

a = 5
def fun():
  global a
  a = a *2
  print(a)
fun()
print(a)
2分
登录后查看选项
14

小明正在用Python编写一个“魔法数字盒”程序。这个数字盒有一个特殊功能:每次按下按钮时,数字会根据内部规则变化。以下是程序的一部分代码,如果小明连续按下按钮两次,屏幕上会显示什么数字?

def magic_box():
  num = 0 # 初始数字是0
  def press_button():
    nonlocal num
    num += 1 # 每次按下按钮,数字加1
    return num
  return press_button
button = magic_box()
print(button()) # 第一次按下按钮
print(button()) # 第二次按下按钮
2分
登录后查看选项
15

Python3.5之后的版本新增了对函数参数和返回值的类型指定和检查,运行如下代码块,结果正确的是?

def fun(a:int, b:int)->int:
  if(a > b):
    return a + b
  else:
    return b
print(fun("3", "2"))
2分
登录后查看选项
16

在Python语言中,导入第三方库的语法正确的是哪一项?

2分
登录后查看选项
17

在Python语言中,可以使用pip命令安装第三方库,以下哪个命令是安装命令?

2分
登录后查看选项
18

在Python语言编程中,创建一个自定义函数,用于统计图书借阅次数,以下正确的无参函数定义是?

2分
登录后查看选项
19

小张想用lambda函数计算两个数的和,正确的写法是?

2分
登录后查看选项
20

有如下Python自定义函数,能正确调用该函数的选项是?

def f(a,b,c)
  return a-b/c
2分
登录后查看选项
21

下面Python代码的输出结果是?

def add(x=2, y=3):
  return x + y
print(add(y=5))
2分
登录后查看选项
22

在下列Python代码中,将data变为全局变量,横线处应该填入的是?

data = 0
def add_data():
  ______ 
  data+= 2 # 修改全局变量
2分
登录后查看选项
23

有以下食堂点餐Python函数,现需要点"牛肉面"、不点甜品(dessert),下列四个点餐选项中最合适的是?

def order_meal(food, dessert=None):
  ...
2分
登录后查看选项
24

在Python语言编程中,以下哪个函数调用后,可以打印输出欢迎语“Welcome!”?

2分
登录后查看选项
25

下列哪种情况的程序,时间复杂度最低?

2分
登录后查看选项
判断题 共10道
26

分治思想是将一个大问题分解成若干个小问题,分别解决这些小问题,然后再将小问题的解合并起来以解决原始的大问题。程序实现时必须使用递归程序。

2分
登录后查看选项
27

Python语言编程中,递归函数可以没有终止条件,只要问题规模能自动缩小到最小值。

2分
登录后查看选项
28

对于斐波那契数列,递推算法的时间复杂度远低于递归算法。

2分
登录后查看选项
29

Python语言中,全局变量的作用域是整个程序,局部变量的作用域是函数内部。所以执行以下代码块打印输出是"wang"。

name = "zhang"
def fun(name):   
  print(name)
  name = "wang"
fun(name)
2分
登录后查看选项
30

在Pyhon语言中,nonlocal关键字用来在定义局部变量的同时,修改全局变量的值;global关键字用来在函数或局部作用域使用外层(非全局)变量。

2分
登录后查看选项
31

小明想用Python画一幅彩色的图画,他听说可以使用一个叫turtle的库来完成。因此,必须打开命令窗口输入"pip install turtle"来安装这个第三方库。

2分
登录后查看选项
32

Python语言编程中,函数convert = lambda x: str(x)可以把数字转为字符串。

2分
登录后查看选项
33

在Python中,自定义函数的函数体内必须有return语句。

2分
登录后查看选项
34

函数参数**kwargs可以接收学号-姓名键值对。

2分
登录后查看选项
35

时间复杂度为O(n)的程序,比时间复杂度为O(n2)的程序执行效率要高。

2分
登录后查看选项
编程题 共3道
36

回文单词

某同学收集了很多单词,不同的单词之间用'-'拼接在一起,如'refer-level-face-',他发现有些单词如level,从左往右读和从右往左读该单词是一样的,称之为回文单词。他想统计他收集的单词中有多少个回文单词。步骤如下:(1)首先将单词按'-'分割出所有单词,(2)统计这些单词中回文单词的数量。编写的Python代码如下,完善划线处的代码。

def revstr(str):
  if len(str) == 1:
    return     ①     
  else:
    return     ②     
word = 'refer-level-face-'
wordlst = []
s = ''
for t in word:
  if t !='-':
        ③     
  else:
    wordlst.append(s)
    s = ''
c = 0
for w in wordlst:
  rev = revstr(w)
  if    ④    :
    c += 1
print('对称的字符串个数有',c)
10分
登录后作答
37

孪生素数

素数是指大于1的自然数,且只能被1和它本身整除的数。孪生素数是指差值为2的两个素数,例如 (3, 5)、(11, 13) 等。问题:给定一个整数 n,请编写程序输出所有小于等于 n 的孪生素数对,按升序排列。 补全下列程序代码。

def is_prime(num):
  if     ①    :
    return False
  for i in range(2, num):
    if     ②    :
      return False
  return     ③     
def find(n):
  for i in range(2,n-1):
    if is_prime(i) and     ④    :
      print(i, i + 2)
n = int(input())
find(n)
10分
登录后作答
38

细胞分裂

在生物课实验中,有一个细胞,每分钟会分裂一次。前 2 分钟,它每次分裂会变成 2 个新细胞;从第 3 分钟开始,每次分裂会变成 3 个新细胞。下面的递归函数用于计算12分钟后细胞的总数,请完善划线处的代码。 

def cell_division(n):
  if n == 0:
    return     ①     
  elif n <= 2:
    return    ②     
  else:
    return     ③     
print(    ④    )
10分
登录后作答