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