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

2022年06月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试_第1张图片

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

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

第1题

运行下列程序,输出的结果是?( )

tup1 = ('苏炳添', '谷爱凌', '北京冬奥会', '2022')
tup2 = (201, 8, 4, 21, 155, 255, 22 )
print (tup1[-1::-2],sum(tup2))

A: (‘2022’, ‘谷爱凌’) 666
B: ‘2022’,‘谷爱凌’ 666
C: ‘2022’,‘北京奥运会’ 666
D: (‘2022’,)666

答案:A

本题考查元组的截取操作和求和运算,反向截取的元组tup1的全部元素,步长为2返回的值分别是’2022’,‘谷爱凌’,求和运算tup2结果为666,所以正确答案为A。

第2题

下列关于if-else中的代码块说法正确的是?( )

A: 缩进是Python分支语句的语法部分,缩进不正确会影响分支功能。
B: if语句中条件表达式可以省略不写。
C: 代码块是固定的内容,一旦写入不能修改。
D: if-else结构是不可以嵌套的。

答案:A

此题考查对条件语句的理解,代码块一定要缩进,否则会报错。if语句后面跟随条件表达式不可以省略,代码块中的程序,代码块中的程序,可随时根据需求变化更改,也同样是可以嵌套if-else语句的,故选择A。

第3题

下列哪个是一个合法的列表?( )

A: (114,5,1,4)
B: [‘114’,‘514’]
C: “11,45,1,4”
D: {11,‘4’,5,14}

答案:B

一个合法的列表应该是用方括号([])包围的一组元素。在给出的选项中,只有选项B是一个合法的列表,因为它使用了方括号并包含了一组元素。所以答案是B: [‘114’, ‘514’]。其他选项中,A使用了圆括号,C使用了双引号,D使用了花括号,它们都不符合列表的语法规则。

第4题

运行下列程序,输出的结果是?( )

list4=['1','3','5']
list4.append('7')
print(len(list4))

A: 2
B: 3
C: 4
D: 5

答案:C

append()方法给list4列表添加了一个列表项,所以len(list4)的输出结果为4

第5题

已知列表list9=[114,5,14,1,91,98,10],下列说法错误的是?( )

A: print(max(list9))可以输出列表的最大值,输出结果为114
B: print(min(list9))可以输出列表的最小值,输出结果为1
C: print(list9.index(98))可以输出数值98第一个匹配项的索引位置,输出结果为6
D: list9.pop()可以移除列表中的最后一个元素

答案:C

在给定的列表list9中,数值98的索引位置实际上是5,而不是6。列表的索引是从0开始的,所以数值98在列表中的索引位置是5,而不是6。

第6题

明将小组的50米跑步成绩存入列表s,s的值为[11.5,11.4,11.6,11.2,12.0,11.5],则执行s.sort()语句后,s的值是?( )

A: [11.5,11.4,11.6,11.2,12.0]
B: [11.2, 11.4, 11.5, 11.5, 11.6, 12.0]
C: [12.0, 11.6, 11.5, 11.5, 11.4, 11.2]
D: [11.2, 11.4, 11.5, 11.6, 12.0]

答案:B

执行s.sort()语句后,列表s将按升序进行排序。给定的列表s为[11.5, 11.4, 11.6, 11.2, 12.0, 11.5]。

第7题

若s=[“中国”,“I love you”,[2022,100]],则len(s)的值是?( )

A: 3
B: 4
C: 2022
D: “中国”

答案:A

给定列表s=[“中国”,“I love you”,[2022,100]],len(s)表示列表s的长度,即列表中元素的个数。根据给定的列表,列表s包含了三个元素,分别是"中国"、"I love you"和[2022,100]。所以len(s)的值为3。

第8题

小明用元组a存储自己喜欢吃的水果,a=(“apple”,“banana”,“orange”,“banana”,“pear”),则a.index(“banana”)的值是?( )

A: 0
B: 1
C: 2
D: 3

答案:B

给定元组a=(“apple”,“banana”,“orange”,“banana”,“pear”),a.index(“banana”)表示在元组a中查找"banana"第一次出现的索引位置。根据给定的元组,"banana"第一次出现在索引位置1处。所以a.index(“banana”)的值为1。

第9题

运行下列程序,输出的结果是?( )

d={"王明":178,"张华":158,"于飞":189,"刘英":164}
d["张华"]=162
print(d)

