2023-05 Python三级真题
题数:38
分数:100
测试时长:60min
一、单选题(共25题,共50分)
1. 请选择,下面代码运行之后的结果是?( )(2分)
a = '2'
b = '4'
try:
c = a * b
print(c)
except:
print('程序出错!')
else:
print('程序正确!')
A. 24
B. 8
C. 程序出错!
D. 程序正确!
2. 下面程序执行结果是?( )(2分)
a=['春','夏','秋','冬']
c=list(enumerate(a))
print(c)
A. [(0, '春'), (1, '夏'), (2, '秋'), (3, '冬')]
B. [[0, '春'], [1, '夏'], [2, '秋'], [3, '冬']]
C. [(1, '春'), (2, '夏'), (3, '秋'), (4, '冬')]
D. [[1, '春'], [2, '夏'], [3, '秋'], [4, '冬']]
3. 下面程序执行结果是?( )(2分)
s='123456789'
print(min(s)+max(s))
A. 1
B. 9
C. 10
D. 19
4. 打开b.txt文件,将"Hello Tom!"写入文件,下列语句正确的是?( )(2分)
A. f.write(['Hello'],[Tom!])
B. f.read('Hello',' Tom!')
C. f.write('Hello Tom!')
D. f.read('Hello Tom!')
5. 下列数据中,最大的数值是?( )(2分)
A. int('16',10)
B. int('110',2)
C. int('11',16)
D. int('1111',2)
6. 十六进制数7E转换为二进制数是几位数?( )(2分)
A. 7
B. 6
C. 4
D. 2
7. 表达式int('13',8)的返回值是?( )(2分)
A. 12
B. 11
C. 10
D. 15
8. 有如下代码:
res = []
f = open('Python08.txt','r') #Python08.txt中共4行诗句
p = f.readlines()
for s in p:
res.append(s)
print(res)
f.close()
对于该段代码,说法不正确的是?( )(2分)
A. 程序的功能是按行读取文本文件中的内容,并将其逐一写入列表res
B. 此处readlines()用法错误,应改成readline()
C. 该文本文件和程序代码文件在同一文件夹下
D. 参数'r'不允许修改该文本文件
9. 有代码如下:
s=["白日依山尽","黄河入海流","欲穷千里目","更上一层楼"]
f=open('sj.txt','w')
f.write('\n'.join(s))
f.close()
关于上述代码,说法不正确的是?( )(2分)
A. 写入文本文件的步骤主要是打开——写入——关闭
B. f.write('\n'.join(s))与f.write(' '.join(s)+'\n')的功能是相同的
C. write()的参数是一个字符串,而writelines()的参数可以是字符串也可以是字符序列
D. 该代码的功能是将列表中的诗句按行写入文本文件
10. 编写程序代码时,我们经常会犯错,对于Python的异常处理,描述正确的是?( )(2分)
A. 可以用if…elif…else…进行异常处理
B. 异常处理可以弥补程序漏洞,让程序在任何情况下都不会终止运行
C. 通过异常处理语句,当程序输入错误时,仍可以让程序继续运行
D. 当遇到错误语句时,将执行try代码块语句
11. 若scores="9,7,8,9,6,5",则list(scores)的结果是?( )(2分)
A. [9,7,8,9,6,5]
B. ['9','7','8','9','6','5']
C. ['9', ',', '7', ',', '8', ',', '9', ',', '6', ',', '5']
D. 9,7,8,9,6,5
12. 下列表达式的结果为True的是?( )(2分)
A. len("13"+"4")>14
B. ord(min("banana"))<65
C. sum([13,14,16])==53
D. any(["a","b","","d"])
13. 下列有关于函数的说法,正确的是?( )(2分)
A. bool( )函数是一个类型转换函数,用于将给定参数转换为布尔类型,若没有参数,则出错
B. ascii()函数和ord()函数功能都是返回一个数值类型的数据
C. filter()函数用于过滤序列,过滤不符合条件的元素,一般由两个参数组成,即函数和序列
D. map()函数主要用于画地图
14. 下列表达中,和range(8)的结果相同的是?( )(2分)
A. range(0,8)
B. range(1,8)
C. range(0,8,2)
D. range(1,9)
15. 已知x,y,z=map(int,['20','2','3']),则表达式x+y+z的结果是?( )(2分)
A. 程序出错
B. 2023
C. 21
D. 25
16. 《孙子算经》是我国古代重要的数学著作,其中有一题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”小王同学用Python编写了如下程序:
x=1
while x>0:
if not ( ):
x+=1
else:
print(x)
x+=1
关于上述程序,下列说法不正确的是?( )(2分)
A. 把第一个x+=1改成break,则程序输出一个结果
B. 括号内应填入的代码是x%3==2 and x%5==3 and x%7==2
C. 该程序是个死循环
D. 该程序将有无穷多个输出
17. 下列关于二维数据的描述,正确的是?( )(2分)
A. 二维数据就是由两个一维数据组成
B. 二维数据由多个一维数据组成
C. 二维数据的每一个一维数据之间,只能采用逗号进行分隔
D. 二维数据不适合以表格的形式进行存储
18. 使用open函数打开某个CSV格式文件后,如果要将整个文件里的内容读取到一个列表中,需要使用以下文件对象的哪个函数?( )(2分)
A. read()
B. readline()
C. readlines()
D. flush()
19. abs()是Python的内置函数,执行abs(-1.00)语句返回的结果是?( )(2分)
A. -1.00
B. 1
C. 1.0
D. 1.00
20. divmod()是Python的内置函数。对应变量x和y,divmod(y,x)返回的结果是?( )(2分)
A. (x//y, x%y)
B. (x%y, x//y)
C. (y//x, y%x)
D. (y%x,y//x)
21. 在交互式编程环境下执行a = input("请输入考试成绩:")语句后,通过数字键盘输入数值89.5。输入完成后,查看变量a的数据类型,会是下列哪一种?( )(2分)
A. float
B. int
C. str
D. bool
22. 执行print(list(range(4)))语句后,显示的结果是?( )(2分)
A. [0,1,2,3]
B. [1,2,3,4]
C. [0,0,0,0]
D. ['' ,'' ,'' ,'' ]
23. 暴力破解是一种常见的网络攻击行为,它采用反复试错的方法去尝试破解用户的密码。这种黑客工具主要使用以下哪种算法进行设计?( )(2分)
A. 枚举算法
B. 解析算法
C. 排序算法
D. 对分查找算法
24. 对一组数据"6,1,3,2,8"进行排序,按从小到大的顺序进行排列,使用冒泡算法进行编程,则第一轮过后,排序的结果是?( )(2分)
A. 1,6,3,2,8
B. 1,3,6,2,8
C. 1,3,2,6,8
D. 1,2,3,6,8
25. 二进制数11110010转换为十六进制数是?( )(2分)
A. 1502
B. 152
C. F2
D. F02
二、判断题(共10题,共20分)
26. 下列这段代码能够正常运行。对吗?( )
while True :
a = input('请输入一个整数,若不是整数将会让你重新输入: ' )
try:
b = int(a)
except:
print('你输入的不是整数!将返回重输。')
else:
print('你输入的是整数,程序结束。')
break
27. 一组有n个元素的数列,如采用顺序查找法找到数列中的某一个元素,平均查找次数为 (n+1)/2 次。( )
28. 十进制数转十六进制数以后,位数一定变少了。( )
29. 二进制数1101011011转换成十六进制数是35B。( )
30. 使用open()方法一定要保证关闭文件对象,即调用close()方法。( )
31.
file=open('fruits.csv','r')
name=file.read().strip('\n').split(',')
file.close()
上述代码的功能是读取文件中的数据到列表。( )
32.
a=['shanghai','beijing','tianjin','chongqing','hangzhou']
with open ('city.csv','w')as f:
f.write(','.join(a)+'\n')
本段代码最后还缺少一条'f.close()'语句以关闭文件。( )
33. sort()与sorted()函数的区别在于前者默认是升序,后者默认是降序。( )
34. round()函数属于数学函数,可用于近似保留小数位数。( )
35. sum()函数不仅可以对列表数据进行求和,也可以对元组数据进行求和。( )
三、编程题(共3题,共30分)
36.
某班级期中考试成绩汇总(完成)
在文件“score.csv”中,包含了语文、数学、英语三科的分数,数据内容如下图显示:
小明编写了如下程序,读取成绩文件中的数据,并分别计算语文、数学、英语三科成绩的平均分,请你补全代码。
import csv
ChineseNum=0
MathNum=0
EnglishNum=0
num=0
with open('/data/score.csv',encoding='utf-8') as csv_file:
row = csv.reader(csv_file, delimiter=',')
next(row) # 读取首行
for r in row:
ChineseNum += float( ① )
MathNum += float( ② )
EnglishNum += float( ③ )
num += ④
print("语文平均成绩是:%.2f"%(ChineseNum/num))
print("数学平均成绩是:%.2f"%(MathNum/num))
print("英语平均成绩是:%.2f"%(EnglishNum/num))
参考程序:
import csv
ChineseNum=0 语文
MathNum=0 数学
EnglishNum=0 英语
num=0 总成绩
with open('/data/score.csv',encoding='utf-8') as csv_file:
row = csv.reader(csv_file, delimiter=',')
next(row) # 读取首行
for r in row:
ChineseNum += float(r[0])
MathNum += float(r[1])
EnglishNum += float(r[2])
num += 1
print("语文平均成绩是:%.2f"%(ChineseNum/num))
print("数学平均成绩是:%.2f"%(MathNum/num))
print("英语平均成绩是:%.2f"%(EnglishNum/num))
评分标准:
(1)r[0];(1分)
(2)r[1];(1分)
(3)r[2];(1分)
(4)1。(1分)
37.
新学期到了
,学校接收了一批捐赠的图书,小明编写了一个简单的程序用来管理图书,并支持借阅功能。为了提高查找图书的效率,小明使用了二分查找法来设计图书借阅功能。以下是小明编写的图书借阅管理程序,请你补全代码。
library=dict() #用字典生成一个图书管理数据结构(字典的键为编号,字典的值为['书名',本数])
#书籍入库
nums=len(library) #先计算图书编号总数
library[nums+1]=['红楼梦',5] #在编号总数的基础上继续添加新书:library[新编号]=['书名',本数]
library[nums+2]=['西游记',10]
library[nums+3]=['水浒传',5]
library[nums+4]=['三国演义',10]
print(library)
blist=list(library.keys())
#按书名借阅:
bookname=input('请输入借阅图书名称:')
min_v = blist[0]
max_v = blist[-1]
turns=0
while min_v <= ① :
turns += 1
cur = (min_v + max_v) ②
print(cur)
if library[cur][0] == ③ :
if library[cur][1] > 0:
library[cur][1] -= ④
print('《%s》借阅成功!'%bookname)
else:
print('抱歉,您选择的书籍已被借完!')
break
elif blist[cur-1] > cur:
min_v = ⑤
else:
max_v = ⑥
print("经过%d轮二分查找,完成图书的搜索。"%turns)
参考程序:
#学校图书管理系统
library=dict() #用字典生成一个图书管理数据结构(字典的键为编号,字典的值为['书名',本数])
#书籍入库
nums=len(library) #先计算图书编号总数
library[nums+1]=['红楼梦',5] #在编号总数的基础上继续添加新书:library[新编号]=['书名',本数]
library[nums+2]=['西游记',10]
library[nums+3]=['水浒传',5]
library[nums+4]=['三国演义',10]
print(library)
blist=list(library.keys()) #获取到字典里全部的键
bookname=input('请输入借阅图书名称:') #按书名借阅
min_v = blist[0] 第一本
max_v = blist[-1] 最后一本
turns=0 搜索几次
while min_v <= max_v: 第一本 <= 最后一本
turns += 1 搜索数 +1
cur = (min_v + max_v) // 2 中间那本
print(cur) 6
if library[cur][0]==bookname: 书名等于输入的书名
if library[cur][1] > 0: 本数大于0
library[cur][1] -= 1 那么数量-1
print('《%s》借阅成功!'%bookname)
else:
print('抱歉,您选择的书籍已被借完!')
break
elif blist[cur -1] > cur:
min_v = cur +1
else:
max_v = cur -1
print("经过%d轮二分查找,完成图书的搜索。"%turns)
评分标准:
(1)max_v;(2分)
(2)// 2;(2分)
(3)bookname;(3分)
(4)1;(3分)
(5)cur +1;(3分)
(6)cur -1。(3分)
38.
某班“天天向上”小组共有6个同学,
姓名和身高数据分别存放在列表a中,编写程序实现小组同学按身高从高到低输出名单,运行结果如图所示:
程序代码如下,请在划线处补充完整:
a=[["李洪全",135],["王倩倩",154],["吴乐天",148],["周立新",165],["鲁正",158],["杨颖颖",150]]
for i in range(1,len(a)):
for j in range(0, ① ):
if a[j][1] ② a[j+1][1]:
a[j],a[j+1]=a[j+1],a[j]
print("小组名单是:")
for i in range(len(a)):
print( ③ )
参考程序:
a=[["李洪全",135],["王倩倩",154],["吴乐天",148],["周立新",165],["鲁正",158],["杨颖颖",150]]
for i in range(1,len(a)): 1,6
for j in range(0, len(a)-i): 0,5
if a[j][1] < a[j+1][1]:
a[j],a[j+1]=a[j+1],a[j]
print("小组名单是:")
for i in range(len(a)):
print(a[i][0])
本题考查冒泡排序算法。从外循环看,6个元素排5趟,内循环每趟主要从第一个元素开始,相邻元素两两相比,i=1时,j最终取到4,i=2时,j最终取到3,i=3时,j最终取到2,i=2时,j最终取到1,i=1时,j最终取到0,由于range()的终值是取不到的,故第一空应填len(a)-i;根据题目从高到低的要求,若前一个数小于后一个数,则应将其往后移,故第二空应为”<”;由输出结果观察可知,只需要输出排序后列表中的姓名部分,故第三空应填a[i][0]。
评分标准:
(1)len(a)-i;(4分)
(2)<;(3分)
(3)a[i][0]。(3分)
————————————————
版权声明:本文为CSDN博主「Lemon Liu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46227121/article/details/131205620