2021年06月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里
一、单选题(共25题,每题2分,共50分)
第1题
执行下列代码后,运行结果是?
seq=['hello','good','morning']
s='*'.join(seq)
print(s)
A: hello*good*morning*
B: *hello*good*morning
C: hello*good*morning
D: *hello*good*morning*
答案:C
该代码使用join方法将列表seq中的元素以*作为分隔符连接起来,生成一个字符串s。所以输出结果是hello*good*morning。
第2题
小红用一个列表score=[80,78,92,96,100,88,95]来依次表示她七周的英文测验分数,如果想要查找到第三周的英文测验分数并将其删除,应该怎么做?
A: score[3]
B: score[2]
C: score.pop(3)
D: score.pop(2)
答案:D
检索并删除特定元素s.pop(i)*此处小括号里是索引号.小红用列表来表示自己七周的测验分数,但是列表的索引是从0开始,也就是第1周的测验分数对应的索引号是0。依此类推,第三周的索引号就是2.因此是score.pop(2)。
第3题
以下代码输出结果是?
ls =["2021","123","Python"]
ls.append([2021,"2021"])
ls.append(2021)
print(ls)
A: [‘2021’, ‘123’, ‘Python’, 2021]
B: [‘2020’, ‘123’, ‘Python’, [2021, ‘2021’]]
C: [‘2021’, ‘123’, ‘Python’, [2021, ‘2021’], 2021]
D: [‘2020’, ‘123’, ‘Python’, [2021],2021]
答案:C
该代码首先创建了一个列表ls,包含了字符串元素"2021"、“123"和"Python”。然后使用append方法向列表ls中添加了两个元素,分别是列表[2021, “2021”]和整数2021。最后打印了列表ls的内容。
第4题
已知Lista=list(“five”),执行语句Lista[2:]=list(“rst”)后,列表Lista中的元素为?
A: [‘f’, ‘i’, ‘v’, ‘e’, ‘r’, ‘s’, ‘t’]
B: [‘f’, ‘r’, ‘s’, ‘t’]
C: [‘f’, ‘i’, ‘r’, ‘s’]
D: [‘f’, ‘i’, ‘r’, ‘s’, ‘t’]
答案:D
该语句将列表Lista的索引2及之后的元素替换为list(“rst”)的元素。列表Lista初始为[‘f’, ‘i’, ‘v’, ‘e’],在索引2处插入list(“rst”)的元素,得到[‘f’, ‘i’, ‘r’, ‘s’, ‘t’]。
第5题
原有列表s=[5,2,9,1],下列哪个操作不能使得列表s变为[9,5,2,1]?
A:
s.sort()
s.reverse()
print(s)
B:
s.sort(reverse=True)
print(s)
C:
print(sorted(s,reverse=True))
D:
s.sort()
print(s)
答案:D
sort() 函数用于对原列表进行排序,reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认);sort 与 sorted 区别:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作
第6题
在Python3.5.2的IDLE交互式环境下依次输入以下程序语句后的结果是?
>>>S=[10,20,30,40]
>>>10 in S
A: True
B: true
C: False
D: false
答案:A
判断元素是否在序列之内x in s.10在序列S=[10,20,30,40]中,因此答案为True。
第7题
以下代码输出结果是?
ls = [888,'note',[2021,'Python',123],20]
print(ls[2][1])
A: note
B: Python
C: 2021
D: 结果错误
答案:B
该代码定义了一个列表ls,其中包含了不同类型的元素。通过索引访问ls[2][1],可以获取列表ls中索引为2的元素,即[2021, ‘Python’, 123],然后再获取该列表中索引为1的元素,即’Python’。
第8题
已知a=“123”,那么a*2的结果是?
A: 246
B: 123123
C: ‘123123’
D: ‘246’
答案:C
字符串的重复,特别要注意这里的a是字符串类型,而不是整型,所以选择C
第9题
执行下列代码后,屏幕打印的k值的个数共有多少个?
k=100
while k>1:
print(k)
k=k//2
A: 5
B: 6
C: 10
D: 50
答案:B
该代码使用了一个 while 循环,当 k 大于 1 时,打印当前的 k 值,并将 k 的值更新为 k 整除 2。循环会一直进行,直到 k 的值小于等于 1。
在每次循环中,k 的值都会被除以 2,即每次都会减半。初始值 k=100,经过 6 次循环后,k 的值会变为 1,此时循环结束。
第10题
据相关文件规定,全国景区对老年人实行优惠政策:60岁以内全票,60-69岁(含60岁和69岁)的老年人半票,69岁以上免费。输入年龄,可以输出全票/半票/免费信息的程序是?
A:
while True:
a=int(input('年龄:'))
if(a>=70):
print('免费')
elif(a>60 and a<70):
print('半票')
else:
print('全票')
B:
while True:
a=int(input('年龄:'))
if(a>=70):
print('免费')
elif(a>=60 and a<70):
print('半票')
else:
print('全票')
C:
while True:
a=int(input('年龄:'))
if(a>70):
print('免费')
elif(a>=60 and a<70):
print('半票')
else:
print('全票')
D:
while True:
a=int(input('年龄:'))
if(a>70):
print('免费')
elif(a>60 and a<70):
print('半票')
else:
print('全票')
答案:B
该程序使用了一个无限循环 while True,并在每次循环中通过输入函数获取用户输入的年龄。然后根据年龄的不同情况进行判断,并输出相应的票价信息。
根据题目要求,当年龄大于等于 70 时,输出 “免费”;当年龄大于等于 60 并且小于 70 时,输出 “半票”;否则,输出 “全票”。
第11题
将下列列表a中偶数提取出来并形成一个新的列表c,请补充完整语句?
a = [3,5,7,6,2,8,10]
c=[]
for i in a:
if _______:
________
print(c)
A:
i%2==0:
c.append(i)
B:
i%2==0
c.extend(i)
C:
i//2=1
c.append(i)
D:
i//2=1
c.extend(i)
答案:A
这道题我们首先得了解for循环来遍历列表的方法,即for i in a:,然后将每个数通过if分支语句进行判断是否为偶数。所以if 条件处需要添加的一个判断条件是i%2==0,然后将符合条件的i添加到列表c中,即c.append(i)。最后将列表c打印出来即print©。
i%2==0 #i除以2的余数等于0.
i//2==1#i 整除2的得数等于1
c.append(i)#追加元素s.append()
c.extend(i)#扩展序列s.extend()
第12题
下列说法错误的是?
A: 字典是可变的无序集合
B: 列表、元组可以相互嵌套使用
C: 字典虽然不能利用下标访问元素,但可以排序
D: 字典属于一对一映射关系的数据类型
答案:C
字典是无序的数据结构,其中的元素是以键值对的形式存储的。字典的主要特点是通过键来进行访问和操作,而不是通过下标。
字典中的键是唯一的,且不可重复,但字典本身并不保持元素的顺序。因此,字典是无法直接进行排序的。
第13题
以下说法正确的是?
A: 同一个元组中,元素的类型必须相同
B: tuple()函数可以将列表转换为元组
C: 用del就可以删除元组中的元素
D: 列表和元组都是可变数据类型
答案:B
tuple()函数可以用于将其他可迭代对象(如列表)转换为元组。这个函数接受一个可迭代对象作为参数,并返回一个由该对象的元素组成的元组。
其他选项的说法是错误的:
A: 同一个元组中,元素的类型可以不相同。元组中的元素可以是不同的类型,例如,(1, ‘two’, 3.0) 是一个有效的元组。
C: 使用 del 语句无法删除元组中的元素。元组是不可变的数据类型,意味着一旦创建,就不能修改或删除其中的元素。
D: 列表是可变数据类型,而元组是不可变数据类型。列表可以通过索引和切片进行修改,而元组的元素是不可修改的。
第14题
关于下列程序理解说法正确的是?
num=0
while num<10:
print("Python")
A: 在while代码块中无论加什么都不能改变死循环
B: 运行结果打印输出10个"Python"语句
C: 这个while循环是一个死循环,会一直打印"Python"
D: 在while代码块中加一行代码num-=1可以改变死循环
答案:C
给定的程序中,num 的初始值为 0,然后进入一个 while 循环。循环条件 num<10 恒为真,因为 num 的值始终为 0,不会发生变化。所以,循环会无限执行,并且每次循环都会打印输出字符串 “Python”。
第15题
下列程序的运行结果是?
name='The dog is ehite'
new_name=name[:11]+'white'
print(new_name[11:])
A: The dog is white
B: hite
C: ehite
D: white
答案:D
该程序首先定义了一个字符串变量 name
,其值为 'The dog is ehite'
。然后通过切片操作 name[:11]
获取 name
字符串中索引为 0 到 10 的字符,即 'The dog is '
。接着将切片结果与字符串 'white'
拼接,得到新的字符串 new_name
。所以,new_name
的值为 'The dog is white'
。
最后,通过切片操作 new_name[11:]
获取 new_name
字符串中索引为 11 到末尾的字符,即 'white'
。
第16题
正确定义元组yuan的语句是?
A: yuan={1,2,3}
B: yuan=[1,2,3]
C: yuan=(1,2,3)
D: yuan=<1,2,3>
答案:C
元组是由一组有序的元素组成的,使用圆括号 ( ) 来定义。元组中的元素可以是任意类型,且元组是不可变的,即一旦创建后,不能修改其元素。
选项 A 的语句定义的是一个集合(set),使用的是花括号 { }。
选项 B 的语句定义的是一个列表(list),使用的是方括号 [ ]。
选项 D 的语句的语法错误,不是正确的元组定义方式。
因此,选项 C 是正确的语句,用于定义元组。
第17题
已知列表List1=[1,2,3,4,5],要在列表List1中的最前面添加元素0,则下列操作可行的是?
A: List1=0+List1
B: List1=“0”+List1
C: List1=[0]+List1
D: List1=List1+[0]
答案:C
该操作使用了列表连接的方式,将一个包含单个元素 0 的列表与原列表 List1 进行连接操作。通过 [0] + List1,可以将元素 0 添加到 List1 的最前面。
选项 A 的操作中,将整数 0 与列表 List1 相加,这是不允许的操作。
选项 B 的操作中,将字符串 “0” 与列表 List1 进行连接,这会生成一个新的列表,而不是将元素 0 添加到 List1 的最前面。
选项 D 的操作中,将原列表 List1 与包含单个元素 0 的列表进行连接,将元素 0 添加到 List1 的最后面,而不是最前面。
第18题
已知列表a=[1,2,3],执行语句print(2*a),显示的结果是?
A: [2, 4, 6]
B: [1, 2, 3, 1, 2, 3]
C: [1, 2, 3, 2, 4, 6]
D: [1, 2, 3, 3, 2, 1]
答案:B
在这个表达式中,2*a 表示将列表 a 重复两次。结果是一个新的列表,包含两个 a 的拷贝。
第19题
执行下列代码后,运行结果是?
for i in range(0,10,2):
print(i*2,end=',')
A:
0,
4,
8,
12,
16,
B: 0,4,8,12,16,
C:
2,
6,
10,
14,
18,
D: 2,6,10,14,18,
答案:B
该代码使用了 range 函数生成一个从 0 到 10(不包含 10)的数字序列,步长为 2。在循环中,变量 i 依次取 0、2、4、6、8。然后通过 print 函数打印出 i*2 的值,并在末尾加上逗号。
因此,输出结果是 0,4,8,12,16,。
第20题
以下是一个猜数字程序,当输入的数字大于目标数字(本程序指定为5)时,提示“大了”; 当小于时,提示“小了”; 当相等时,提示“相等”,程序退出。程序中空白处分别应填入的代码是?
A: if,break
B: else,break
C: elif,break
D: elif,continue
答案:C
第21题
执行以下语句,程序将输出?
yuan=2,3,1,4,6,5
list1=sorted(yuan)
list1
A: 报错
B: 1, 2, 3, 4, 5, 6
C: (1, 2, 3, 4, 5, 6)
D: [1, 2, 3, 4, 5, 6]
答案:D
在给定的代码中,首先定义了一个元组 yuan,其中包含数字 2、3、1、4、6、5。然后使用 sorted() 函数对元组进行排序,并将结果赋值给列表 list1。
sorted() 函数返回一个新的已排序的列表,而不会修改原始的元组。所以,list1 的值为 [1, 2, 3, 4, 5, 6]。
第22题
下列有关字典对象的说法,不正确的是?
A: 字典中的值可以是任意类型的数据
B: 字典中的每个元素包含键和值两部分
C: 在同一个字典中,键值必须互不相同
D: 可以通过字典的键找到对应的值,也可以通过值来找到对应的键
答案:D
在字典中,可以通过键来找到对应的值,但不能直接通过值来找到对应的键。字典是一种通过键快速查找值的数据结构,但并不支持通过值来直接查找键。如果需要通过值来查找键,需要使用其他的方法,例如通过遍历字典的键值对来进行查找。
第23题
以下不属于Python语言流程控制结构的是?
A: 顺序结构
B: 分支结构
C: 数据结构
D: 循环结构
答案:C
流程控制结构是用来控制程序执行顺序的一种机制,包括顺序结构、分支结构和循环结构。这些结构用于控制程序的流程,使程序能够根据条件进行分支或循环执行。
数据结构,则是用来组织和存储数据的方式,例如列表、元组、字典等。数据结构是一种数据的组织形式,与流程控制结构不同。
第24题
已知字典dict1={0:“zero”,1:“one”,2:“two”,3:“Three”},执行语句dict1[3]="three"后,字典dict1的内容为?
A: {0:“zero”,1:“one”,2:“two”,3:“Three”}
B: {0:“zero”,1:“one”,2:“two”,3:“three”}
C: {0:“zero”,1:“one”,2:“two”,“3”:three}
D: {0:“zero”,1:“one”,2:“two”,3:“Three”,3:“three”}
答案:B
在该语句中,使用键 3 更新了字典 dict1 中键 3 对应的值。原来的值是 “Three”,被更新为 “three”。
因此,字典 dict1 的内容变为 {0:“zero”,1:“one”,2:“two”,3:“three”}。
第25题
用语句mydict={‘a’:1,‘b’:2,‘c’:3,‘d’:4}定义了一个字典,以下语句中,可以输出字典键值的是?
A: print(mydict(‘c’))
B: print(mydict ‘c’)
C: mydict[‘c’]
D: print(mydict{‘c’})
答案:C
在 Python 中,可以使用方括号运算符 [] 来访问字典中特定键对应的值。通过将键放在方括号内,可以获取该键对应的值。
因此,正确的语句是 mydict[‘c’],它会输出字典 mydict 中键 ‘c’ 对应的值。
选项 A 中使用了圆括号而不是方括号,选项 B 中缺少了括号,选项 D 中使用了花括号,这些都是不正确的语法。
二、判断题(共10题,每题2分,共20分)
第26题
for-in用于在某范围内的循环,循环范围是有限的。
答案:正确
for-in 循环用于在某个范围内进行循环迭代,这个范围可以是有限的。在 Python 中,for-in 循环通常与可迭代对象一起使用,例如列表、元组、字符串等。循环会依次迭代可迭代对象中的每个元素,并执行相应的操作。
在 for-in 循环中,循环的范围是通过可迭代对象的长度或者指定的范围来确定的,因此是有限的。循环会在迭代完所有元素后结束。
第27题
元组的定义方法与列表完全相同。
答案:错误
元组的定义方法与列表并不完全相同。元组使用一对圆括号或者没有括号来定义,而不是一对方括号。
第28题
字典中的键必须是唯一的,必须是不可变数据类型,如字符串、数字或列表。
答案:错误
在字典中,键必须是唯一的,这意味着在同一个字典中,不可以有重复的键。如果尝试使用相同的键添加新的键值对,后面的值将会覆盖前面的值。
但是,字典中的键并不一定必须是不可变数据类型。事实上,字典中的键可以是任意可哈希(hashable)的数据类型。
不可变数据类型,如字符串、数字和元组,都是可哈希的,因此可以作为字典的键。但是可变数据类型,如列表和字典本身,是不可哈希的,因此不能作为字典的键。
第29题
字符串中的元素是通过索引来定位的,其中第一个元素的索引是0。
答案:正确
在字符串中,元素是通过索引来定位的。字符串中的每个字符都有一个对应的索引,用于表示它在字符串中的位置。
在大多数编程语言中,包括Python,字符串的索引是从0开始的。这意味着字符串的第一个元素的索引是0,第二个元素的索引是1,以此类推。
第30题
a=0
while a<10:
a+=1
print(a,end=" ")
打印结果最后一个数是10。
答案:正确
给定的代码段是一个循环结构,使用 while 循环来迭代执行一段代码块。初始时,变量 a 被赋值为0。
在循环的每次迭代中,首先 a 的值会递增1,然后使用 print 函数打印 a 的值,并使用 end=" " 参数指定打印结束时不换行,而是以空格作为分隔符。
由于循环的终止条件是 a<10,所以循环将一直执行,直到 a 的值达到或超过10。当 a 的值变为10时,循环条件不再满足,循环终止。
因此,最后一次循环中,a 的值为10,并且会被打印出来
第31题
Python程序的分支结构分为单分支结构、二分支结构和多分支结构,可用if语句来实现。
答案:正确
Python程序的分支结构包括单分支结构、二分支结构和多分支结构,可以使用 if
语句来实现这些结构。
单分支结构:使用 if
关键字,后面跟随一个条件表达式,当条件表达式为真时,执行相应的代码块。没有 else
部分。例如:
if condition:
# 执行语句
二分支结构:使用 if-else
结构,在 if
部分的条件表达式为真时执行相应的代码块,否则执行 else
部分的代码块。例如:
if condition:
# 执行语句1
else:
# 执行语句2
多分支结构:使用 if-elif-else
结构,可以根据多个条件进行判断,只有满足一个条件的代码块会被执行。例如:
if condition1:
# 执行语句1
elif condition2:
# 执行语句2
elif condition3:
# 执行语句3
else:
# 执行语句4
通过使用 if
语句的不同形式,可以根据条件执行不同的代码块,实现单分支、二分支和多分支结构。
第32题
表达式"abc"in [“abcdef”] 的值为True。
答案:错误
在这个表达式中,“abc” 是要检查的元素,[“abcdef”] 是一个包含一个字符串元素 “abcdef” 的列表。
由于字符串 “abc” 不是列表 [“abcdef”] 中的一个元素,所以成员运算符表达式的值为假,即为 False。
第33题
‘red’ in (‘yellow’,‘red’,‘purple’) 的结果为True。
答案:正确
在表达式 ‘red’ in (‘yellow’, ‘red’, ‘purple’) 中,我们使用了成员运算符 in 来检查字符串 ‘red’ 是否是元组 (‘yellow’, ‘red’, ‘purple’) 的成员。
由于字符串 ‘red’ 存在于元组 (‘yellow’, ‘red’, ‘purple’) 中,所以成员运算符表达式的结果为真,即为 True。
第34题
Python程序设计语言中的循环结构可用while或for语句来实现,所有的while语句均可用for语句来实现。
答案:错误
在Python程序设计语言中,循环结构可以使用 while 或 for 语句来实现,但并不是所有的 while 语句都可以用 for 语句来实现。
while 语句是一种通用的循环结构,它会在给定的条件为真时重复执行一段代码块,直到条件为假。使用 while 语句可以实现灵活的循环逻辑。
for 语句则用于遍历可迭代对象(如列表、元组、字符串等)的元素。它会按顺序遍历每个元素,并执行相应的代码块。 for 语句在迭代过程中不需要像 while 语句那样手动更新迭代变量。
虽然大部分情况下 while 循环可以转换为 for 循环,但并不是所有的 while 循环都能够用 for 循环来实现,尤其是在需要特定的条件判断或灵活的循环逻辑时。
第35题
运行下列代码后,list1的值为[‘a’,1,2,3,7]。
list1=[1,3,'a',2,7]
list1.sort()
答案:错误
当列表中既包含字符串又包含整数时,使用 sort() 方法会引发 TypeError 错误。
三、编程题(共2题,共30分)
第36题
没有重复数字的两位数统计
编写一段程序,实现下面的功能:
(1)检查所有的两位数;
(2)程序自动分析两位数上的个位与十位上的数字是否相同;相同则剔除,不同则保留(例如:12符合本要求,个位是2,十位是1,两个不相同);
(3)统计符合上面要求的两位数的个数,并且将个数最后打印出来(注意:是个数打印出来,符合要求的两位数不要求打印出来)。
答案:
以下是一个实现上述功能的Python程序示例:
count = 0 # 初始化计数器
# 检查所有的两位数
for num in range(10, 100):
units_digit = num % 10 # 个位数
tens_digit = num // 10 # 十位数
# 检查个位与十位上的数字是否相同
if units_digit != tens_digit:
count += 1 # 符合要求的两位数计数器加一
# 打印符合要求的两位数的个数
print("符合要求的两位数的个数为:", count)
这段程序使用一个 for
循环来遍历所有的两位数(从10到99)。对于每个两位数,它将提取个位数和十位数,并检查它们是否相同。如果个位数与十位数不同,则将计数器 count
加一。
最后,程序打印出符合要求的两位数的个数。
第37题
编写一段程序程序,实现输入的数字自动改为对应的星期几,如下图所示,当输入1时,输出:1 —— 星期一;当输入2时,输出:2 —— 星期二……以此类推,当输入7时,输出:7 —— 星期日。
注意,程序运行后,用户是随机输入数字1-7。
答案:
以下是使用字典实现输入数字对应星期几的Python程序示例:
weekdays = {
1: '星期一',
2: '星期二',
3: '星期三',
4: '星期四',
5: '星期五',
6: '星期六',
7: '星期日'
}
while True:
try:
num = int(input("请输入一个数字(1-7):"))
print(f"{num} —— {weekdays[num]}")
在这个示例中,我们使用一个字典 weekdays
来存储数字与星期几的对应关系。字典的键是数字(1-7),值是对应的星期几名称。