A: {‘王明’: 178, ‘张华’: 158, ‘于飞’: 189, ‘刘英’: 164}
B: {’ ‘张华’: 162}
C: {‘王明’: 178, ‘张华’: 162, ‘于飞’: 189, ‘刘英’: 164}
D: {‘王明’: 178, ‘张华’: 158, ‘于飞’: 189, ‘刘英’: 164, ‘张华’: 162}

答案:C

在程序中,首先创建了一个字典d,其中包含了键值对"王明":178,“张华”:158,“于飞”:189,“刘英”:164。然后,通过赋值操作d[“张华”]=162,将键"张华"对应的值更新为162。最后,使用print(d)打印字典d的内容。因此,输出的结果是{‘王明’: 178, ‘张华’: 162, ‘于飞’: 189, ‘刘英’: 164},选项C是正确的。

第10题

运行下列程序,输出的结果是?( )

for i in range(1,5,2):
       print(i)

A:

1
2
3
4
5

B:

1
2
3
4

C:

0
2
4

D:

1
3

答案:D

在程序中,使用for循环遍历range(1, 5, 2),这表示从1开始,每次增加2,直到达到5之前的数。因此,循环将迭代1和3两个值,并将其打印出来。循环结束后,没有输出4,因为循环条件指定了从1开始,每次增加2,所以不会达到4。因此,输出的结果是1和3,选项D是正确的。

第11题

运行下列程序,输出的结果是?( )

lis1=["a","e","i","o","u"]
strword='hello world'
lis2=[]
for i in strword:
    if i not in lis1:
       lis2.append(i)
print(lis2)

