试卷总分:100分


选择题 25题 50分

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题 20分

26 27 28 29 30 31 32 33 34 35


编程题 3题 30分

36 37 38

E1077 电子学会青少年软件编程等级考试-Python -CIE-202609-Python四级-真题-考试

选择题 共25道

01

小明用Python语言设计如下函数,调用该函数执行的结果是?

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

老师写了一个上课点名的Python函数call(),函数接收一个列表参数存放同学的学号,代码如下:

def call(lst):
  for i in lst:
    print(f"第{i}号同学。")

下面哪个选项调用函数会程序报错?

2分
登录后查看选项
03

运行以下Python代码,输出的结果是什么?

def fun(name):
  return "你好," + name
print(fun("小明"))
2分
登录后查看选项
04

小明在写Python代码统计自己每天吃的浆果数量,他写了一段嵌套函数的代码想让内层函数修改外层的计数变量,请问在横线处添加哪个关键字,才能实现正确修改外层函数的局部变量b_count的浆果数量?

def count():
  b_count = 0
  def i_count():
    _______ b_count
    b_count += 1
    print("当前浆果数:", b_count)
  i_count()
  print("最终浆果数:", b_count)
count()
2分
登录后查看选项
05

老师用Python语言设计了“班级集合通知”的程序,运行如下代码结果正确的是?

classroom = "四年级2班"
def notice():
  classroom = "音乐教室"
  print("请到" + classroom + "集合!")
notice()
print("当前教室是" + classroom + "。")
2分
登录后查看选项
06

小明用Python语言写了一个乘法函数,为了让代码更加严谨,特别给参数和返回值指定了类型,运行如下代码结果正确的是?

def mul(a: int, b: int) -> int:
  return a * b
a = '5'
b = 2
print(mul(a, b))
2分
登录后查看选项
07

小兔子要在一排胡萝卜里最快找出藏着“星星贴纸”的那根,胡萝卜按编号从小到大排好,每次根据提示判断目标在左半段还是右半段。这个找贴纸的做法用到的算法是?

2分
登录后查看选项
08

果园里分苹果,一共有 8 个苹果,按分治思路平分:每次把一堆苹果平均分成左右两小堆,直到每堆只剩 1 个苹果就不再分。下面这段Python代码用来统计一共需要对半分多少轮,请问划线处应填写哪一项最合适?

def split(n):
  if n == 1:
    return 0
  return ____________
print(split(8))
2分
登录后查看选项
09

老师分糖果,不把糖果平均分两半,而是按男生、女生分成两组,分别计算糖果数量,再相加得到全部糖果总数。以下说法正确的是?

2分
登录后查看选项
10

在Python语言中,导入第三方库用到下列哪个语句?

2分
登录后查看选项
11

小明想在自己的Python程序里画出漂亮的词云图,他准备用Python自带的包管理工具安装词云第三方库,以下哪个命令能正确完成这个安装操作?

2分
登录后查看选项
12

下列关于编程中使用函数意义的描述中,不正确的是?

2分
登录后查看选项
13

Python中定义函数的代码如下所示,下列关于该函数的描述错误的是?

def hi():
  print('hello,python')
2分
登录后查看选项
14

关于Python编程中的匿名函数,下列说法错误的是?

2分
登录后查看选项
15

某同学使用Python编写匿名函数计算长方形的面积,下列哪一个语句是正确的?

2分
登录后查看选项
16

关于Python函数中的return语句,下列说法错误的是?

2分
登录后查看选项
17

小明编写了一个程序,用来找出1到100之间所有“既是3的倍数,又是4的倍数”的数字。

方法A:让计算机从1到100逐个检查每个数字,看它是否同时满足这两个条件。

方法B:小明发现满足条件的数字其实就是12的倍数,于是直接让计算机从12开始,每次增加12(即12, 24, 36...)来寻找,直到超过100为止。

关于这两种方法,下列说法正确的是?

2分
登录后查看选项
18

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

c = 1
def fun(n):
  global c
  c = c + n
  print(c)
fun(4)
print(c)
2分
登录后查看选项
19

下列有关递归的描述中,正确的是?

2分
登录后查看选项
20

老师分玩具方法如下,第1次分掉其中一半加一个玩具,第2次分掉剩下的一半加一个玩具,之后每次都分掉剩下的一半加一个玩具。到第5次的时候老师发现只剩一个玩具了。请问老师一开始有多少个玩具? 这个问题最适合用以下什么算法解决?

2分
登录后查看选项
21

定义一个函数,最多包含多少个参数?

2分
登录后查看选项
22

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

