2023年9月电子学会Python四级考试真题(含答案和解析)
分数:100  题数:38  测试时长:90min
一、单选题(共25题,共50分)
1、用枚举算法求解“100以内既能被3整除又能被4整除的元素”时,在下列数值范围内,算法执行效率最高的是?(D)
A.1~101
B.4~100
C.12~100
D.12~96
答案解析:在选取循环控制变量时,枚举范围应尽可能小,但又不能遗漏。
2、下列有关函数的描述中,正确的是?(C)
A.函数中必须有return语句
B.在函数内部不能使用全局变量
C.函数能提高应用的模块化程度和代码的重复利用率
D.函数内容以大括号起始,并且缩进
答案解析:函数能提高应用的模块化程度和代码的重复利用率
3、下列哪个语句能够定义参数个数不确定的函数?(D)
A.hs(parameters)
B.hs(parameters[])
C.hs(parameters{})
D.hs(*parameters)
答案解析:当不确定需要传入的值是多少个时,在定义形参时,可以使用*parameters来表示。
4、执行如下Python代码的结果是?(A)
def area(r,pi=3.14):
    return r*r*pi
print(area(2,10))
A.40
B.200
C.400
D.20
答案解析:函数运行结果,2*2*10,结果是40。
5、执行如下Python代码,输出结果是?(A)
def hs(num):
    num += 1
    return num
n=10
s=hs(n)
print(s)
A.11
B.10
C.1
D.运行错误
答案解析:函数的返回值,赋值给变量s,输出11。
6、有如下Python程序,输出的结果是?(B)
def whao(year = '2023'):
print('你好' + year)
whao()
A.你好
B.你好2023
C.你好year
D.没有输出
答案解析:定义了一个名为 whao 的函数,它有一个默认参数 year,其默认值为 '2023'。在函数内部,使用 print 函数输出了 '你好' + year,即 '你好 2023'。最后调用了 whao 函数,由
于没有传入参数,所以使用默认的 year 值 '2023'。
7、编写计算正方体体积的匿名函数,下列哪一个语句是正确的?(C)
A.rst = lambda a : a * 3
B.lambda a : a * 3
C.rst = lambda a : a ** 3
D.lambda a : a ** 3
答案解析:关键字lambda表示匿名函数,冒号之前表示的是这个函数的参数,冒号之后表示的是返回值,在定义匿名函数时,需要将它赋值给一个变量。
8、执行如下Python程序,运行的结果是?(A)
def zfzh(s):
    c = ''
    for ch in s:
        if "9">=ch>= "0":
            c+=str(int(ch)+1)
        elif "z">=ch>= "a":
            c+= chr(ord(ch)- ord("a")+ord("A"))
    return c
s = 'hzag-21-8'
print(zfzh(s))
A.HZAG329
B.923HZAG
C.GAZH329
D.923GAZH
答案解析:这段 Python 程序的作用是对输入字符串中的数字和小写字母进行转换。对于数字,将其加 1 后转换为字符串添加到结果字符串 c 中;对于小写字母,将其转换为对应的大写字母添加到结果字符串 c 中。在给定的字符串 s = 'hzag-21-8' 中,经过函数 zfzh 的处理,得到的结果应该是 HZAG329。
9、在Python中,以下哪个代码是安装numpy模块的方法?(A)
A.pip install numpy
B.pip uninstall numpy
C.install numpy
D.setup numpy
答案解析:在 Python 中,安装 numpy 模块的方法是使用 pip 工具,执行 pip install numpy 命令。选项 B pip uninstall numpy 是用于卸载 numpy 模块的命令。选项 C 和 D 中的 install
numpy 和 setup numpy 都不是正确的安装命令。
10、在Python中导入第三方库的主要关键字是?(B)
A.from
B.import
C.pip
D.install
答案解析:在 Python 中,导入第三方库的主要关键字是 import。 from 关键字可用于从一个模块中导入特定的属性或函数。pip 是用于安装第三方库的工具。install 不是导入第三方库的关键字。
11、《阅微草堂笔记》里描述了槐树果实“响豆”,在夜里爆响,这种豆一棵树只有一粒,难以辨认出。所以古人就等槐树开花结果后,用许多布囊分别贮存豆荚,用来当枕头。夜里如果没有听到声音,便扔掉。如果有爆响声。然后把这一囊的豆荚又分成几个小囊装好,夜里
再枕着听……如此这么分下去直到到响豆。以上故事体现的算法是?(D)
A.顺序查
B.枚举算法
C.解析算法字符串函数是什么函数
D.分治算法
答案解析:分治算法的基本思想是将一个大问题分解成若干个相互独立的子问题,通过分别解决这些子问题,最终得到原问题的解。
选项 A 的顺序查是按照一定的顺序逐个检查元素。
选项 B 的枚举算法则是通过列举所有可能的情况来到答案。
选项 C 的解析算法是通过数学解析的方法来求解问题。
12、下列哪项不是分治算法所具有的特征?(B)
A.求解问题的规模缩小到一定的程度就能够容易地解决
B.求解题可以分解为若干个规模较小的不同问题
C.利用求解问题分解出的子问题的解可以合并为该问题的解
D.求解问题所分解出的各个子问题是相互独立的
答案解析:求解问题可以分解为若干个规模较小的相同问题。
13、两位同学玩猜数字游戏,规则如下:一方在心里默想一个范围在1-100之间的数,如果另一方猜的数字比对方想的要大,就说大了;如果猜的数字比想的要小,就说小了,直到猜中数字。那么使用二分查法最多需要猜测的次数是?(C)
A.10
B.8
C.7
D.6
答案解析:二分查法是一种在有序数组中高效查特定元素的算法。它的基本思想是将数组分成两部分,通过比较中间元素与目标值的大小,确定目标值在左半部分还是右半部分,然后继续在相应的部分进行查,直到到目标值或确定目标值不存在。
第一次猜测可以将范围缩小到 50,第二次猜测可以将范围缩小到 25,第三次猜测可以将范围缩小到 12 或 13,第四次猜测就可以确定数字。
所以最多需要猜测 7 次。
14、用递推算法求解n个自然数的乘积,请问代码中横线上需要填入的正确代码是?(A)
def fact(n):
    s=1
    for i in range(1,n+1):
        s=s*i
