Python3级试卷
约 20938 字大约 70 分钟
电子协会考级Python三级算法
2025-03-17
试卷-2209
2209单选题
单选题1
十六进制数100,对应的十进制数为?( )(2分)
- A. 128
- B. 256
- C. 28
- D. 56
单选题2
下代码中,问号处应该填写的答案是哪个?( )
>>> hex( ? )
'0xa'
>>>
(2分)
- A. "9"
- B. 9
- C. "10"
- D. 10
单选题3
下列4个表达式中, 答案不是整数6的是? ( ) (2分)
- A. abs(-6)
- B. int(6.88)
- C. round(5.55)
- D. min(float(6) ,9,8,7)
单选题4
min()函数用于获取参数中的最小值, 如果 a = min('654')
, 请问下面表达式中, 正确的是哪一个? ( ) (2分)
- A.
print(max(chr(a),3,2))
- B.
print(max(bin(a),3,2))
- C.
print(max(float(a),3,2))
- D.
print(max(hex(a),3,2))
单选题5
对于CSV格式数据文件, 下列描述错误的是? ( ) (2分)
- A. CSV文件使用逗号分隔值。
- B. CSV文件的扩展名为.CS。
- C. CSV格式是一种通用的, 相对简单的文件格式。
- D. “记事本”和“Excel”可直接读入和保存CSV格式文件。
单选题6
下列程序将建立一个CSV格式文件, 划线处正确的代码选项应该为? ( )(2分)
1 a=['老虎','狗','大象','牛']
2 f=open('动物.CSV',______)
3 f.write(','.join(a)+'\n')
4 f.close()
- A. 'W'
- B. 'R'
- C. 'w'
- D. 'r'
单选题7
动物.CSV的文件内容如下: '老虎','狗','大象','牛'
, 下列程序从该CSV文件读出数据, 并输出列表格式, 划线处正确的代码选项应该为? ( )
1 f=open('动物.CSV','r')
2 a=f.read().strip().split(______)
3 f.close()
4 print(a)
(2分)
- A.
', '
- B.
','
- C.
'\n'
- D.
'\t'
单选题8
下面程序生成CSV格式文件:
王鑫,86,90,92,99,94,95
杨小虹,93,97,95,90,86,85
李静,89,98,99,94,90,85
程序如下:
1 a=[['王鑫','86','90','92','99','94','95'],['杨小虹','93','97','95','90','86','85'],['李静','89','98','99','94','90','85']]
2 f=open('成绩.CSV','w')
3 for i in a:
4 f.write(','.join(i)+______)
5 f.close()
划线处的代码应该为? ( ) (2分)
- A.
'r'
- B.
'w'
- C.
'\t'
- D.
'\n'
单选题9
一个“成绩.CSV”文件(用“记事本”打开)如下:
王鑫,86,90,92,99,94,95
杨小虹,93,97,95,90,86,85
李静,89,98,99,94,90,85
下面程序执行结果是? ( )
1 f=open('成绩.CSV','r')
2 a=[]
3 for i in f:
4 a.append(i.strip().split(','))
5 f.close()
6 print(a)
(2分)
- A.
[['王鑫', '86', '90', '92', '99', '94', '95'], ['杨小虹', '93', '97', '95', '90', '86', '85'], ['李静', '89', '98', '99', '94', '90', '85']]
- B.
[['王鑫', '86', '90', '92', '99', '94', '95\n'], ['杨小虹', '93', '97', '95', '90', '86', '85\n'], ['李静', '89', '98', '99', '94', '90', '85\n']]
- C.
[['王鑫,86,90,92,99,94,95'], ['杨小虹,93,97,95,90,86,85'], ['李静,89,98,99,94,90,85']]
- D.
['王鑫,86,90,92,99,94,95\n', '杨小虹,93,97,95,90,86,85\n', '李静,89,98,99,94,90,85\n']
单选题10
猜一个2022以内的随机数, 用计算机解决该问题, 比较合适的算法? ( ) (2分)
- A. 二分查找算法
- B. 解析算法
- C. 枚举算法
- D. 冒泡排序算法
单选题11
现在一组初始记录无序的数据[8,9,5,2,1]
, 使用冒泡算法, 按从小到大的顺序排列, 则第三轮排序的结果为? ( ) (2分)
- A.
[8,5,2,1,9]
- B.
[2,1,5,8,9]
- C.
[5,2,1,8,9]
- D.
[1,2,8,9,5]
单选题12
有如下列表a=[3,5,35,74,1,28,7]
, 采用选择排序算法进行升序排序, 请问第三轮排序之后的结果是? ( ) (2分)
- A.
[1,3,5,35,74,28,7]
- B.
[1,3,5,7,28,35,74]
- C.
[1,3,5,74,35,28,7]
- D.
[1,3,5,7,35,74,28]
单选题13
程序运行过程中出现的错误或意外, 不包括以下选项? ( ) (2分)
- A. 语法错误
- B. 电脑不好
- C. 运行错误
- D. 逻辑错误
单选题14
关于Python在处理程序异常时, 下列说法不正确的是? ( ) (2分)
- A. 每一个try模块只能设定一个except模块
- B. 执行except模块部分, 可以让程序继续运行
- C. 程序有错误时执行except中的代码, 没有错误时执行try中的代码
- D. 异常处理可以弥补程序漏洞, 使得程序在一些情况下不会终止运行。
单选题15
divmod()
函数的功能是用来求商和计算余数。对应变量x和y, divmod(x,y)
返回的结果是以下哪一项? ( ) (2分)
- A.
(x//y, x%y)
- B.
(x/y, x%y)
- C.
(x%y, x//y)
- D.
(x%y, x/y)
单选题16
bool()
函数用于将给定参数或表达式转换为布尔类型, 以下使用了bool()
函数的实例中, 哪项返回True值? ( ) (2分)
- A.
bool(0)
- B.
bool( )
- C.
bool(15*15+14*14<420)
- D.
bool(-1)
单选题17
查看对象的属性和属性值等信息, 可以使用以下哪种函数? ( ) (2分)
- A.
vars()
- B.
dir()
- C.
help()
- D.
map()
单选题18
round(20/3)
的返回值是以下哪一项? ( ) (2分)
- A. 6
- B. 2
- C. 7
- D. 1
单选题19
语句sorted([9,6,8,2,5], reverse = True)
的返回结果是以下哪一项? ( ) (2分)
- A.
[2,5,6,8,9]
- B.
[9,6,8,2,5]
- C.
[9,8,6,5,2]
[+语句sorted的返回结果是以下哪一项?,代码正确的是C] - D.
[0]
单选题20
执行语句"{1}{0}".format("中国", "加油", "!")
, 输出结果是以下哪一项? ( ) (2分)
- A.
'中国加油!'
- B.
'加油中国!'
- C.
'中国加油'
- D.
'加油中国'
单选题21
关于语句float(2022)
与float('2022')
运行后的输出结果, 以下哪一项正确? ( ) (2分)
- A. 均为2022
- B. 均为2022.0
- C.
float(2022)
的输出为2022,float('2022')
运行后出错 - D.
float(2022)
的输出为2022.0,float('2022')
运行后出错
单选题22
语句max([(1,2),(2,3),(3,4),(2,5)])
运行后的输出结果是以下哪一项? ( ) (2分)
- A. 5
- B. (2,5)
- C. (4,5)
- D. (3, 4)
单选题23
enumerate()
函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列。下列程序
1 │ example = '7890'
2 │ for i,j in enumerate(example):
3 │ print(i,j)
运行后的输出打印结果为以下哪一项? ( ) (2分)
- A.
0,0 1,7 2,8 3,9
- B.
0,7 1,8 2,9 3,0
- C.
0 0 1 7 2 8 3 9
- D.
0 7 1 8 2 9 3 0
单选题24
关于all()
函数的用法, 以下语句中能够返回True值的是哪一项? ( ) (2分)
- A.
all(0)
- B.
all([0])
- C.
all([0, 1, 2])
- D.
all(['0', '1', '2'])
单选题25
如果要设计班级通讯录管理功能,需要往address.csv文件中追加新记录,则应该使用以下哪一种打开文件的方式? ( ) (2分)
- A.
open('address.csv', 'a+')
- B.
open('address.csv', 'w+')
- C.
open('address.csv', 'wb+')
- D.
open('address.csv', 'rb+')
2209判断题
判断题1
有这样一个表达式:
1 │ ord('a') - ord('A')
这个表达式运行的结果是整数 32。 ( ) (2分)
- 正确
- 错误
判断题2
二维数据的存储常常采用空格、逗号、退号、换行、分号等符号分隔元素。( )(2分)
- 正确
- 错误
判断题3
a=[
['王鑫','86','90','92','99','94','95'],
['杨小虹','93','97','95','90','86','85'],
['李静','89','98','99','94','90','85']
]
其中,杨小虹同学的第三门成绩95的数据类型是整数。( )(2分)
- 正确
- 错误
判断题4
二维数据的处理等同于二维列表的操作,借助循环遍历可实现对每个数据的处理。( )(2分)
- 正确
- 错误
判断题5
关于程序的异常处理,可以使用try...except...或try...except...except...语句进行捕获控制。( )(2分)
- 正确
- 错误
判断题6
使用input()函数可以一次从键盘输入一个字符串,按回车键结束输入。( )(2分)
- 正确
- 错误
判断题7
set是一个不允许元素重复的集合。由于set里的元素位置允许随意,所以不能用索引引访问。( )(2分)
- 正确
- 错误
判断题8
help()函数可用来查看函数或模块的帮助信息,但不能直接查看对象里所提供方法的帮助信息。( )(2分)
- 正确
- 错误
判断题9
sum()函数可以对列表进行求和,但不能对元组进行求和。( )(2分)
- 正确
- 错误
判断题10
在Python编程语言中,'0b10' 表示二进制数10,并且这个数换算为十进制,就是整数2。(2分)
- 正确
- 错误
2209编程题
1. 计算所有库存书籍的总价 (4分)
- 如下图有一个名为“book.csv”的文件,小明想计算所有库存书籍的总价,于是编写了下面代码。请将红色①②处的代码补充完整。
b = 0
s = 0
with open('/data/book.csv', 'r', encoding='utf-8') as f:
for line in f: # ① 逐行读取文件内容
a = line.strip("\n").split(",")
b = b+1
if b > 1: # 第一行是标题,所以从第二行开始计算
# ② 将每本书的价格与库存量相乘并累加到总价中
s = s + int(a[1]) * int(a[2])
print('总价:', s)
2. 二分法对关键字14查找 (10分)
- 小敏想用二分法对关键字14进行查找,请你帮她补全代码。
lst = [3,12,7,45,9,10,31,90,1,23,14,52] # 原始无序列表
a = sorted(lst) # ① 先排序,二分查找必须在有序序列上进行
key = 14
n = len(a)
i, j = 0, n-1
flag = -1
while i <= j: # ② 二分查找的循环条件,左右指针未交错时继续查找
mid = (i + j) // 2
if key == a[mid]:
flag = mid
break
elif key > a[mid]:
i = mid + 1 # ③ 关键字比中值大,查右半部分
else:
j = mid - 1 # ④ 关键字比中值小,查左半部分
if flag == -1:
print(str(key) + '没找到!')
else:
print(str(key) + '已找到!')
3. 判断考试答题卡的填涂 (16分)
- 标准考试答题卡一般采用2B铅笔填涂,填涂好的答题卡经过扫描后得到对应的数字化图像,再通过计算机识别。若分n个信息点输入RGB颜色值,判断其是否为黑色像素点(灰度值小于等于132为黑色,否则为白色),请补全下列程序。
n = int(input("请输入信息点个数: "))
count = 0
for i in range(1, n+1):
R = int(input("请输入红色分量: "))
G = int(input("请输入绿色分量: "))
B = int(input("请输入蓝色分量: "))
# ① 计算灰度值,按照题目给定的公式
Gray_scale = 0.299 * R + 0.587 * G + 0.114 * B # 必须用题目给定的加权公式
# ② 判断灰度值是否小于等于132,若是则为黑色,否则为白色
if Gray_scale <= 132: # 只有灰度值小于等于132才算黑色
print("黑色")
count = count + 1 # 统计黑色像素点数量
else:
print("白色")
print("黑色像素总共有:" + str(count) + "个")
试卷2212
2212单选题
单选题1
列表L1中全是整数,小明想将其中所有奇数都增加1,偶数不变,假设写了如下代码。请问,图中红线处,代码应该是?(2分)
L1 = [3,2,5,6,4,7,3,9,11,17,19,12]
L2 = [x+1 if (x % 2) != 0 else x for x in L1]
print(L2)
- A.
x//2
- B.
x^2
- C.
x&&2
- D.
x%2
单选题2
小明为了学习选择排序的算法,编写了下面的代码。针对代码中红色文字所示的一、二、三处,下面说法正确的是?(2分)
a = [8,4,11,3,9]
count = len(a)
for i in range(count-1):
mi = i
for j in range(i+1, count):
if a[mi] > a[j]: # 代码一
mi = j # 代码二
if i != mi:
a[mi], a[i] = a[i], a[mi] # 代码三
print(a)
- A. 如果找到更大的元素,则记录它的索引号。
- B. 如果找到更小的元素,则记录它的索引号。
- C. 在一趟选择排序后,不管是否找到更小的元素,mi所在元素都与i所在的元素发生交换。
- D. 代码三所在的行必然要运行。
单选题3
小明编写了一段演示插入排序的代码,代码如下。请问红色“缺失代码”处,应该填写哪段代码?(2分)
a = [8,4,11,3,9]
count = len(a)
for i in range(1, count):
j = i
b = a[i]
while j > 0 and b < a[j-1]:
a[j] = a[j-1]
# 缺失代码
a[j] = b
print(a)
- A.
j=j-1
- B.
j=j+1
- C.
j=i+1
- D.
j=i-1
单选题4
在计算机中,信息都是采用什么进行存储?( )(2分)
- A. 二进制数
- B. 八进制数
- C. 十进制数
- D. 十六进制数
单选题5
十进制数(100)₁₀,转化为二进制数为( )₂?(2分)
- A. 0010011
- B. 1010001
- C. 1100100
- D. 0101100
单选题6
十六进制数每一位至多可以表示几位二进制位?( )(2分)
- A. 2
- B. 3
- C. 4
- D. 16
单选题7
八进制数(35)₈,转化为十进制数为( )₁₀?(2分)
- A. 100011
- B. 110001
- C. 232
- D. 29
单选题8
执行代码 a = min(3, 2, 4.3)
,变量 a 的值是?( )(2分)
- A. 3
- B. 2
- C. 4.3
- D. 4
单选题9
print(max('python+'))
的运行结果是?( )(2分)
- A. 'p'
- B. p
- C. 'y'
- D. y
单选题10
a = 5.12596
print(round(a, 2))
运行结果是?( )(2分)
- A. 5
- B. 5.1
- C. 5.12
- D. 5.13
单选题11
type([2.6])
运行的结果是?( )(2分)
- A. float
- B. dict
- C. True
- D. list
单选题12
执行如下代码
a = [1, 2, 3, 4]
print(list(enumerate(a)))
运行结果是?( )(2分)
- A.
((0, 1), (1, 2), (2, 3), (3, 4))
- B.
[(0, 1), (1, 2), (2, 3), (3, 4)]
- C.
[1, 2, 3, 4]
- D.
(1, 2, 3, 4)
单选题13
set('hello') 运行结果是?( )(2分)
- A.
('h', 'e', 'l', 'l', 'o')
- B.
{'h', 'e', 'l', 'l', 'o'}
- C.
{'e', 'h', 'l', 'o'}
- D.
('e', 'h', 'l', 'o')
单选题14
print(sum([5, 10, min(7, 4, 6)]))
的运行结果是?( )(2分)
- A. 22
- B. 21
- C. 4
- D. 19
单选题15
divmod(100, 3)
的执行结果是?( )(2分)
- A.
(1, 33)
- B.
(33, 1)
- C.
[33, 1]
- D.
[1, 33]
单选题16
下列表达式结果是 False 的是?( )(2分)
- A.
all({})
- B.
all([10])
- C.
all(['1', '2', '3', ''])
- D.
all(['1', '2', '3'])
单选题17
将字符串或数字转换为浮点数的函数是?( )(2分)
- A. chr()
- B. float()
- C. int()
- D. str()
单选题18
将字符串或数字转换为浮点数的函数是?( )(2分)
- A. chr()
- B. float()
- C. int()
- D. str()
单选题19
以下表达式的值为 True 是?( )(2分)
- A. bool(2022)
- B. bool(0)
- C. bool()
- D. bool({})
单选题20
有这样一段程序:(2分)
a=["香蕉","苹果","草莓","哈密瓜"]
fs=open("fruits.csv","w")
fs.write(",".join(a)+"\n")
fs.close()
- A. 香蕉 苹果 草莓 哈密瓜
- B. 香蕉,苹果,草莓,哈密瓜
- C. 香蕉.苹果.草莓.哈密瓜
- D. ["香蕉","苹果","草莓","哈密瓜"]
单选题21
关于下列表表,说法正确的是?( )(2分)
s=[["佩奇", "100", "86", "85", "90"],
["苏西", "78", "88", "98", "89"],
["佩德罗", "80", "66", "80", "92"]]
- A. 这是一组二维数据
- B. 这样的数据不能存储到CSV文件中
- C. 必须手动写入到CSV文件中
单选题22
关于write()函数的说法正确的是?( )(2分)
- A. write()函数只能向文件中写入一行数据
- B. write()函数的参数不是字符串类型
- C. write()函数也可以向文件中写入多行数据
- D. write()函数和writelines()函数完全相同
单选题23
对于在csv文件中追加数据,下列说法正确的是?( )(2分)
- A. 只能以单行方式追加数据
- B. 只能以多行方式追加数据
- C. 多行数据追加的函数是writerow()
- D. 以单行方式或多行方式追加都可以
单选题24
Python的异常处理中try...except...else...finally机制中,以下哪部分语句一定能够得到执行?( )(2分)
- A. try子句
- B. except子句
- C. else子句
- D. finally子句
单选题25
Python的异常处理机制中,以下表述哪项是错误的?( )(2分)
- A. 如果当try中的语句执行时发生异常,Python就执行匹配该异常的except子句。
- B. 如果当try中的语句执行时发生异常,try代码块的剩余语句将不会被执行。
- C. 如果在try子句执行时没有发生异常,Python将执行else语句后的语句。
- D. 异常处理结构能够发现程序段中的语法错误。
2212判断题
判断题1
二进制数转化为十进制数的方法是:按权展开、逐项相加。如:(101)2 = (10)10。( )(2分)
- 正确
- 错误
判断题2
语句 print(round(2.785, 2))
运行后的结果是2.79。( )(2分)
- 正确
- 错误
判断题3
map() 不会根据提供的函数对指定序列做映射。( )(2分)
- 正确
- 错误
判断题4
语句 print(tuple(range(5)))的输出结果是(0, 1, 2, 3, 4)。( )(2分)
- 正确
- 错误
判断题5
运行语句 set('2022'),其输出结果是{'2','0','2','2'}。( )(2分)
- 正确
- 错误
判断题6
以下代码能正确读取CSV文件:
f=open('ss.csv','r')
n=f.read().strip("\n").split(",")
f.close()
( )(2分)
- 正确
- 错误
判断题7
一维数组可以用列表实现,二维数组则不能用列表实现。( )(2分)
- 错误
判断题8
用with open ('fruits.csv','r')as f语句,打开fruits.csv文件,在处理结束后不会自动关闭文件。( )(2分)
- 错误
判断题9
异常处理结构中,finally程序段中的语句不一定都会得到执行。( )(2分)
- 错误
判断题10
在计算机中,每一个二进制位可以表示0和1两种信息。( )(2分)
- 正确
2212编程题
编程题1. 补全代码(10分)
下面程序实现对二维数据的处理,请你补全代码。
score2.CSV 文件内容如下:
王鑫,86,90,92,99,94,95
杨小虹,93,97,95,90,86,85
李静,89,98,99,94,90,85
f=open('/data/score2.csv','r')
a=[]
for i in f:
a.append(i.strip().split(',')) # 读取每一行并按逗号分割,形成二维列表
f.close()
print(a) # ① 输出二维列表,便于检查数据结构
for i in a:
s=""
for j in i:
s += j + "\t" # ② 将每个元素用制表符拼接,便于格式化输出
print(s)
- 解析
编程题2. 统计整数的个数(10分)
在三位数的自然数中,找出至少有一位数字是5的,且至少能被3整除的所有整数,并统计个数,具体代码如下:
count=0
lst=[]
for i in range(100,1000): # ① 三位数范围是100~999
if i%3==0: # 能被3整除
a=i%10 # 个位
b=i//10%10 # 十位
c=i//100 # ② 百位
if a==5 or b==5 or c==5: # ③ 判断任意一位是否为5
count+=1
lst.append(i)
print("这样的三位数有:",lst)
print("总数量有:",count)
- 解析
3. 求平方根(10分)
输入一个正数,以下代码编程求出它的平方根。请你补全代码。
in_var = float(input("请输入一个需要开方的正数,可以使用2位小数!\nx = "))
if in_var < 0:
x = -in_var
else:
x = in_var
low = 0.0
high = x
s_root = (low + high) / 2 # ① 初始猜测值为区间中点
if x > 0 and x < 1:
high = 1.0
low = 0
s_root = (low + high) / 2 # ② 针对0~1区间重新赋初值
if x >= 0:
while abs(s_root ** 2 - x) > 0.0001: # ③ 判断平方与目标值的误差
if x > 1.0:
if s_root ** 2 < x:
low = s_root
else:
high = s_root
s_root = (low + high) / 2 # ④ 二分法更新猜测值
elif x == 1.0 and x == 0.0:
s_root = x
else:
if s_root ** 2 < x:
low = s_root
else:
high = s_root
s_root = (low + high) / 2 # ⑤ 二分法更新猜测值
if in_var >= 0:
print("所求数的平方根为:s_root = %.1f"%(s_root))
- 解析