2 023 年 5 月电子学会 Python 四级考试真题(含答案和解析)
分数:100 题数:38
一、单选题(共 25 题,共 50 分)
1. 下列程序段的运行结果是?( A )
def s(n):
if n==0:
return 1
else:
return n +s(n-1)
print(s(7))
A. 29
B. 27
C. 1
D. 0
答案解析: 递归公式。
2. 当 n 为 6 时,运行下列 Python 程序后的结果是?( B )
def f(n):
if n<=2:
return 1
else:
return f(n-1)+f(n-2)
n=int(input("请输入一个正整数:"))
print(f(n))
A. 5
B. 8
C. 11
D. 13
答案解析: 每一项为前两项之和。
3. 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每
年年初也生一头小母牛。问第 n 年的时候,共有多少头母牛?由递推法可推测,
当年数小于等于 4 的时候,第几年就是有几头牛,即 a[1]=1;a[2]=2;
a[3]=3;a[4]=4。当 n 大于 4 的时候,这时候第一年出生的那个小母牛就也可
以生出小母牛了,也就是该考虑小母牛是否可以生了,所以 n>4 的时候,
a[n]=?( A )
A. a[n-1]+a[n-3]
B. a[n-1]+a[n-4]
C. a[1]+a[3]
D. a[-1]+a[-3]
答案解析: 前四年共有四只,从第五年开始,第二年出生的小母牛也会生一只
母牛(而且以后每年初都会生一只母牛),加上第一年那只母牛生的小母牛,共有
六只母牛;第六年的时候得加上第三年那只母牛生的母牛,共九只母牛;依次
类推。
4. 二分查找又称折半查找,下列数列中适合二分查找算法的是?( D )
A. 11 99 4 25 3 39
B. 43 71 78 81 6 55
C. 67 62 68 4 1 17
D. 85 78 59 53 19 18
答案解析: 根据二分查找的实现原理,首先数列元素必须是有序的。
5. 在 32 枚崭新的金币中,有一枚外表与真金币完全相同的假币(质量小一
点),现在只有一台天平,则应用二分法的思想最多称几次就可以发现这枚假
币?( B )
A. 4
B. 5
C. 6
D. 7
答案解析: 二分查找法,每次都通过跟区间的中间元素对比,将待查找的区间
缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。
6. 已知在某程序中,有一个全局变量名为 a。在程序中的某个函数中,再次定
义了一个变量 a,且该变量非组合类型变量。
下面哪个说法是对的?( B )
A. 如果在该函数中将 a 声明为 global,则对 a 的操作与全局变量 a 无关。
B. 如果在该函数中未将 a 声明为 global,则对 a 的操作与全局变量 a 无关。
C. 如果在该函数中未将 a 声明为 global,则对 a 的操作即为对全局变量 a 的操
作。
D. 不管在该函数中是否将 a 声明为 global,对 a 的操作都是对全局变量 a 的操
作。
答案解析: 未声明为 global,就是局部变量,因此与全局变量 a 无关。
7. 对于程序中的列表来说,哪个选项中的 参 数 填写 在 range()中的 横线 上,
算法 执 行 效率 最 高 ?( C )
a=[1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1]
for i in range _____ :
if a[i]==1:
print(i)
A. (0,16,1)
B. (0,16,2)
C. (0,16,3)
D. (0,16,4)
答案解析: 数据变 化 的 步长 为 3。
8. 下列函数中,不可以直 接调 用的是?( B )
A. print( )
B. s q rt( )
C. str( )
D. di c t( )
答案解析: s q rt()函数是 m ath 模块里 的函数,不 能 直 接调 用,应该先 导 入 m ath
模块 。
9. 关于 return 语句 ,下列说法正 确 的是?( A )
A. return 语句 中 返回值 的数据类型可以是列表
B. return 语句 中不 能 有表 达 式
C. 一个函数 至 少有一个 return 语句
D. return 只 能返回 一个 值
答案解析: return 语句里 可以 包 含表 达 式,也可以 返回 多个 值 。一个函数可以
有 返回值 ,也可以 没 有 返回值 。
10. 关于函数的 描述 ,不正 确 的是?( C )
A. 函数中通过 return 语句返回 结果
B. 函数可以 提高代码 的 重复利 用 率
C. 在函数 内 部不 能使 用全局变量
D. 函数的定义必须在 主 程序函数 调 用 语句 之前
答案解析: 在函数 内 部可以 使 用全局变量。
11. 小 方编写计 算 长方形 面 积 的 匿 名函数,下列哪一个 语句 是正 确 的?( A )
A. rst = la m bda a,b : a * b
B. la m bda a,b:a * b
C. la m bda a,b,a * b
D. rst = la m bda a,b,a * b
答案解析: 关 键字 la m bda 表 示匿 名函数, 冒号 之前表 示 的是这个函数的 参 数,
冒号 之后表 示 的是 返回值 ,在定义 匿 名函数时, 需 要将它 赋值给 一个变量。
12. 运行下列程序,输出的结果是?( A )
s = 1
def su m s(n):
global s
s = 0
s = s + n
print(s)
su m s(5)
print(s)
A. 5 5
B. 5 1
C. 1 1
D. 1 5
答案解析: 若 想在函数 内 部对函数外的变量 进 行操作, 需 要在函数 内 部声明 其
为 global, 本 题中在函数 内 部声明 s 为 global,因此函数 内改 变后, 影响 函数
外,因此输出结果都是 5。
14. 下列有关递归的 描述 中,正 确 的是?( C )
A. 递归函数中 肯 定有 循环 结 构
B. 递归 没 有 体 现 “ 大 事化 小 ” 的思想
C. 递归有明 确 的结 束 递归的 边界条件
D. 递归 执 行 效率较高
答案解析: 递归有明 确 的结 束 递归的 边界条件 以 及 结 束 时的 边界值 ,递归 体 现
了 “ 大 事化 小 ” 的思想。
15. 小 方 的 妈妈 分 苹 果 方 法如下,第一天分 掉其 中一半加一个 苹 果,第二天分
掉剩 下的一半加一个 苹 果,以后每天都分 掉剩 下的一半加一个 苹 果。到第 8 天
的时候 妈妈 发现只 剩 一个 苹 果了。请问小 方妈妈 一开始有多少个 苹 果? 这个问
题 我们 可以用以下 什么 算法解 决 ?( B )
A. 查找
B. 递推
C. 枚 举
D. 排 序
答案解析: 从第 8 天 往 前 计 算第 7 天 剩余 的 苹 果数, 然 后再 计 算第 6 天的,依
次递推解 决 问题。这是递推问题