2023-09 Python二级真题
分数:100
题数:37
测试时长:60min
一、单选题(共25题,共50分)
1.
yyh=[2023,'杭州亚运会',['拱宸桥','玉琮''莲叶']]
jxw=yyh[2][0]
print(jxw[1]*2)
以上代码运行结果是?(A )
A.宸宸
B.杭杭
C.玉玉
D.州州
答案解析:jxw=yyh[2][0],jxw的值是“拱宸桥”,jxw[1]的值是“宸”,所以jww[1]*2的值是“宸宸”
2.阿宝在学习Python语言编程,他写了一个程序可以实现输入月份数字就可以输出2023年该月的天数。 程序如下:
monthdays=[0,31,28,31,30,31,30,31,31,30,31,30,31]
m=int(input())
print('2023年'+str(m)+'月有'+str(monthdays[m])+'天。')
要想得到2023年9月的天数,应该在终端输入的数字是?( C)
A.11
B.10
C.9
D.8
答案解析:列表的下标是从0开始的,但是week列表在定义的时候,第一个元素是0(从而排除了下标为0号的列表位置的月份),所以9月份的下标仍然是9,选择C。
3.下面这个列表中,包含几个元素?(B )
list = ['a', ['bb', 'cc', 'dd'], 'e', ['ff', 'gg'], 'h']
print(list)
A.8个
B.5个
C.6个
D.4个
答案解析:列表可以嵌套 列表中的元素同样可以是一个列表。list 这个列表中有 5 个元素,其中 3 个是字符型,2 个是列表,list列表中又嵌套了2个列表,在判断列表中的嵌套时,我们主要是根据[]来进行判断:嵌套的列表共占元素的一个位置。
4.使用下列哪几个命令可以把列表list1变成列表list2?(A )
list1 = ['苹果', '樱桃', '西瓜', '香蕉', '葡萄', '菠萝', '芒果', '火龙果']
list2 = ['苹果', '樱桃', '西瓜', '香蕉', '葡萄', '菠萝', '桑葚', '番石榴']
A.
del list1[6:8]
list1 += ['桑葚', '番石榴']
B.
del list1[6:7]
list1 += ['桑葚', '番石榴']
C.
del list1[6:8]
list1.append(['桑葚', '番石榴'])
D.
del list1[6:7]
list1.append(['桑葚', '番石榴'])
答案解析:从列表中删除元素,只需要使用 del 就可以了。 del 列表名[],在 Python 中,我们使用+向列表中添加元素,添加的元素会自动的被添加到列表尾部:列表名 += [元素1,元素2,元素3,…,元素n] ,除了使用+,append() 也可以为列表添加元素,和+一样,也是在列表的结尾处添加元素,但是却是作为一个整体添加添加。
5.以下程序的输出结果是?(C )
list = ['华东','华西','华南','华北']
list.insert(2,'华中')
list.pop()
print(list)
A.['华东', '华西', '华中', '华南', '华北']
B.['华东', '华中', '华西', '华南', '华北']
C.['华东', '华西', '华中', '华南']
D.['华西', '华中', '华南', '华北']
答案解析:本题考查列表的插入和从列表的指定位置删除元素,2表示将元素插入至原列表索引为2的元素之前,.pop()方法无参数时默认删掉最后一个元素。
6.下列程序运行后,输出的结果应该是哪个选项?(D )
t = ('s', 'a', 'a', 'r', 5)
print(t.index('a')+t.count('a'))
A.2
B.3
C.4
D.5
答案解析:获取指定元素在元组中出现的次数count(),index方法:获取指定元素的下标(就近原则,从左往右,找到第一个就结束)
7.numbers = [1 , 2 , 3 , 4],以下哪一项可以用来访问numbers中的第三个元素?(B )
A.numbers[1]
B.numbers[2]
C.numbers[3]
D.numbers[4]
8.d = {"山东":"青岛", "浙江":"杭州", "安徽":"芜湖"} ,请问删除d中'山东'对应的数据值的函数或方法是?(C)
A.del d['浙江']
B.d.clear()
C.del d['山东']
D.d.pop('山东')
9.以下关于循环的说法,不正确的是?(C )
A.for循环可以用于遍历列表中的所有元素
B.while循环满足循环条件时不断地运行,直到指定的条件不满足为止
C.Python中可以使用do…while循环
D.break和continue语句都可以用在for循环和while循环中
10.执行以下程序代码
score = eval(input("请输入成绩:"))
if score > 0 and score < 60:
print("不及格")
elif score >= 60 and score <=100:
print("及格")
else:
print("请输入正确的成绩")
当输入60时,输出结果是?(A )
A.及格
B.不及格
C.请输入正确的成绩
D.60
答案解析:该题考查程序的多选择分支结构,因为60介于60(含)和100之间,故输出结果为“及格”。
11.下列哪个说法不正确的是?( C)
A.字典是通过key(键)来进行访问的,跟列表、元组不同
B.字典没有头上标和尾下标,跟value对应的就只有key(键)
C.Python中可以通过重新给字典当中的key赋值的方式修改对应的value,不能通过新增key的方式来添加新的元素
D.用Python内置函数是可以删除字典当中的元素的,整个字典也可以被清空或者删除
答案解析:Python中可以通过重新给字典当中的key赋值的方式修改对应的value,也可以通过新增key的方式来添加新的元素;
12.请问此程序运行后的结果是?(A )
s=1
for i in range(1,4,3):
s = s+i
print(s)
A.2
B.6
C.1
D.5
答案解析:range(1,4,3) 这个包含的数据是1,不包含4。所以:1+1=2
13.关于Python循环结构的说法,下列哪个是错误的?(C )
A.Python可以通过for和while循环,实现遍历和各种循环等功能
B.break是用来跳出自己所在的整个循环体,执行循环后面的语句
C.continue结束整个循环过程,不再判断循环的执行条件,继续顺序执行循环后面的语句
D.遍历循环中的遍历结构可以是字符串或者range()函数等
答案解析:continue 语句跳出本次循环,而break跳出整个循环。即break才是结束整个循环过程
14.下面几个有关流程控制的说法,那个是错误的?(C )
A.如果条件判断语句永远为 true,循环将会无限的执行下去
B.当判断条件为假(false) 时,循环结束
C.在while 语句中,"判断条件"不可以是个常值
D.执行语句可以是单个语句或语句块。判断条件可以是任何表达式等
答案解析:while 语句时,"判断条件"可以是个常值,表示循环必定成立。
15.运行下面的代码,输出的结果是?(B )
name1 = '玛卡巴卡'
name2 = '依古比古'
name3 = '唔西迪西'
print('晚安' + name2)
A.晚安玛卡巴卡
B.晚安依古比古
C.晚安唔西迪西
D.晚安name2
答案解析:+ 号可以将两个字符串拼接在一起,name2 中的内容是 '依古比古',打印的结果就是'晚安依古比古'。
16.下面代码中,不能创建一个字典的是?( B)
A.d = {}
B.d = {'葡萄', 20}
C.d = {'葡萄':20}
D.d = {'葡萄':20, '西瓜':12}
答案解析:B 不是一个字典,字典的元素都是成对出现的,中间用冒号隔开。
17.字典d = {"苹果":"apple","香蕉":"banana","橘子":"orange","桃子":"peach"}中按键值对的形式储存了部分水果的中英文名,以下能够只输出水果英文名的语句是?(A )
A.print(d.values())
B.print(d.keys())
C.print(d.items())
D.以上三个语句都无法实现
答案解析:字典类型操作函数d.values()返回字典中所有的值信息,d.keys()返回字典中所有的键信息,d.items()返回字典中所有的键值对信息;水果的英文名都属于该字典的值。
18.下列定义元组的语句,不正确的是?(B )
A.tp=( )
B.tp=('sun')
C.tp=('star',)
D.tp=('sun','star','moon')
答案解析:使用()可以创建元组,空括号创建空元组,但是创建只有一个元素的元组时,需要在第一个元素的后面加逗号。
19.下列关于列表的说法,正确的是?(D )
A.列表创建后不能被修改
B.列表中各元素的类型必须相同
C.列表不能用下标访问
D.通过方括号[]可以创建列表
答案解析:列表是一种序列类型,创建后可以随意被修改;列表中各元素类型可以不同,可以用下标进行访问;使用方括号[]或list可以创建列表,元素间用逗号分隔。
20.已知列表animal = ['cat','dog','monkey','tiger','lion'],要想得到'cat'的输出结果,以下哪个选项的语句是不正确的?( B)
A.animal[0]
B.animal[1]
C.animal.reverse()
animal[4]
D.animal.reverse()
animal[-1]
答案解析:列表元素的索引是从0开始的,所以获取第一个元素’cat’需用animal[0]而不是animal[1];reverse()方法的作用是将列表中的元素反转,animal列表反转后,第一个元素’cat’变成了最后一个元素,可以通过索引值4或者逆序索引值-1进行访问。所以本题答案为B。
21.关于Python的元组类型,以下选项中描述错误的是?(C )
A.元组不可以被修改
B.Python中元组使用小括号和逗号表示
C.元组中的元素要求是相同类型
D.一个元组可以作为另一个元组的元素,可以采用多级索引获取信息
答案解析:元组中的元素可以是不同类型,所以C是错误的
22.对 s = "www.baidu.com" 执行 s.split(".")后的结果是?(B )
A.www.baidu.com
B.["www", "baidu", "com"]
C."www.baidu.com"
D.wwwbaiducom
答案解析:split是分割字符串,通过split,我们可以将字符串分割成列表。
23.下面代码运行后,输出区打印的内容是?(B )
s = 0
for i in range(10):
s += 1
if i * i < 50:
break
print(s)
A.0
B.1
C.7
D.3
答案解析:第一次循环时,变量 s = 1,i = 0,此时 i * i < 50,break语句会终止循环,输出区打印出1
24.以下代码执行后输出是?(D )
list0 = [5, 4, 3, 2, 2]
list0.remove(2)
list0.insert(2, 6)
print(list0)
A.[5, 4, 3, 6, 2]
B.[5, 4, 3, 2, 6]
C.[5, 4, 3, 2, 6, 2]
D.[5, 4, 6, 3, 2]
答案解析:insert在下标为2的位置插入6,与前面的remove(2)没有关系。所以选D
25.执行以下运算后,text2的值是?( D)
text1 = "Good work"
text2 = text1[-1]*3
A.Good workGood workGood work
B.workworkwork
C.work work work
D.kkk
答案解析:下标-1取出最后一个元素即k,乘以3表示重复3次,因此输出kkk
二、判断题(共10题,共20分)
26.元组一旦被创建就不能被修改。( 对)
答案解析:元组一旦被创建就不能被修改
27.元组和列表都属于序列类型,他们的元素都有下标,可以调用sort()函数对元组和列表中的元素重新排列。( 错)
答案解析:元组中的元素不可改变,元组对象没有sort属性。
28.列表是有序的,列表中可以放多个不同类型的元素,列表也可以是空的,[],[(),[]]都是空列表。( 错)
答案解析:[]是空列表,因为列表中的元素个数是0,但是,[(),{}]不是空列表,这个列表中包含两个元素,一个元素是空元组,一个元素是空列表。
29.
dic_1 = {'键值1': '苹果', '键值2': '葡萄', '键值3': [11, 22, 33]}
dic_1['键值4'] = '西瓜'
print(dic_1)
上述代码的功能是:
在字典dic_1中添加一个键值对,'键值4': '西瓜',输出添加后的字典,其值是:
{'键值1': '苹果', '键值2': '葡萄', '键值3': [11, 22, 33],'键值4':'西瓜'} (对)
答案解析:在字典dic_1中添加一个键值对,'键值4': '西瓜',输出添加后的字典就是{'键值1': '苹果', '键值2': '葡萄', '键值3': [11, 22, 33],'键值4':'西瓜'},这句话是正确的。
30.
for i in range(5):
print(i)
上述代码的运行结果是(错)
1
2
3
4
5
答案解析:range(5)的取值范围从0开始,到4结束。
31.
s="Python";
for i in s:
print(i);
上面这个程序段,运行后输出的结果是: Python。(错 )
(注意:是横排的Python)
32.input() 语句输入的内容,一定是字符串类型的。( 对)
33.下列程序在运行过程中,变量 i 的值不可能是5。(对 )
for i in range(5):
print(i)
34.'abc' - 'a' 的结果是 'bc'。(错 )
35.if、elif和else后面均应写明条件以便判断True或False。(错 )
三、编程题(共2题,共30分)
36.最小公倍数
最小公倍数是指两个或多个整数公有的倍数中,最小的那个数。例如,2 和 3 的公倍数有 6、12、18 等等,其中最小的是 6,因此 6 就是 2 和 3 的最小公倍数。
最小公倍数在数学中有广泛的应用,例如在分数的化简、约分、比较大小等问题中都需要用到最小公倍数。
请你编写一个程序,程序可以输入两个正整数,输出它们的最小公倍数。
样例输入:
请输入第一个正整数:
6
请输入第二个正整数:
8
样例输出:
24
参考程序1:
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第二个正整数:"))
# 穷举法求最小公倍数
lcm = max(a, b)
while True:
if lcm % a == 0 and lcm % b == 0:
break
lcm += 1
print(lcm)
参考程序2:
a = int(input("请输入第一个正整数:"))
b = int(input("请输入第二个正整数:"))
# 求最大公约数
m = a
n = b
while n != 0:
r = m % n
m = n
n = r
# 求最小公倍数
lcm = a * b // m
print(lcm)
评分标准:
(1)正确输入数字并转化成整型;(2 分)
(2)正确判断出公倍数;(2 分)
(3)正确使用循环结构和打破循环的 break 语句;(3 分)
(4)能够将最小公倍数打印在终端区。(3 分)
37.中国电子学会主办的“全国青少年信息素养大赛”总决赛要开始了,组委会的老师要统计各个赛项报名的人数。请帮着写一个程序,实现该功能:统计时,输入各项编号表示对应的比赛:
1:Python编程挑战赛
2:开源鸿蒙主题赛
3:智慧物流挑战赛
0:表示录入完毕
要求:
一、循环执行
二、当输入错误数据,可以提示“没有此编号请重复输入”;
三、当输入0后,自动统计所有项目的参赛人数,并输出出来;如下面的案例:
输入样例:
请输入赛项编号:
1
请输入赛项编号:
2
请输入赛项编号:
3
请输入赛项编号:
2
请输入赛项编号:
1
请输入赛项编号:
1
请输入赛项编号:
0
输出样例:
Python编程挑战赛:3人
开源鸿蒙主题赛:2人
智慧物流挑战赛:1人
参考程序1:
d={'Python编程挑战赛':0,'开源鸿蒙主题赛':0,'智慧物流挑战赛':0}
while True:
num=input('请输入赛项编号:')
if num=='1':
d['Python编程挑战赛']+=1
elif num=='2':
d['开源鸿蒙主题赛']+=1
elif num=='3':
d['智慧物流挑战赛']+=1
elif num=='0':
break
else:
print('没有此编号请重新输入')
continue
print('统计结果如下:')
for i in d:
print(i+':'+str(d[i])+'人')
参考程序2:
sum1=0 #Python编程挑战赛
sum2=0 #开源鸿蒙主题赛
sum3=0 #智慧物流挑战赛
while True:
num=input('请输入赛项编号:')
if num=='1':
sum1+=1
elif num=='2':
sum2+=1
elif num=='3':
sum3+=1
elif num=='0':
break
else:
print('没有此编号请重新输入')
continue
print('统计结果如下:')
print('Python编程挑战赛:'+str(sum1))
print('开源鸿蒙主题赛:'+str(sum2))
print('智慧物流挑战赛:'+str(sum3))
评分标准:
(1)有循环语句,可以重复输入数据;(4分)
(2)当输入0,循环可以正确的结束;(2分)
(3)有条件判断语句,可以统计对应赛项的人数;(4分)
(4)当输入错误数据,可以提示“没有此编号请重复输入”;(4分)
(5)可以按照正确的格式打印;(2分)
(6)程序运行结果正确。(4分)