return ________
a=fact(5)
print(a)
A.s
B.i
C.fact(n-1)
D.fact(n)
答案解析:递推算法是通过已知的条件,利用特定的关系逐步推出所需结果的一种算法。在这个例子中,fact 函数使用循环从 1 到 n 依次乘以当前的累积结果 s,最终得到 n 个自然数的乘积。返回的结果就是最终计算得到的乘积 s。
15、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
可以用下列代码解决这个问题,请问这段代码是基于(C )算法编写的?
high=100
s=0
sum=0
for i in range(10):
    s,high=high+high/2,high/2
    sum=sum+s
sum=sum-high
print(sum)
print(high)
A.递归
B.枚举
C.递推
D.二分
答案解析:递推按照一定的规律来计算序列中的第一项,而问题显然是一个等比数列,可以用递推来解决。代码中没有调用自身的情况,所以不是递归。
16、用递归算法求1~n个连续自然数的乘积的代码如下,请选择合适的代码补全程序?(B)
def Chengji(n):
    if n <=1:
        return 1
    else:
        return _____?______
print(Chengji(3))
A.n*Chengji(n)
B.n*Chengji(n-1)
C.n*Chengji(n+1)
D.n×Chengji(n-1)
答案解析:在这个函数中,如果 n 小于或等于 1,直接返回 1。否则,通过递归调用自身,将 n 乘以 Chengji(n-1) 的结果,从而实现计算 1 到 n 个连续自然数的乘积的功能。
17、有一根绳子,第一次剪去一半多2米,第二次剪去剩下的一半多2米,第三次剪去剩下的一半多2米,第四次剪去剩下的一半多2米,第五次剪去剩下的一半多2米,此时绳子还剩2米。这根绳子长几米?想解决这个问题的话,可以采用以下哪种算法?(B)
A.排序
B.递推
C.解析
D.枚举
答案解析:题目中的绳子长度是按相同的规律剪掉的,所以从后向前,可以按照这个规律来递推计算绳子的长度。
18、小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个。第二天早上又将剩下的桃子吃一半,又多吃一个。以后每天早上吃前一天剩下的一半另加一个。到第5天早上猴子想再吃时,发现只剩下一个桃子了。问第一天猴子共摘多少个桃子?
这个问题可以用递归来解决,代码如下:
def peach(day):
    if day==1:
        return 1
    return (peach(day-1) + 1)*2
s=peach(5)
print('一共有%d只桃子'%(s))
请问第2行的“if day == 1”代码起到的作用是?(A)
A.结束递归的边界条件
B.开始递归的边界条件
C.调用自身
D.递归过程中的变化
答案解析:递归算法有明确的结束递归的边界条件(又称终止条件)以及结束时的边界值,可以通过条件语句(if语句)实现。
19、下列代码可以求两个数的最小公倍数。请认真阅读下列代码运用了什么算法?(C)
def lcm(s,m,n):
    if s%n==0:
        return s
    else:
        return lcm(s+m,m,n)
a=int(input('请输入第1个数:'))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。