admin 管理员组文章数量: 1086019
2024年12月23日发(作者:零基础如何敲代码)
2023年9月电子学会Python三级考试真题(含答案和解析)
分数:100 题数:38 测试时长:90min
一、单选题(共25题,共50分)
1.有一组数据存在列表中,things=["桌子","椅子","茶几","沙发","西瓜","苹
果","草莓","香蕉"],若想要输出其中的水果数据,则下列处理恰当的是?(C)
(things)
(things[:4])
(things[4:])
(things[5:8])
答案解析:本题考查一维数组中取出部分数据。things为列表实现的一维数组,
水果部分数据在列表中位于索引位4号至7号(末位),故可用列表切片取出数
组的水果部分数据。
2.学期末学校进行了体育测试,其中跳绳项目每人有三次机会,取最好的成绩为
最后得分。小贝、小李和小司三人的成绩数据如下:tscores=[["小贝
",132,126,130],["小李",117,120,123],["小司",129,140,137]],那么要得到
小贝的第二次成绩,下列操作正确的是?(A)
s[0][2]
s[1][1]
s[0[2]]
s[1[1]]
答案解析:本题考查二维数组中数据获取。二维数组中行和列的数据索引都是从
0开始,该二维数组中小贝的第二次成绩,位于第一行第三列,故行索引为0,
列索引为2,tscores[0],取出第一行,tscores[0][2]可取出第一行第三列数据。
3.小贝、小李和小司三人三次跳绳的成绩数据如下:tscores=[["小贝
",132,126,130],["小李",117,120,123],["小司",129,140,137]],若要输出小
李同学的最好成绩,则正确的处理方式是?(B)
(tscores[1])
(tscores[1][1:])
s[1].max()
s[1][1: ].max()
答案解析:小李同学的成绩位于数组中第二行,行索引为1,由于每一行数据有
字符串也有数据,故不能直接求最大值,观察选项,可通过对成绩部分选项先切
片取出,再求最大值,结合列表的函数用法可得B为正确选项。
4.有如下代码:
gs=['众鸟高飞尽','孤云独去闲','相看两不厌','只有敬亭山']
f=open('','w')
(','.join(gs)+'n')
()
有关于上述代码,正确的说法是?(D)
A.在执行代码前,必须要先新建一个""的文件
B.在文件""中,所有相邻诗句之间将发生换行
(','.join(gs)+'n')也可以用('n'.join(gs)+',')替换,
显示结果是相同的
D.该段代码的主要功能是将列表gs中的四句古诗写入到""文件中,诗句
之间以逗号连成一行
答案解析:本题考查一维数据存储。若“”不存在,则将自动产生一个;
否则操作结果将覆盖原文件。A错。由第三行代码知道,gs列表中元素以','
相连接,最后才换行,故B错;(‘,’.join(gs)+’n’)的功能是诗句
相连后换行,(‘n’.join(gs)+’,’)的功能是每输出一句诗进行换行,
最后一句以','结尾。结果并不相同。C错。
5.有关于简单文件的读写,下列说法正确的是?(A)
A.可以用Python内置的open()函数打开文件
B.对文件进行读取操作,我们可以用write()函数
C.对文件进行写入操作,我们可以用close()函数
D.关闭文件可以用read()函数
答案解析:文件打开用open()函数,文件内容读取用read()函数,文件写入
用write()函数,文件关闭用close()函数实现。
6.运行函数 hex(?) 之后,得到结果是'0xa',请问括号中?号处应填?(D)
A."9"
B.9
C."10"
D.10
答案解析:hex() 函数用于将10进制整数转换成16进制。本题中答案为十进制
数10,不能加引号。
7.十六进制数100,对应的十进制数是?(B)
A.128
B.256
C.28
D.56
答案解析:考查学生将十六进制数转为十进制数。本质上就是int('100',16),
答案为256。
()函数可以将非十进制数或数字字符串转换为十进制数,以下关于int()
函数的使用,正确的是?(B)
("0b1010",10)
("1010",10)
("0o50",10)
("80",8)
答案解析:本题考查学生对其它进制数转十进制数的掌握。A、0b与10矛盾;C、
0o与10矛盾;D、八进制没有基数“8”。
9.下列4个表达式中,答案不是整数6的是?(D)
(-6)
(6.88)
(5.55)
(float(6),9,8,7)
答案解析:考查学生对内置数值处理函数的理解。abs()是取绝对值,int()默认
会取整,round()四舍五入,float()会把整数转为浮点数,min()获取列表中的
最小值,所以,上列4个表达式,只有选项D的答案是浮点数6.0,不是整数6
10.键盘输入“杭州亚运会即将于2023年9月23日至10月8日举办。”,以下
代码的输出结果是?(C)
try:
n=input("请输入文字:")
x=("2")
print(x)
except:
print("程序执行错误")
A.程序执行错误
B.2
C.3
D.15
答案解析:count() 方法用于统计字符串里某个字符或子字符串出现的次数程序
是统计输入一段文字中“2”出现的次数,所以执行结果为3。程序正常运行后,
不再执行except后的语句。
11.初学者常采用异常处理解决程序中出现的意外情况,下面语句的执行结果是?
(B)
try:
s1 = '我爱中国'
s2 = 2023
s = s1 + s2
print(s)
except:
print('错误')
finally:
print('程序结束')
A.我爱中国2023
程序结束
B.错误
程序结束
C.我爱中国2023
D.错误
答案解析:s1 = '我爱中国' 是字符串型;s2 = 2023 是整型;s = s1 + s2
不能直接相加,程序运行会报错。因此会执行except语句,错误;无论是否报
错,程序都会执行finally,所以最终运行结果为错误,程序结束。
12.列表中有6个数据,使用冒泡排序算法进行从小到大排序,最多需要处理几
遍?(C)
A.3
B.4
C.5
D.6
答案解析:n个数据的冒泡排序,需要进行n-1遍排序。
13.对一组数据[5, 2, 6, 4, 8, 1, 7, 3]进行排序,使用冒泡排序按从大到小
的顺序进行排列,则第2轮排序过后的结果是?(B)
A.2, 4, 5, 1, 6, 3, 7, 8
B.6, 5, 8, 4, 7, 3, 2, 1
C.5, 6, 4, 8, 2, 7, 3, 1
D.5, 6, 4, 8, 7, 3, 2, 1
答案解析:A选项最后一个元素是8,是最大的,排除。C选项是第1轮排序的
结果,排除。
14.想要找出小于100的所有质数,适用的算法是?(B)
A.解析算法
B.枚举算法
C.对分查找
D.选择排序
答案解析:小于100的质数有若干个,想要全部找出来,需要使用一一列举的方
法。
15.运行下面的程序,结果是?(C)
h=[-2,-1,0,1,2,3]
n=len(h)
s=0
for i in range(n):
s=s+bool(h[i])
print(s)
A.0
B.1
C.5
D.6
答案解析:考核列表、循环、累加器、bool()函数
16.关于Python中abs()函数,描述不正确的是?(A)
()函数的功能是取一个整数的绝对值
(0)的运行结果是0
(3.0)的运行结果是3.0
(-3)的运行结果是3
答案解析:abs()函数的功能是取一个数的绝对值,不一定是整数。
(divmod(29,7))的运行结果是?(B)
A.4, 1
B.(4, 1)
C.1, 4
D.(1, 4)
答案解析:divmod()函数的结果是由商与余数组成的元组。
18.下列程序运行结果是 False的是?(D)
(all(['1','2','3']))
(all(()))
(all(('1','2','3','4','5')))
(all(['1','2','3','']))
答案解析:在 Python 中,all() 函数用于检查列表中的所有元素是否都为真(非
空且不为 0)。 (['1','2','3','']) 列表中最后一个元素为空,返回
False。
19.下列程序运行的结果是?(A)
h=[2,-3,-5,-6,0,-1,4,9]
y=list(filter(None,h))
print(y)
A.[2, -3, -5, -6, -1, 4, 9]
B.(2, -3, -5, -6, -1, 4, 9)
C.[2, 4, 9]
D.(2, 4, 9)
答案解析:在这段代码中,filter(None,h) 会过滤掉列表 h 中的 None 值,然
后将剩余的元素转换为一个新的列表并赋值给变量 y。
20.关于open()函数的参数,下列描述不正确的是?(B)
A.'r'以只读方式打开文件,如果文件不存在,则会提示错误
B.'w'以写入的方式打开文件,如果文件不存在,则会提示错误
C.'a'打开文件,并将新内容写入到已有内容之后
D.'r+'以读、写方式打开文件
答案解析:open()函数中参数w以写入的方式打开文件,如果文件不存在,则会
创建一个新文件。
语句print(ascii('A')+ascii('Z')) 运行的结果是?(C)
A.'A'+'Z'
B.'AZ'
C.'A''Z'
D."AZ"
答案解析:ascii('A')的结果为字符串'A',即”'A'”;ascii('z')的结果为字
符串'z',即”'z'”;两个字符串相加的结果为'A''Z',即”'A''z'”,执行
print()得:'A''Z'。
22.执行 print('{:.1f}'.format(23.792)) 返回的结果是?(C)
A.23
B.23.0
C.23.8
D.23.792
答案解析:{:.1f}表示保留一位小数。
23.以下表达式的值为True的是?(B)
([])
("0")
(None)
(range(0))
答案解析:bool([]) :空列表的布尔值为 False。bool("0") :字符串 "0" 的
布尔值为 True。bool(None) :None 的布尔值为 False。bool(range(0)) :
range(0) 返回的是一个可迭代对象,其布尔值为 False。
24.下面程序运行的结果是?(B)
a='hello python'
print(a,end='_')
print(a,end="")
print(a)
python_
hello pythonhello python
python_hello pythonhello python
python_hello python hello python
python_hellopythonhellopython
答案解析:在这段代码中,首先定义了一个字符串变量 a,其值为 'hello
python'。第一次使用 print(a, end='_') 打印变量 a,并在末尾添加了下划线
_。第二次使用 print(a, end='') 打印变量 a,末尾不添加任何内容。
最后再次使用 print(a) 单独打印变量 a。综合起来,程序运行的结果是 hello
python_hello pythonhello python。
25.小明运行下面的程序,运行结果正确的是?(C)
h=[6,15,1,0,7,9,5]
p=sorted(h)
print(p)
A.(0, 1, 5, 6, 7, 9, 15)
B.(15, 9, 7, 6, 5, 1, 0)
C.[0, 1, 5, 6, 7, 9, 15]
D.[15, 9, 7, 6, 5, 1, 0]
答案解析:sorted()函数返回列表,赋值给p,是一个升序列表。
二、判断题(共10题,共20分)
26.在计算机中,每个二进制位都可以表示为 0 或 1 两个值。(对)
答案解析:在计算机中,采用二进制进行数据的存储和处理。二进制是一种基数
为 2 的数制,每个二进制位(也称为比特)只能表示 0 或 1 两个值。
27.有这样一个表达式: ord('a') - ord('A') ,这个表达式运行的结果是整数
32,请判断结果对吗?(对)
答案解析:ord()函数的返回值为整数,字符 'a' 与 'A' 之间的差,为整数32。
28.对文件操作需要先打开文件,打开文件的模式只有'r'和'w',即只读和只写。
(错)
答案解析:除了 'r' 和 'w' 模式,还有以下常见的模式:'a':追加模式,在
已有文件末尾添加内容。'r+':读写模式,既可以读取又可以写入。'w+':读写
模式,如果文件已存在,则清空内容再读写。此外,还有一些其他模式,如 'x'
(独占创建)等。
29.有如下函数:
with open("",'r')as f:
list1=nes()
print(list1)
这段函数的功能是自动将""文件中的内容获取成一个行的列表并输
出。(对)
答案解析:readlines()一次读取整个文件,并自动将文件内容获取成行的列表。
30.关于语句f=open('d:/', 'r'),如果文件不存在,不会报错。
(错)
答案解析:'r'为只读模式,如果要读取的文件不存在,会报错。
31.键盘输入整数8,以下代码的运行结果是4.0。(错)
try:
n = input('请输入一个整数:')
n = n / 2
print(n)
except:
print('程序执行错误')
答案解析:由于题目中缺少把字符串转换为整数的int(),所以执行except
语句,程序执行错误。
32.已知字符"0"的ASCII码为48,字符"A"的ASCII码为65,下面程序的运行结
果是:65 。(错)
c='A'
n=48
print(ord(c)+chr(n))
答案解析:考核ord()、chr()函数,本题整数与字符串无法相加,运行出错。
33. 命令any(('1','','2','3')) 返回的结果是 False。(错)
答案解析:在 Python 中,any() 函数用于判断可迭代对象中是否存在任何一个
元素为真,如果存在则返回 True,否则返回 False。
()函数用于查看函数或模块用途的详细说明,返回对象为帮助信息。(对)
答案解析:在 Python 中,help() 函数用于获取函数或模块的帮助信息。通过
调用 help() 并提供函数或模块的名称,可以获取有关其用途、参数、返回值等
详细说明。
35.下列程序的运行结果是11。(错)
a=max(2,4,1,8,9)
b=min("3","8","9","2","10")
print(a+int(b))
答案解析:min() 函数用于比较数值类型的元素并返回最小值,而不能比较字符
串类型。
三、编程题(共3题,共30分)
36.下面代码,在字典a中查找身高为137的人,请将代码中缺失部分补充完整。
a = {'小赵':136,'小钱':141,'小孙':146,'小李':138,'小周':142,'小吴
':134,'小郑':137,'小王':143}
keys = ()
b = 0 # 用于判断查找是否成功
for key in keys:
value = a[ ① ]
if ② == 137:
print('找到身高为137的人是: ', key)
b = b+1 # 有找到的人
③ # 退出循环
if b == 0 :
print('本次查找,未找到有身高为137的同学。 ')
参考程序:
a = {'小赵':136,'小钱':141,'小孙':146,'小李':138,'小周':142,'小吴
':134,'小郑':137,'小王':143}
keys = () # 取得键名做为列表
b = 0 # 用于判断查找是否成功
for key in keys: # 利用键名进行循环,为顺序查找作准备
value = a[key] # 利用键名获取键值,便于下面比较
if value == 137: # 进行值比较
print('找到身高为137的人是: ', key) # 找到身高为137的学
生,则打印出其键名
b = b+1 # 查找成功
break # 退出循环
if b == 0 :
print('本次查找,未找到有身高为137的同学。 ') # 没找到符合查
找条件的人,则也给出提示
评分标准:
(1)key;(3分)
(2)value或者int(value)或者a[key]或者int(a[key]);(4分)
(3)break。(3分)
37.张老师手上有一份学生成绩单(),成绩单上只有每位学生的各科成
绩,而张老师希望能看到各科成绩的所有学生的平均分,以下代码可以实现平均
分的计算,并按示例格式排版,请补充代码。
示例:
with open('/data/', ① ) as f:
string = ()
data = ('n')
(0)
lis = []
for i in data:
new = ('t')
(new)# 将分割得到的列表追加到空列表中,lis 为二维
lis1 = ['平均分']
for i in range(1,4):# 循环3次,因为需要计算3个科目的平均分
sum_ = ②
average = round(sum_ / 3)
(str(average))
s = "t".join(lis1)
res = string + s
with open('', 'w') as f:
(res)
参考程序:
with open('/data/', 'r') as f: # 以只读的方式打开文件
string = () # 读取整个文件内容,返回字符串
data = ('n') # 按换行符分割为
(0) # 去标题部分
lis = [] # 空列
for i in data: # 遍历被分割的列表
new = ('t') # 将列表的一个元素按制表符分割
(new) # 将分割得到的列表追加到空列表中,lis 变为二维
lis1 = ['平均分'] # 定义一个列表用于存储平均分
for i in range(1, 4): # 循环3次,因为需要计算3个科目的平均分
sum_ = int(lis[0][i]) + int(lis[1][i]) + int(lis[2][i])
average = round(sum_ / 3) # 平均分,结果保整数
(str(average)) # 转换为字符串并追加到lis1中
s = "t".join(lis1) # 将列表连接成字符串
res = string + s
with open('', 'w') as f: # 以写入的方式打开文件
(res)
评分标准:
(1)'r';(2分)
(2)int(lis[0][i]) + int(lis[1][i]) + int(lis[2][i])。(2分)(没有
int给1分)
38.工厂有一台检测设备用于检测器件,各个器件在不完全相同时刻送达,且检
测时长各有不同。现在要按器件的送达时间(若送达时间相同则按检测时长)进
行排序后再送检,送达时间和检测时间都是按升序排序。已知各个器件原始信息
存在列表qj中:qj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]],其中器
件信息[2,1]表示器件送达时间是2,检测时长是1,其他器件信息类推。现在编
写Python程序对各个器件进行排序,并重新输出。排序后的器件列表如下,请
你在划线处完善程序:
qj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]]
for i in range(len(qj)-1):
for j in range(0, ① ):
if ② or (qj[j][0]==qj[j+1][0]and
③ ):
qj[j],qj[j+1]=qj[j+1],qj[j]
print( ④ )
参考程序:
qj=[[2,1],[1,3],[0,2],[4,3],[12,4],[10,1],[4,1]]
for i in range(len(qj)-1):
for j in range(0,len(qj)-1-i):
if qj[j][0]>qj[j+1][0]or qj[j][0]==qj[j+1][0]and
qj[j][1]>qj[j+1][1]:
qj[j],qj[j+1]=qj[j+1],qj[j]
print(qj)
①本题考查的是对二维列表进行冒泡排序。外循环控制排序趟数,内循环控制排
序比较的次数以及比较的起止位。外循环变量i从0开始,内循环变量j从0
开始,显然终值是len(qj)-1-i,比较过程从前往后两两相比。因此①处填写的
步长应为len(qj)-1-i;
②根据题目意思,比较依据先是送达时间(从小到大),若相同则比较检测时长,
因此②处表达的应该是相邻两个器件的送达时间相比,从交换语句来看第j项被
交换至j+1项,从而判定②处答案为qj[j][0]>qj[j+1][0];
③qj[j][0]表示送达时间,qj[j][1]则表示的是检测时长,从
qj[j][0]==qj[j+1][0]可知此处表示送达时间相同的情况下满足何种条件第j
项会和第j-1项交换,显然要比的是检测时间,故而③处填写
qj[j][1]>qj[j+1][1]。
④根据题意,最后需要输出排序后的器件列表,因此④处填写的器件列表名称
qj。
评分标准:
(1)len(qj)-1-i;(4分)
(2)qj[j][0]>qj[j+1][0];(4分)
(3)qj[j][1]>qj[j+1][1];(4分)
(4)qj。(4分)
版权声明:本文标题:电子学会2023年09月份青少年软件编程Python等级考试三级真题(含答案和 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1735033082a1625133.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论