2021年06月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里

一、单选题(共25题,每题2分,共50分)

第1题

执行下列代码后,运行结果是?

python 复制代码
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题

以下代码输出结果是?

python 复制代码
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:

python 复制代码
s.sort()
s.reverse()
print(s)

B:

python 复制代码
s.sort(reverse=True)
print(s)

C:

python 复制代码
print(sorted(s,reverse=True))

D:

python 复制代码
s.sort()
print(s)

答案:D

sort() 函数用于对原列表进行排序,reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认);sort 与 sorted 区别:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作

第6题

在Python3.5.2的IDLE交互式环境下依次输入以下程序语句后的结果是?

python 复制代码
 >>>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题

以下代码输出结果是?

python 复制代码
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值的个数共有多少个?

python 复制代码
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:

python 复制代码
while True:
a=int(input('年龄:'))
if(a>=70):
print('免费')
elif(a>60 and a<70):
print('半票')
else:
print('全票')

B:

python 复制代码
while True:
a=int(input('年龄:'))
if(a>=70):
print('免费')
elif(a>=60 and a<70):
print('半票')
else:
print('全票')

C:

python 复制代码
while True:
a=int(input('年龄:'))
if(a>70):
print('免费')
elif(a>=60 and a<70):
print('半票')
else:
print('全票')

D:

python 复制代码
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,请补充完整语句?

python 复制代码
 a = [3,5,7,6,2,8,10]
 c=[]
 for i in a:
  if _______:
     ________
 print(c)

A:

python 复制代码
i%2==0:
c.append(i)

B:

python 复制代码
i%2==0
c.extend(i)

C:

python 复制代码
i//2=1
c.append(i)

D:

python 复制代码
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题

关于下列程序理解说法正确的是?

python 复制代码
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题

下列程序的运行结果是?

python 复制代码
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题

执行下列代码后,运行结果是?

python 复制代码
 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题

执行以下语句,程序将输出?

python 复制代码
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题

python 复制代码
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 部分。例如:

python 复制代码
if condition:
    # 执行语句

二分支结构:使用 if-else 结构,在 if 部分的条件表达式为真时执行相应的代码块,否则执行 else 部分的代码块。例如:

python 复制代码
if condition:
    # 执行语句1
else:
    # 执行语句2

多分支结构:使用 if-elif-else 结构,可以根据多个条件进行判断,只有满足一个条件的代码块会被执行。例如:

python 复制代码
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]。

python 复制代码
  list1=[1,3,'a',2,7]
  list1.sort()

答案:错误

当列表中既包含字符串又包含整数时,使用 sort() 方法会引发 TypeError 错误。

三、编程题(共2题,共30分)

第36题

没有重复数字的两位数统计

编写一段程序,实现下面的功能:

(1)检查所有的两位数;

(2)程序自动分析两位数上的个位与十位上的数字是否相同;相同则剔除,不同则保留(例如:12符合本要求,个位是2,十位是1,两个不相同);

(3)统计符合上面要求的两位数的个数,并且将个数最后打印出来(注意:是个数打印出来,符合要求的两位数不要求打印出来)。

答案:

以下是一个实现上述功能的Python程序示例:

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程序示例:

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),值是对应的星期几名称。

相关推荐
魔道不误砍柴功36 分钟前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
_.Switch1 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
测开小菜鸟2 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
萧鼎3 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸3 小时前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农3 小时前
Python 继承、多态、封装、抽象
开发语言·python
Python大数据分析@4 小时前
python操作CSV和excel,如何来做?
开发语言·python·excel
黑叶白树4 小时前
简单的签到程序 python笔记
笔记·python
Shy9604184 小时前
Bert完形填空
python·深度学习·bert
上海_彭彭4 小时前
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
开发语言·python·sql·测试工具·element