def su(a):
  if a == 1:
    return 1
  return a % 10 + su(a // 10)
print(su(12345))
2分
登录后查看选项
23

用火柴棒搭一排连着的正三角形。搭 1 个三角形要 3 根,搭 2 个要 5 根,搭 3 个要 7 根……搭50个三角形要多少根火柴棒?

2分
登录后查看选项
24

小明同学编写如下Python程序求整数a,b的最大公约数,选择划线处的正确代码?

def gcd(a, b):
  if a % b == 0:
    return b
  ____________
2分
登录后查看选项
25

阅读如下Python代码,该代码的算法思想是?

text = ''
n = 5
for day in range(1, n + 1):
  letter = chr(64 + day)
  text = text + letter * day
print(text)
2分
登录后查看选项

判断题 共10道

26

在Python语言中,匿名函数有返回值时,不需要加上“return”关键字。

2分
登录后查看选项
27

在 Python 函数调用时,使用关键字参数必须严格按照函数定义时的参数顺序进行传递。

2分
登录后查看选项
28

Python 语言中,函数带有默认值的参数必须写在没有默认值的参数前面。

2分
登录后查看选项
29

分治算法可以把大问题分解成相互独立且完全不相同的子问题,然后求解子问题,最后把所有子问题的解合并起来就是原问题的解。

2分
登录后查看选项
30

小明想写一个随机分配水果的Python小游戏,他说random是Python的标准库,不用额外安装,直接写import random就能导入使用。小明的这个说法是正确的。

2分
登录后查看选项
31

在编写程序解决复杂问题时,只要程序能够顺利运行并且最终得出的结果是正确的,就说明这个算法已经是最优的,不需要再去考虑代码的运行速度和内存占用问题了。

2分
登录后查看选项
32

Python自定义函数时可以没有参数。

2分
登录后查看选项
33

使用Python编写程序时,把完成特定功能的独立代码块,设计成函数。

2分
登录后查看选项
34

递归的核心思想是需要解决的问题可以转化为一个或多个子问题来求解,而这些子问题的求解方法与原问题相同,只是在数量和规模上不同。

2分
登录后查看选项
35

递推算法设计时,先寻找规律,确定递推表达式,从而求解问题。

2分
登录后查看选项

编程题 共3道

36

月壤检测

我国“嫦娥六号”月球探测器成功从月球背面带回珍贵土壤样本。科学家需要将采集到的样本分成若干批进行分析。假设一共有 n 个样本,每次只能将当前样本平均分成2份进行递归检测,如果样本数为奇数则先减去1再平分,多出的 1 份单独归档,不再参与后续检测。当只剩1个样本时,检测完成。

请补全下面的程序代码,计算共需要多少轮“平分操作”。

def check(n):
  if n == ①:
    return 0
  else:
    if ② == 1:
      n = n - 1
    return 1 + check(③)
# 计算20个样本需要多少轮平分操作
result = check(20)
print(f"20个样本共需要平分{④}轮")
10分
登录后作答
37

投球测试

篮球课上进行了5分钟投球测试,老师想统计投中次数最多的3位同学。小明同学利用Python编写程序帮老师解决这个问题。首先将学生姓名和投中数存储在列表xm和a中,调用函数求投中次数最多的3位同学,最后输出3位同学的姓名。Python代码如下,完善划线处的代码。

a = [98, 89, 68, 80, 98, 97, 89, 89] # 篮球投中样例数据
xm = ['学生1', '学生2', '学生3', '学生4',
   '学生5', '学生6', '学生7', '学生8'] # 以8位学生为例
f = [False] * len(a)
rst = []
def getmax():
  maxz = 0
  maxp = 0
  for i in range(len(a)):
    if ① and a[i] > maxz:
      maxz = a[i]
      ② # 实时记录maxz的索引号
  return maxp
for i in range(3):
  pos = ③
  f[pos] = ④
  rst.append(xm[pos])
print(rst) # 输出结果
10分
登录后作答
38

创客比赛

在某创客作品比赛中,有8个作品进入了决赛,他们的评分分别是:[98, 95, 88, 89, 94, 93, 95, 91]。

为了找出评分最高的作品,评委会决定采用“分治思想”实现:

分:把8个作品分成两组(每组4个作品)。

治:两组作品继续用同样的方法,直到每组只剩下 1 个作品。

合:相邻的两个小组的“最高”进行一场PK,评分数值大的那个获胜,成为新小组的“最高者”。继续这个步骤,直到选出最高分。

def find_max(plist):
  if ①:
    return plist[0]
  ②
  left = plist[:mid]
  right = plist[mid:]
  left = find_max(left)
  right = find_max(right)
  if ③:
    return left
  else:
    return right
 
cj = [98, 95, 88, 89, 94, 93, 95, 91]
maxs = ④
print(f"最高分是: {maxs}")
10分
登录后作答