2023-03 Python二级真题
分数:100
题数:37
测试时长:60min
一、单选题(共25题,共50分)
1. 下列说法正确的是?( C)(2分)
A.{123:'a','a':123}不是一个合法的字典
B.数字、字符串、列表和元组都可以作为字典的键
C.{(12,34,'a'):'a','a':5678}是一个合法的字典
D.字典中的内容一经创建就不能再修改
2. 下列程序的运行结果是?(D)(2分)
d1=dict(age=18)
print(d1)
A.(age=18)
B.[age=18]
C.age=18
D.{'age': 18}
3.
datas={'Name':'XiaoMing','No':'1001','Age':'14','School':'ShiYan XueXiao'}
,表达式len(datas)的值是?(C)(2分)
A.8
B.6
C.4
D.2
4. 下列哪个是一个合法的列表?(C )(2分)
A.(191,98,1,0)
B."1919,810"
C.[19,19,8,10]
D.{19,'19',8,10}
5. 运行下列程序,输出的结果是?( C)(2分)
list4=['1',3,'5',7,'2,3']
list4.append('7')
print(len(list4))
A.4
B.5
C.6
D.7
6. 已知list7列表list7=[-3,6,3,7,5,-4,10],执行sort()方法对此列表进行排序之后,list7列表的第二个元素是?(B )(2分)
A.-2
B.-3
C.2
D.5
7. 已知列表list9=[11,4,514,191,9,81,0],下列说法错误的是?(D )(2分)
A.print(min(list9))可以输出列表的最小值,输出结果为0
B.print(max(list9))可以输出列表的最大值,输出结果为514
C.print(list9.index(191))可以输出数值191第一个匹配项的索引位置,输出结果为3
D.list9.remove()可以移除列表中的最后一个元素
8. 下列说法正确的是?( D)(2分)
A.'0123456'是一个长度为6的字符串
B.在Python中,可以用乘号'*'把两个字符串连接起来
C.'What's this?'是一个合法的字符串
D.'*'是一个合法的字符串
9. 下列说法错误的是?( C)(2分)
A.while语句通常用于重复执行某一段程序
B.break语句可以跳出for和while的循环体
C.在Python中可以使用do..while循环
D.if语句通常用于执行条件判断
10. 运行下列程序,共计输出了几个banana?(B )(2分)
for i in range(3,9,3):
print("banana")
A.1
B.2
C.3
D.4
11. 运行下列程序,输出的结果是?(A )(2分)
x=0;y=0;a=2023
for i in range(a):
if ((i%2)==0):
x=x-1
else:
y=y+1
print(x+y)
A.-1
B.1
C.0
D.2023
12. 已知ls=[20,30,50,10,90],以下选项中,不能删除元素90的是?(D )(2分)
A.ls.pop(-1)
B.del ls[-1]
C.ls.remove(ls[-1])
D.ls.remove(-1)
13. 下列代码的输出结果是?(C )(2分)
ls=[2023,'Happy',['Good','Luck']]
print(ls[2][1])
A.Happy
B.Good
C.Luck
D.o
答案解析:此题考核二维列表元素值的访问,ls[2]的值是['Good','Luck'],ls[2][1]表示引用ls[2]列表的下标为1的元素,因此结果应为Luck
14. 下列程序的输出结果是?(注意:0后面是两个单引号'',并非双引号)(D)(2分)
ls=[0,'',{},None,(),[],'empty']
print(len(ls))
A.2
B.3
C.6
D.7
答案解析:空列表、空字符串、空元组、空字典都可以作为列表元素,对应的数据类型值为空,并不意味着不存在,因此也是列表的一个元素,所以列表长度为7
15. ls=['富强','民主','文明','和谐','自由','平等','公正','法治'],下列切片结果为['和谐', '平等']的选项是?(B )(2分)
A.ls[-5:-2:-2]
B.ls[-5:-2:2]
C.ls[4:-3:1]
D.ls[4:-2:2]
答案解析:此题考核列表切片,ls[起点:终点:步长],步长为正,从起点到终点的切片方向为从左向右;步长为负,从起点到终点的切片方向为从右向左,步长数值为1表示切片时获取元素为逐个获取,步长为2,表示获取元素时,两个相邻元素下标差为2,(即隔一个取一个),步长为3表示对列表切片时获取列表元素隔2个取1个,以此类推。
16. 下列代码的执行结果是?( D)(2分)
mylist=['Failure','is','the','mother','of','success']
for x in mylist[:]:
if len(x)<=3:
mylist.append(x)
print(mylist)
A.['Failure','is','the','mother','of','success']
B.['Failure','is','the','mother','of','success','of','is']
C.['Failure', 'is', 'the', 'mother', 'of', 'success', 'is', 'of']
D.['Failure', 'is', 'the', 'mother', 'of', 'success', 'is', 'the', 'of']
答案解析:此题循环获取列表mylist的全切片后判断每个元素的长度,长度小于并等于3时,添加到mylist中,因此结果为['Failure', 'is', 'the', 'mother', 'of', 'success', 'is', 'the', 'of']
17. 创建元组错误的是?(C )(2分)
A.tp=('a',)
B.tp=('',[],20) 备注:这里是单引号
C.tp=(25)
D.tp=1,2,3
答案解析:tp=(25)等价于tp=25
18. 列表和元组都是序列对象,列表和元组的区别是?(B )(2分)
A.元组的元素只能是不可变数据类型,例如:整型、浮点型、字符串、元组
B.元组一旦创建不可以修改
C.列表可以切片,元组不能切片
D.元组之间的元素不能用逗号进行分隔
19. 请问下列四个表达式中,哪个表达式的值与其他三个表达式的值不同?(D )(2分)
A.'字符串'+'运算'
B.''.join(['字符串','运算'])
C.‘字符串运算’*1
D.'字符串’-’运算'
答案解析:'字符串’-’运算'表达式错误,其他选项结果均为“字符串运算”
20. Python解释器中执行如下代码:
'{2},{0},{1}'.format('You','need','Python')
结果是?(B)(2分)
A.‘Python, need, You’
B.'Python,You,need'
C.‘need,You,Python’
D.‘need,Python,You’
答案解析:format函数输出多个值时,可以通过下标指定占位符的顺序,多个元素下标从0开始编号。
21. 下列代码执行的结果是?( B)(2分)
dic={'聊天机器人':'GhatGPT','搜索引擎':'百度','浏览器':'Google'}
for x in dic:
print(x,end=' ')
A.GhatGPT 百度 Google
B.聊天机器人 搜索引擎 浏览器
C.['GhatGPT','百度','Google' ]
D.[('聊天机器人','GhatGPT'),('搜索引擎','百度'),('浏览器','Google' )]
22. 不能输出0~10之间所有奇数的程序是?(D )(2分)
A.
a = 0
while a<10:
if a%2 == 0:
a = a + 1
continue
print(a,end=' ')
a = a + 1
B.
for a in range(0,11):
if a%2 != 1:
continue
print(a,end=' ')
C.
for a in range(0,11):
if a%2 == 0:
continue
print(a,end=' ')
D.
a = 0
while a<10:
if a%2 == 1:
break
a = a + 1
print(a)
23.
a=int(input())
if a<10:
res=a+2
elif a<50:
res=a-2
elif a<80:
res=a*2
else:
res=a//2
print(res)
程序运行时,输入60,程序执行的结果是?(C )(2分)
A.62
B.58
C.120
D.30
答案解析:输入‘60’,转换为整数60,满足 60>=50 并且a<80,将60*2的值赋值给res,所以结果是120。
24.
n,t=10,0
while n!=0:
n=n-1
t=t+n
以上代码运行后t的值是?( B)(2分)
A.36
B.45
C.50
D.55
25. 已知元组tup2=(114,5,14,191,9810),下列说法错误的是?(B )(2分)
A.print(tup2[1:-2])可以截取元组的一部分,输出的结果为(5,14)
B.print(tup2[2:])可以截取元组的一部分,输出的结果为(5,14,191,9810)
C.print(tup2[2:3])可以截取元组的一部分,输出的结果为(14,)
D.print(tup2[3])可以访问元组的第四个元素,输出的结果为191
答案解析:print(tup2[2:])可以截取元组的一部分,输出的结果为(14,191,9810)
二、判断题(共10题,共20分)
26. pop()方法可以清空列表。( 错)
答案解析:clear()方法可以清空列表。pop()方法可以移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
27. 元组要用方括号[]括起来。( 错)
28. (152,4.06,'20!^*3','4.(..$57!')是一个合法的元组。( 对)
29. 执行print("\'he" in "\'hello world\\")的输出结果为True。( 对)
答案解析:in是成员运算符,如果字符串中包含给定的字符,则返回True
30. if语句的条件后面要使用花括号{}表示接下来是满足条件后要执行的语句块。( 错)
答案解析:if语句的条件后面要使用冒号:表示接下来是满足条件后要执行的语句块
31. break语句不能在循环体之外使用。( 对)
答案解析:在Python中,break语句只能在循环体里使用,不能在循环体之外使用
32. 字符串和元组是不可变对象,列表和字典是可变对象。( 对)
33. 下列程序段中循环一共执行了6次。(对 )
for i in range(10,-1,-2):
print(i)
34. if语句的表达式为空字符串、空列表、空元组、空字典和数字0都等价于False.(对 )
35. 字典值可以是任何的 Python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。(对)
三、编程题(共2题,共30分)
36. 某快递公司对于邮寄的包裹有尺寸要求,必须满足以下条件:
每件包裹的长、宽、高之和须小于或等于200厘米,且任意一边长度必须小于或等于80厘米。(假设所有包裹都是长方体)
编写一个重复执行的程序,可以实现自动判断包裹是否符合要求。
具体要求如下:
(1)用户以厘米为单位按顺序分别输入包裹的长、宽、高(用户只输入大于零的数字,不输入长度单位,可以输入小数;分多次输入还是一次输入不做要求);
(2)程序自动判断用户输入的包裹尺寸是否满足此快递公司的要求;
(3)如果满足要求,就输出"可以邮寄";
(4)如果不满足要求,就输出"不可以邮寄";
(5)重复以上操作。
#参考程序1:#使用嵌套if判断
while True:
a=float(input('请输入长(厘米):'))
b=float(input('请输入宽(厘米):'))
c=float(input('请输入高(厘米):'))
sum=a+b+c
if sum<=200:
if a<=80:
if b<=80:
if c<=80:
print('可以邮寄')
else:
print('不可以邮寄')
else:
print('不可以邮寄')
else:
print('不可以邮寄')
else:
print('不可以邮寄')
#参考程序2:
#使用and逻辑运算
while True:
a=float(input('请输入长(厘米):'))
b=float(input('请输入宽(厘米):'))
c=float(input('请输入高(厘米):'))
sum=a+b+c
if sum<=200 and a<=80 and b<=80 and c<=80:
print('可以邮寄')
else:
print('不可以邮寄')
评分标准:
(1)能正确地要求用户分别输入长、宽、高;(2分)
(2)能正确地将用户输入的字符串转换为float或double类型;(1分)
(3)使用至少一个if判断;(2分)
(4)能正确判断包裹尺寸是否符合要求并输出正确的结果;(3分)
(5)程序可循环运行。(2分)
37. 编写程序帮老师对英语试卷中的英文字母、数字和其他字符(注意:包括空格)进行分类并统计每种字符的数量。
输入样例:
**Welcome to 2023~!
输出样例:
字母:Welcometo,共9个
数字:2023,共4个
其它字符:** ~!,共6个
#参考程序1:
s=input()
letter=''
number=''
other=''
for i in s:
if i>='a' and i<='z' or i>='A' and i<='Z':
letter+=i
elif i>='0' and i<='9':
number+=i
else:
other+=i
print('字母:{},共{}个'.format(letter,len(letter)))
print('数字:{},共{}个'.format(number,len(number)))
print('其它字符:{},共{}个'.format(other,len(other)))
#参考程序2:
s=input()
letter=''
number=''
other=''
for i in s:
if i.isalpha():
letter+=i
elif i.isdigit():
number+=i
else:
other+=i
print('字母:{},共{}个'.format(letter,len(letter)))
print('数字:{},共{}个'.format(number,len(number)))
print('其它字符:{},共{}个'.format(other,len(other)))
评分标准:
(1)能正确输入字符串;(2分)
(2)能正确遍历字符串中的每个字符;(3分)
(3)能正确判断字符是否为英文字母;(2分)
(4)能正确判断字符是数字字符;(2分)
(5)能正确判断字符是除字母和数字字符以外的其他字符;(2分)
(6)能正确输出字符串分类的结果,其中每项1分;(3分)
(7)能正确统计字母、数字和其他字符个数,其中每项1分;(3分)
(8)输出格式正确。(3分)