2023-03 Python三级真题
分数:100
题数:38
测试时长:60min
一、单选题(共25题,共50分)
1.十进制数111转换成二进制数是?( )(2分)
A.111
B.1111011
C.101111
D.1101111
2.某班有36人,王老师想给每位同学分配一个二进制的学号,那么该学号至少需要多少位?( )(2分)
A.36
B.5
C.6
D.7
3.数据的存储形式多种多样,如s1=[[“李亮”,“98”],[“王宁宁”,“95”],[“莫晓珍“,“88”]],s2=[“李亮”,“98”,“王宁宁”,“95”,“莫晓珍“,“88”],有关s1与s2下列说法正确的是?( )(2分)
A.都是用列表实现的
B.s1是一维列表
C.s2是二维列表
D.要取出“王宁宁”同学的成绩,方法是一样的,用s1[4]或s2[4]
4.a=["跳绳","跳高","跳远","铅球"]
fs=open("sports.csv","w")
fs.write(" ".join(a)+'\n')
fs.close()
关于上述代码,下列说法正确的是?( )(2分)
A.若”sports.csv”文件不存在,则程序出错
B.程序的最后结果是:跳绳 跳高 跳远 铅球
C.程序中的fs.close()代码可有可无
D.“w”参数表示不能修改原csv文件
5.现有水果价格数据jg=[[‘草莓’,15],[‘梨子’,9],[‘苹果’,10],[‘桔子’,4]],需要将其打印成二维表格数据形式,程序代码如下:
jg=[[‘草莓’,15],[‘梨子’,9],[‘苹果’,10],[‘桔子’,4]]
for row in range(len(jg)):
for col in range(len(jg[row])):
print(____________,”\t”)
上述划线处代码是?( )(2分)
A.jg[row]
B.jg[col]
C.jg[col][row]
D.jg[row][col]
6.运行下列程序段:
try:
a=int(input("请输入被除数:"))
b=int(input("请输入除数:"))
x=a/b
print("商是:",x)
except:
print("输入有错!请检查。")
else:
print("正确!")
finally:
print("程序结束。")
若输入a为8,b为4,则输出结果是?( )(2分)
A.
商是:2
正确!
B.
商是:2
正确!
程序结束。
C.
商是:2.0
程序结束。
D.
商是:2.0
正确!
程序结束。
7.已知A的ASCII码值为65,
s=”China”
k=abs(-4.8)
则表达式ord(min(s))+k的值是?( )(2分)
A.71.8
B.63
C.61
D.62
8.divmod(8,5)的结果是?( )(2分)
A.1
B.3
C.(1,3)
D.[1,3]
9.若有代码:
name=[“李明”,“王宁”,“朱倩”]
for a,i in enumerate(name):
print(a,i)
则显示的结果是?( )(2分)
A.
0 李明
1 王宁
2 朱倩
B.
李明
王宁
朱倩
C.李明,王宁,朱倩
D.
1 李明
2 王宁
3 朱倩
10.有关于print()语句的运用,下列输出结果有误的是?( )(2分)
A.print(“Happy!”)
B.print(李明)
C.print('Happy!’)
D.print(2023)
11.若s=”y\nea\tr”,则len(s)的值为?( )(2分)
A.8
B.4
C.6
D.5
12.b=[1,2,3,4,5],则sum(b)的值是?( )(2分)
A.10
B.14
C.15
D.12
13.某算法的流程图如图所示,则该流程图的结构属于?( )(2分)
A.顺序结构
B.分支结构
C.树形结构
D.循环结构
14.有如下代码:
a=[25,37,49,64,73,75,85,91]
t=i=0
j=len(a)-1
key=int(input())
while i<=j:
m=(i+j)//2
if a[m]==key:
break
elif a[m]>key:
j=m-1
else:
i=m+1
t+=1
print(t)
若输入的key值是73,则程序输出的结果是?( )(2分)
A.5
B.1
C.2
D.3
15.hex函数可以将十进制数转换成十六进制数。在Python交互式编程环境下,执行语句hex(2023)后,显示的运行结果是?( )(2分)
A."0x7e3"
B."0x7e6"
C."0x7e7"
D."0x7e8"
16.int() 函数用于将一个字符串或数字转换为整型。在Python交互式编程环境下执行以下语句,会出现错误的一项是?( )(2分)
A.int()
B.int(1.0)
C.int(0x20,16)
D.int('2023',8)
17.一维数据可以存储在CSV格式文件中,下列描述正确的是?( )(2分)
A.必须采用逗号分隔数据元素
B.必须采用空格来分隔数据元素
C.必须采用分号分隔数据元素
D.允许采用特殊字符来分隔数据元素
答案解析:CSV格式文件允许采用特殊字符来分隔数据元素。
18.如果需要使用open函数以可读可写的方式打开一个存储二维数据的CSV文件,则open函数的文件打开模式不能设置成?( )(2分)
A.rw
B.r+
C.w+
D.a+
19.在try....except...else...finally异常处理机制中,如果发生异常则完全不会被执行的代码块是?( )(2分)
A.try代码块
B.except代码块
C.else代码块
D.finally代码块
20.下列数据对象中,不能使用len()函数获取数据对象长度的是?( )(2分)
A.2023
B.[2, 0, 2, 3]
C.["Go", "China!"]
D.("Go", "China!")
21.在Python交互式编程环境下,输入print(list(range(0,5,2)))语句,执行的结果是?( )(2分)
A.存在语法错误,不能执行
B.[0,1]
C.[0, 1,2, 3,4,5]
D.[0, 2, 4]
22.在交互式编程环境下,执行all([0,1,2,3])语句后,返回的值是?( )(2分)
A.True
B.False
C.1
D.4
23.在交互式编程环境下,输入float("1")语句,执行的结果是?( )(2分)
A.1
B.1.0
C.'1'
D.传入参数错误,不能执行
24.在交互式编程环境下,输入max([(1,2),(2,3),(3,4),(2,6)])语句,执行的结果是?( )(2分)
A.6
B.(3, 4)
C.(2,6)
D.(3,6)
25.“鸡兔同笼”是一个古老的数学问题,可以应用枚举法求解,也可以利用二元一次方程进行求解。以下是使用计算机解决“鸡兔同笼”问题的几个步骤:
①编写Python程序,用计算机进行处理。
②设计“鸡兔同笼”求解算法。
③验证算法的功能和性能。
④分析问题,确定解题任务。
使用计算机解决“鸡兔同笼”问题,正确的步骤是?( )(2分)
A.②④①③
B.④①②③
C.④②③①
D.④②①③
二、判断题(共10题,共20分)
26.若name为若干元素的列表对象,file为CSV文件,则file.write(‘,’.join(name)+’\n’)语句可确保列表中每个写入CSV文件的数据,在表格软件打开时作为一个单元格存在。( )
27.当程序发生异常时,我们可以用try…except…语句进行异常处理。但每个try模块只能有一个except语句块。( )
28.float()函数可将整数转换为浮点类型数据,但不能将字符串中的数字转换为浮点类型数据。( )
29.在执行语句x=input()的过程中,若键盘输入23并按下回车键,则x的值就被赋值为整数23。( )
30.Python语言中,bin()函数可以输出二进制数值,也可以传入参数用来设置输出为十六进制数值。( )
31.任何二维数据都可以用二维列表来表示。( )
32.执行语句wq=[[0]*19]*19可以创建一个19行及19列的二维表。( )
33.bool()函数用于将给定参数或表达式转换为布尔类型。语句bool(-1)返回的是False值。( )
34.enumerate()函数用于将列表、元组或字符串等可遍历的数据对象组合为一个索引序列。( )
35.十六进制9E的二进制数是8位。( )
三、编程题(共3题,共30分)
36.
百钱买百鸡(完成)
是我国古代数学家张丘建在《算经》一书中提出的数学问题,问题的原文是:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?这个问题用现代文描述起来就是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱。如果用100文钱买100只鸡,那么公鸡、母鸡和小鸡各应该买多少只呢?请完成下面程序中空白处的语句,实现对问题的求解,找出所有符合题目要求的买鸡方案,并输出。
#设cock、hen、chicken分别为公鸡、母鸡和小鸡的数量,num为符合题目要求的方案数目。
num=0
for cock in range(1,21):
for hen in range(1,34):
for chicken in ① :
if ② == 100 and cock*5 + hen*3 + chicken/3 == ③ :
num = ④
print(f'第 {num} 种方案是:公鸡{cock}只,母鸡{hen}只,小鸡{chicken}只')
参考程序:
#设cock、hen、chicken分别为公鸡、母鸡和小鸡的数量,num为符合题目要求的方案数目。
num=0
for cock in range(1,21):
for hen in range(1,34):
for chicken in range(1,101):
if cock+hen+chicken == 100 and cock*5 + hen*3 + chicken/3 == 100:
num = num +1
print(f'第 {num} 种方案是:公鸡{cock}只,母鸡{hen}只,小鸡{chicken}只')
37.
妙妙学校举行了知识竞赛,(完成)
有一、二、三3个班分别派出最优秀的5名代表参加此次竞赛。这15名代表的成绩存放于”jscj.csv”文件中,现在妙妙读取了其中的数据,数据内容如图所示:
下列代码实现了读取竞赛分数信息,并输出各班平均分的情况,请你补全代码。
import csv
with open("/data/jscj.csv",encoding="utf-8")as f:
rows=list( ① (f))
sum=[0,0,0]
for row in rows[1:]:
if int(row[0])==1:
sum[0]+=int(row[2])
elif int( ② )==2:
sum[1]+=int(row[2])
else:
sum[2]+=int(row[2])
for i in range(1,4):
print(str(i)+"班的平均分为:",round( ③ /5,2))
参考程序:
import csv
with open("/data/jscj.csv",encoding="utf-8")as f:
rows=list(csv.reader(f)) 采用csv来读取信息
sum=[0,0,0] 这就是和的初始化
for row in rows[1:]: 信息从第二行开始,因为第一行是文字介绍, 班级,成绩那些
if int(row[0])==1: 如果显示1,就是一班的
sum[0]+=int(row[2]) sum的第一个数放一班的和
elif int(row[0])==2: 如果显示2,就是2班的
sum[1]+=int(row[2]) sum的第2个数放2班的和
else: 如果显示3,就是3班的
sum[2]+=int(row[2]) sum的第3个数放3班的和
for i in range(1,4):
print(str(i)+"班的平均分为:",round(sum[i-1])/5,2)) round() 方法返回浮点数x的四舍五入值。
本题主要考查文件的读取操作和计算思维。第一空为利用csv模块的reader对象读取文件内容;第二空属于分支结构的第二个分支,由第一个分支可知这里为讨论班级是否是2班,因此仍然是读取row[0]的数据;第三空是计算每个班的平均分,班级和循环变量i有关,sum中对应班级的索引和循环变量i相差1,故为sum[i-1]。
38.
若要生成一个由若干小写字母组成的互不重复的随机数组,
已知小写字母的ASCII码值为97~122整数范围,并将其进行从小到大输出,如图所示,请将相关程序补充完整。
import random #random是随机数模块
n=int(input("请输入元素个数(不超过26):"))
a=[]
#产生不重复的随机数组
for i in range(n):
x=random.randint(97,122) #产生97-122之间的随机整数
while chr(x) in a:
x=random.randint(97,122)
a.append( ① )
print(a)
#将各个元素进行排序输出
for i in range(n-1):
k=i
for j in range( ② ,n):
if a[k]>a[j]:
k= ③
if i!=k:
a[i],a[k]= ④
print("该随机数组从小到大排列为:",a)
参考程序:
import random #random是随机数模块
n=int(input("请输入元素个数(不超过26):"))
a=[]
#产生不重复的随机数组
for i in range(n):
x=random.randint(97,122) #产生97-122之间的随机整数
while chr(x) in a:
x=random.randint(97,122)
a.append(chr(x))
print(a)
#将各个元素进行排序输出
for i in range(n-1):
k=i
for j in range(i+1,n):
if a[k]>a[j]:
k=j
if i!=k:
a[i],a[k]=a[k],a[i]
print("该随机数组从小到大排列为:",a)
本题主要考查选择排序。程序的第一部分是产生不重复的字母组成的数组。由于x是97~122中的随机整数,故追加到a列表中的元素应在x的基础上将其转化为字符,故①空填写chr(x);
在选择排序中,外循环控制排序趟数,内循环控制排序次数,不难看出,i的取值范围为0~n-2,因此j每次从i的下一个位置开始至最后,故②处填写i+1;根据选择排序的原理,在j位置上找到比k位置更小的元素,则k移至该位置,故③处填写为j;在某趟排序过程中,当全部元素比较结束,应在最小元素位置上,需要将其交换到相应的i位置上,故④位置答案应为a[k],a[i]。
评分标准:
(1)chr(x);(4分)
(2)i+1;(4分)
(3)j;(4分)
(4)a[k],a[i]。(4分)
————————————————
版权声明:本文为CSDN博主「Lemon Liu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46227121/article/details/130036436