A: [‘h’, ‘l’, ‘l’, ’ ', ‘w’, ‘r’, ‘l’, ‘d’]
B: [‘h’, ‘l’, ‘l’, ‘w’, ‘r’, ‘l’, ‘d’]
C: [‘e’, ‘o’, ‘o’]
D: [‘e’, ‘’, ‘o’, ’ ', ‘o’]

答案:A

在程序中,lis1是包含元音字母的列表,strword是字符串"hello world"。通过for循环遍历strword中的每个字符,如果字符不在lis1中(即不是元音字母),则将其添加到lis2中。最后,打印输出lis2的内容。根据给定的字符串和列表,循环将遍历字符串中的每个字符,并将非元音字母的字符添加到lis2中。因此,输出的结果是[‘h’, ‘l’, ‘l’, ’ ', ‘w’, ‘r’, ‘l’, ‘d’],选项A是正确的。

第12题

运行下列程序,输出的结果是?( )

lt=["cat",0,1,2,3,4,"tiger",1024]
lt.remove(3)
print(lt)

A: [‘cat’, 0, 2, 4, ‘tiger’, 1024]
B: [‘cat’, 0, 1, 4, ‘tiger’, 1024]
C: [‘cat’, 0, 1, 2, 4, ‘tiger’, 1024]
D: [‘cat’, 0, 1, 2, 4, 1024]

答案:C

在程序中,首先定义了一个列表lt,其中包含了字符串、整数和一个浮点数。然后,使用lt.remove(3)语句移除列表中的元素3。最后,打印输出lt的内容。根据给定的列表,元素3在列表中的位置是索引4,移除后的列表内容为[‘cat’, 0, 1, 2, 4, ‘tiger’, 1024]。因此,输出的结果是[‘cat’, 0, 1, 2, 4, ‘tiger’, 1024],选项C是正确的。

第13题

运行下列程序,输出的结果是?( )

for s in "HelloWorld":
    if s=="W":
        continue
    print(s,end="")

A: World
B: Hello
C: Helloorld
D: HelloWorld

答案:C

在程序中,使用for循环遍历字符串"HelloWorld"中的每个字符。对于每个字符,如果字符等于"W",则使用continue语句跳过该字符,不执行下面的打印语句。如果字符不等于"W",则执行下面的打印语句,将字符打印出来。因此,循环将遍历字符串中的每个字符,除了"W"之外的字符都会被打印出来。最终,输出的结果是"Helloorld",选项C是正确的。

第14题

运行下列程序,输出的结果是?( )

s = 'kdk-kldk-dsd'
s = s.split('-')
print(''.join(s))

A: [‘kdk’, ‘kldk’, ‘dsd’]
B: kdkkldkdsd
C: kdk kldk dsd
D: kdk-kldk-dsd

答案:B

split命令可以将字符串按指定字符分割,结果是一个列表;第2行代码执行后,s中存储的是[‘kdk’,‘kldk’,‘dsd’]。join命令可以将存储着字符串的列表,使用指定字符串连接起来,所以第3行代码执行后,将列表[‘kdk’,‘kldk’,‘dsd’]中的字符串使用空字符串连接,结果是kdkkldkdsd。

第15题

a = 2
b = 0

下列不能打印出2022的是?( )

A: print(‘%d%d%d%d’ % (a, b, a, a))
B: print(‘’.join([a, b, a, a]))
C: print(“{0}{1}{0}{0}”.format(a, b))
D: print(‘%s%s%s%s’ % (a, b, a, a))

答案:B

使用join命令拼接字符串时,不能拼接整数,所以B选项错误。

第16题

运行下列程序,输出的结果是?( )

chengyu = {'四字成语':'杨柳依依', '三字成语':'风马牛', '六字成语':'一动不如一静', '四字成语':'百里挑一'}
print(chengyu)

A: {‘四字成语’:‘杨柳依依’, ‘三字成语’:‘风马牛’, ‘六字成语’:‘一动不如一静’, ‘四字成语’:‘百里挑一’}
B: 字典的键值对不允许重复,运行会报错
C: {‘四字成语’: ‘百里挑一’, ‘三字成语’: ‘风马牛’, ‘六字成语’: ‘一动不如一静’}
D: {‘四字成语’:[‘杨柳依依’,‘百里挑一’], ‘三字成语’:‘风马牛’, ‘六字成语’:‘一动不如一静’}

答案:C

在程序中,首先创建了一个字典chengyu,包含了多个键值对。然而,注意到其中有两个键都是"四字成语",即存在重复的键。在字典中,键是唯一的,如果存在重复的键,则新的键值对会覆盖旧的键值对。因此,最终字典chengyu中只保留了最后一个"四字成语"的键值对,即’四字成语’: ‘百里挑一’。其他的键值对保持不变。因此,输出的结果是{‘四字成语’: ‘百里挑一’, ‘三字成语’: ‘风马牛’, ‘六字成语’: ‘一动不如一静’},选项C是正确的。

第17题

运行下列程序,输出的结果是?( )

i = 5
while i:
    print(i)
    i = i-1 

A: 上述代码是死循环,会一直打印
B: 上述代码的打印结果是:

5
4
3
2
1
0

C: 上述代码的打印结果是:

5
4
3
2
1

D: 上述代码的打印结果是:

4
3
2
1
0

答案:C

在程序中,使用while循环来迭代变量i,只要i的值为非零(即True),循环就会继续执行。在每次循环迭代中,打印输出i的值,然后将i的值减1。循环将继续执行直到i的值为0,此时循环条件为False,循环结束。

由于初始值为5,循环将执行5次,每次打印输出i的值,并将i的值减1。因此,选项C是正确的。

第18题

想要统计数字1在列表number中出现的次数,正确的代码是?( )

A:

n = 0 
for i in range(len(number)):
    if number[i] == 1:
        n += 1
print(n)

B:

n = 0 
for i in range(len(number)):
    if i == 1:
         n += 1
print(n)

C:

n = 0 
for i in range(number):
    if number[i]==1:
        n+=1
print(n)

D:

n = 0 
for i in range(len(number)):
    n+=1
print(n)

答案:A

在代码中,使用循环遍历列表number的每个元素。通过range(len(number))生成索引值,然后通过number[i]访问列表中的元素。在每次迭代中,检查number[i]是否等于1,如果是,则将计数器n加1。最后,打印输出计数器n的值,即数字1在列表number中出现的次数。

选项A中的代码使用了正确的循环和条件判断,可以正确统计数字1在列表number中出现的次数。因此,选项A是正确的。

第19题

执行result=[3,2,5]*2语句后,result的值是?( )

A: [6,4,10]
B: [3,2,5],[3,2,5]
C: [3,2,5,3,2,5]
D: [9,4,25]

答案:C

[3,5,2]*2是将列表中的元素复制后,添加到列表中,结果是[3,2,5,3,2,5]

第20题

a=[‘Welcome’,‘to’,‘Python’,‘World’,‘!’],以下哪条语句无法删除列表a中的元素Python?( )

A: del a[2]
B: a.pop(2)
C: a.pop(‘Python’)
D: a.remove(‘Python’)

答案:C

使用pop()函数,从列表中删除并返回一个对象,pop函数的参数为空或要从列表中删除的对象的下标(索引)

第21题

运行下列程序,输出的结果是?( )

d={'语文':96,'数学':100,'英语':100,'科学':99} 
for x in d: 
    print(x,end=' ')

A: ‘语文’:96 ‘数学’:100 ‘英语’:100 ‘科学’:99
B: 96 100 100 99
C: 语文 数学 英语 科学
D: [语文’ 96 ‘数学’ 100 ‘英语’ 100,‘科学’ 99]

答案:C

在程序中,使用for循环遍历字典d的键(即科目名称)。在每次循环迭代中,将键打印出来。因此,循环将遍历字典中的每个键,并将其打印出来,以空格分隔。最终,输出的结果是语文 数学 英语 科学,选项C是正确的。

第22题

下列说法,错误的是?( )

A: 字典的键和值可以是任何类型的Python对象
B: 字典的键是可以添加和删除的
C: 如果字典非空,那么字典每项值的都是一个键值对,格式是key:value
D: 字典可以是为空值,通常用{}表示

答案:A

字典中的键必须是不可变数据类型

第23题

元组同列表那样可以有多个元素,但只能执行如下的哪个操作?( )

A: 修改
B: 添加
C: 读取
D: 删除

答案:C

元组中的元素可以通过索引进行读取,就像列表一样。可以使用索引来访问元组中特定位置的元素,但不能修改、添加或删除元组的元素。一旦创建了元组,其元素的值就不能被修改。因此,选项C是正确的,只能读取元组中的元素。

第24题

运行下列程序,输出的结果是?( )

s1='student'
s2='school'
s3=s1+s2
print(s3[5:9])

A: ents
B: ntsc
C: entsc
D: ntsch

答案:B

在程序中,首先定义了字符串变量s1和s2,分别赋值为"student"和"school"。然后,将s1和s2通过加法操作符连接起来,并将结果赋值给s3,即s3的值为"studentschool"。接下来,使用切片操作s3[5:9]来获取索引为5到8(不包括9)的子字符串。索引5对应的字符是"n",索引6对应的字符是"t",索引7对应的字符是"s",索引8对应的字符是"c"。因此,切片操作将提取出子字符串"ntsc"。最后,使用print()函数将提取的子字符串打印出来,输出的结果是"ntsc",选项B是正确的。

第25题

运行下列程序,输出的结果是?( )

sum=0
for i in range(1,15,2):
    sum=sum+i
print(sum,i)

A: 51 15
B: 47 13
C: 49 13
D: 49 15

答案:C

在程序中,通过for循环迭代range(1, 15, 2),该范围包括从1到14(不包括15)的奇数。在每次循环迭代中,将当前的奇数i加到变量sum上。最终,sum将保存所有奇数的累加和。

根据范围的设定,奇数的累加和为1 + 3 + 5 + 7 + 9 + 11 + 13 = 49。此时,循环结束时的变量i的值为最后一个迭代的值,即13。因此,输出的结果是49和13,选项C是正确的。

二、判断题(共10题,每题2分,共20分)

第26题

a=0
while a<10:
     a+=0.5
     print(a,end=" ")

打印结果最后的数是10.0。( )

答案:正确

给定的代码中,循环会终止在a的值为10.0之前。在每次循环迭代中,a以0.5的增量递增,直到达到或超过10.0为止。因此,最后打印的数将是10.0。

第27题

字符串格式化符号%d可以输出格式化浮点数。( )

答案:错误

字符串格式化符号%d是用于输出格式化整数的,而不是浮点数。当使用%d进行字符串格式化时,它期望的是一个整数值,而不是浮点数。

要输出格式化的浮点数,可以使用字符串格式化符号%f。例如,可以使用%f来格式化浮点数并指定小数位数,如%.2f表示保留两位小数的浮点数。

第28题

{‘b’:[4.9,2.1],(0,136,97):(1.36,11,8),321:{‘a’:91,55:0}}是一个合法的字典。( )

答案:正确

字典是Python中的一种数据结构,由键-值对组成,用花括号 {} 表示。

在给定的字典中,键的类型包括字符串、元组和整数,而值的类型包括列表和嵌套字典。这是合法的,字典可以包含不同类型的键和值。

第29题

continue语句不能在循环体之外使用。( )

答案:正确

continue语句用于终止当前循环的迭代,并跳过剩下的代码,开始下一次循环迭代。它只能在循环体内部使用,不能在循环体外部使用。

第30题

在Python中,if语句必须包含else命令。( )

答案:错误

在Python中,if语句并不必须包含else命令。if语句用于根据条件执行不同的代码块。可以只使用if语句,而无需添加else部分。

第31题

list=[] 
print(list) 

打印空列表会提示错误。( )

答案:错误

给定的代码片段是正确的,打印空列表不会引发错误。

第32题

列表是用方括号[ ]表示,元组是用尖括号< >表示。( )

答案:错误

元组在Python中使用小括号 () 表示,而不是尖括号 < >。

第33题

print(‘今天的最高气温是’+35+‘度’) +这个符号是起到连接的作用,所以这个代码的输出结果是:今天的最高气温是35度。( )

答案:错误

在给定的代码中,使用+符号来连接字符串是正确的,但存在一个问题。错误在于将整数35与字符串进行连接操作时,需要将整数转换为字符串类型。

第34题

下列程序是对0~9之间的偶数相累加。( )

s=0
for i in range(10):
    if i%2==0:        
        s=s+i
print(s)

答案:正确

第35题

len(tup)可以返回元组tup的长度。( )

答案:正确

程序首先初始化变量s为0,然后使用for循环遍历范围从0到9的整数。在每次循环迭代中,使用if语句检查当前数字i是否为偶数,即i是否可以被2整除。如果是偶数,则将其加到变量s上。

最后,程序打印出变量s的值,即0~9之间的偶数的累加结果。

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

第36题

学过编程的小程同学想帮助医生对核酸检测人群进行分流和统计,根据健康码的颜色分配不同的核酸检测区域:
红码:A区
橙码:B区
绿码:C区
等待核酸检测人数众多,但是具体检测人数未知,请你帮小程编写一个程序来协助医生对核酸人群进行人群分流并统计人数。要求如下:
1、字母R代表红码,字母Y代表黄码,G代表绿码:
2、程序运行后根据提示信息输入一个健康码(R、Y、G中之一),输入其他字母提示“输入错误请重新输入”;根据不同的健康码,自动返回区域信息:(红码:A区、橙码:B区、绿码:C区);
3、程序一直在重复运行,但当输入“end”表示检测结束,输出下面信息(见要求4)后程序结束运行;
4、检测结束后输出总人数和对应红码、黄码和绿码的人数。

运行案例如下:
输入样例1:
R
输出样例1:
请到A区检测

输入样例2:
Y
输出样例2:
请到B区检测

输入样例3:
G
输出样例3:
请到C区检测

输入样例4:
end
输出样例4:
检测结束,一共检测*人
红码:*人
黄码:*人
绿码:*人
(说明:*代表实际统计的的数字)

答案:

下面是根据你的要求编写的Python程序:

red_count = 0
yellow_count = 0
green_count = 0

while True:
    code = input("请输入健康码(R、Y、G)或输入“end”结束:")
    
    if code == "end":
        break
    
    if code == "R":
        print("请到A区检测")
        red_count += 1
    elif code == "Y":
        print("请到B区检测")
        yellow_count += 1
    elif code == "G":
        print("请到C区检测")
        green_count += 1
    else:
        print("输入错误,请重新输入")

total_count = red_count + yellow_count + green_count

print("检测结束,一共检测{}人".format(total_count))
print("红码:{}人".format(red_count))
print("黄码:{}人".format(yellow_count))
print("绿码:{}人".format(green_count))

这个程序使用了一个无限循环 while True,只有当输入为 “end” 时才会跳出循环。在循环中,根据输入的健康码(R、Y、G)分别输出对应的区域信息,并更新对应颜色码的人数统计。

在结束时,统计各颜色码的人数,并输出总人数和各颜色码的人数。

第37题

设计一个海龟绘图程序,程序效果如下图。
要求:
(1)程序开始后,弹出对话信息“请输入边数:”,要求用户输入所要绘制的图形的边数;
(2)海龟从里往外绘制图形,逆时针旋转(向左);
(3)线条初始长度为15,相邻两条边相差5(每一个线条均比前一个线条长5);
(4)线条颜色顺序依次为红色、蓝色、橘色、绿色(‘red’,‘blue’,‘orange’,‘green’)四个颜色组成的列表(必须使用列表方式进行读取);
(5)总共边数符合输入给定的数字。

2022年06月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试_第2张图片

答案:

下面是根据你的要求编写的海龟绘图程序:

import turtle

colors = ['red', 'blue', 'orange', 'green']

num_sides = int(input("请输入边数:"))
side_length = 15


for i in range(num_sides):
    turtle.pencolor(colors[i % 4])
    turtle.forward(side_length)
    turtle.left(90)
    side_length += 5

turtle.done()

这个程序使用了Python的turtle模块来实现海龟绘图。根据用户输入的边数,程序会逐步绘制出内到外的多边形。

程序开始后,会弹出对话框要求用户输入边数。然后,根据边数和给定的线条长度规则,使用循环绘制出多边形。每条边的长度会比前一条边长5,颜色顺序循环使用给定的四个颜色。

绘制完成后,使用turtle.done()来保持窗口的显示,直到用户关闭窗口。

你可能感兴趣的:(python,等级考试,电子学会)