内容正文:
青少年软件编程(Python)等级考试试卷(二级)
202206真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共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
·
2、下列关于if-else中的代码块说法正确的是?( )
A. 缩进是Python分支语句的语法部分,缩进不正确会影响分支功能。
B. if语句中条件表达式可以省略不写。
C. 代码块是固定的内容,一旦写入不能修改。
D. if-else结构是不可以嵌套的。
3、下列哪个是一个合法的列表?( )
A. (114, 5, 1, 4)
B. ['114', '514']
C. "11,45,1,4"
D. {11, '4', 5, 14}
4、运行下列程序,输出的结果是?( )
list4 = ['1', '3', '5']
list4.append('7')
print(len(list4))
A. 2
B. 3
C. 4
D. 5
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()可以移除列表中的最后一个元素
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]
7、若s = ["中国", "I love you", [2022, 100]],则len(s)的值是?( )
A. 3
B. 4
C. 2002
D. "中国"
8、小明用元组a存储自己喜欢吃的水果,a = ("apple", "banana", "orange", "banana", "pear"),则a.index("banana")的值是?( )
A. 0
B. 1
C. 2
D. 3
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}
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
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']
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]
13、运行下列程序,输出的结果是?( )
for s in "HelloWorld":
if s == "W":
continue
print(s, end="")
A. World
B. Hello
C. Helloorld
D. HelloWorld
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
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))
16、运行下列程序,输出的结果是?( )
chengyu = {'四字成语': '杨柳依依', '三字成语': '风马牛', '六字成语': '一动不如一静', '四字成语': '百里挑一'}
print(chengyu)
A. {'四字成语':'杨柳依依', '三字成语':'风马牛', '六字成语':'一动不如一静', '四字成语':'百里挑一'}
B. 字典的键值对不允许重复,运行会报错
C. {'四字成语': '百里挑一', '三字成语': '风马牛', '六字成语': '一动不如一静'}
D. {'四字成语':['杨柳依依','百里挑一'], '三字成语':'风马牛', '六字成语':'一动不如一静'}
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
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)
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]
20、a = ['Welcome', 'to', 'Python', 'World', '!'],以下哪条语句无法删除列表a中的元素Python?( )
A. del a[2]
B. a.pop(2)
C. a.pop('Python')
D. a.remove('Python')
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]
22、下列说法,错误的是?( )
A. 字典的键和值可以是任何类型的Python对象
B. 字典的键是可以添加和删除的
C. 如果字典非空,那么字典每项值的都是一个键值对,格式是key:value
D. 字典可以是为空值,通常用{}表示
23、元组同列表那样可以有多个元素,但只能执行如下的哪个操作?( )
A. 修改
B. 添加
C. 读取
D. 删除
24、运行下列程序,输出的结果是?( )
s1 = 'student'
s2 = 'school'
s3 = s1 + s2
print(s3[5:9])
A. ents
B. ntsc
C. entsc
D. ntsch
25、运行下列程序,输出的结果是?( )
A. 51 15
B. 47 13
C. 49 13
D. 49 15
二、判断题(共10题,每题2分,共20分)
26、a = 0
while a < 10:
a += 0.5
print(a, end=" ")
打印结果最后的数是10.0。( )
27、字符串格式化符号%d可以输出格式化浮点数。( )
28、{'b': [4.9, 2.1], (0, 136, 97): (1.36, 11, 8), 321: {'a': 91, 55: 0}}是一个合法的字典。( )
29、continue语句不能在循环体之外使用。( )
30、在Python中,if语句必须包含else命令。( )
31、打印空列表会提示错误。()
list = []
print(list)
32、列表是用方括号[ ]表示,元组是用尖括号< >表示。( )
33、print('今天的最高气温是' + 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的长度。( )
三、编程题(共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:
> 检测结束,一共检测*人
> 红码:*人
> 黄码:*人
> 绿码:*人
>
> (说明:*代表实际统计的的数字)
37、设计一个海龟绘图程序,程序效果如下图。
要求:
(1)程序开始后,弹出对话信息“请输入边数:”,要求用户输入所要绘制的图形的边数;
(2)海龟从里往外绘制图形,逆时针旋转(向左);
(3)线条初始长度为15,相邻两条边相差5(每一个线条均比前一个线条长5);
(4)线条颜色顺序依次为红色、蓝色、橘色、绿色('red','blue','orange','green')四个颜色组成的列表(必须使用列表方式进行读取);
(5)总共边数符合输入给定的数字。
参考答案及解析:
一、单选题答案及解析
1. A
- 解析:元组切片`tup1[-1::-2]`从最后一个元素开始,步长为-2,得到`('2022', '谷爱凌')`;`sum(tup2)`计算`tup2`中所有元素的和为666。
2. A
- 解析:缩进是Python分支语句的语法部分,缩进不正确会影响分支功能,A正确。if语句中条件表达式不可以省略不写,B错误。代码块可以根据条件进行修改,C错误。if-else结构可以嵌套,D错误。
3. B
- 解析:A是元组;C是字符串;D是集合。只有B是合法的列表形式。
4. C
- 解析:列表`list4`原本有3个元素,`append('7')`后增加一个元素,长度变为4。
5. C
- 解析: A:`max(list9)`在给定列表中能正确输出最大值 114。 B:`min(list9)`可输出最小值 1。 C:`list9.index(98)`应输出索引位置 5,不是 6,此选项错误。D:`list9.pop()`能移除列表最后一个元素。答案是 C。
6. B
- 解析:`s.sort()`对列表`s`进行升序排序,结果为`[11.2, 11.4, 11.5, 11.5, 11.6, 12.0]`。
7. A
- 解析:`len(s)`计算列表`s`的长度,列表中有三个元素,值分别为“中国”、“I love you”、`[2022, 100]`,所以长度为3。
8. B
- 解析:`a.index("banana")`返回“banana”在元组`a`中第一次出现的索引,为1。
9. C
- 解析:将字典中键为“张华”的值改为162,结果为`{'王明': 178, '张华': 162, '于飞': 189, '刘英': 164}`。
10. D
- 解析:`range(1, 5, 2)`生成1、3,遍历输出1、3。
11. A
- 解析:遍历字符串,将不在列表`lis1`中的字符添加到`lis2`中,结果为`['h', 'l', 'l', ' ', 'w', 'r', 'l', 'd']`。
12. C
- 解析:`remove(3)`移除列表中第一个值为3的元素,结果为`['cat', 0, 1, 2, 4, 'tiger', 1024]`。
13. C
- 解析:当遇到字符“W”时使用`continue`跳过,继续下一次循环,输出其他字符,结果为“Helloorld”。
14. B
- 解析:`s.split('-')`将字符串以“-”分割成列表,`''.join(s)`将列表元素连接成字符串,结果为“kdkkldkdsd”。
15. B
- 解析:选项B中字符串和整数不能直接用`join`方法连接,会报错。选项A、C、D可以正确输出2022。
16. C
- 解析:字典的键必须唯一,后面的相同键会覆盖前面的,结果为`{'四字成语': '百里挑一', '三字成语': '风马牛', '六字成语': '一动不如一静'}`。
17. C
- 解析:当`i`不为0时执行循环,每次循环输出`i`并减1,结果为5、4、3、2、1。
18. A
- 解析:遍历列表,当列表元素等于1时计数器加1,A正确。B选项是判断索引是否为1;C选项`range(number)`错误;D选项是每次循环都加1,不是统计1的个数。
19. C
- 解析:列表乘以整数是重复列表,结果为`[3, 2, 5, 3, 2, 5]`。
20. C
- 解析:`pop`方法接收索引或键作为参数,不能接收字符串值,C选项错误。A选项`del`可以根据索引删除元素;B选项`pop`根据索引删除元素;D选项`remove`根据值删除元素。
21. C
- 解析:遍历字典,只输出键,结果为“语文 数学 英语 科学”。
22. A
- 解析:字典的键必须是不可变类型,不能是任何类型的Python对象,A错误。B、C、D选项说法正确。
23. C
- 解析:元组是不可变的,只能读取其中的元素,不能修改、添加或删除。
24. B
- 解析:`s3 = s1 + s2`连接两个字符串,`s3[5:9]`取从索引5到索引8的字符,结果为“ntsc”。
25. C
- 解析:代码不完整,无法准确判断输出结果,但根据选项可分析。一般来说,没有明确的运算逻辑不能确定输出一定是51、15或47、13或49、15,而49、13这个组合没有明显的错误。
二、判断题答案及解析
26. √
- 解析:在这段代码中,`a`初始值为 0,每次循环`a`增加 0.5。 当`a`变为 9.5 时,满足`a < 10`继续循环,`a`变为 10.0,此时再次判断`a < 10`不满足条件,跳出循环。 所以打印结果最后的数是 10.0,该说法正确。
27. ×
- 解析:`%d`是输出整数的格式化符号,输出格式化浮点数用`%f`等。
28. √
- 解析:字典的键可以是不可变类型如字符串、元组、整数等,值可以是任何类型,这个字典是合法的。
29. √
- 解析:`continue`语句只能在循环体中使用,不能在循环体之外使用。
30. ×
- 解析:`if`语句可以不包含`else`命令。
31. ×
- 解析:打印空列表不会提示错误,会输出`[]`。
32. ×
- 解析:元组是用小括号`()`表示,不是尖括号。
33. ×
- 解析:`'今天的最高气温是' + 35 + '度'`会报错,因为不能直接将整数和字符串相加,应该是`'今天的最高气温是' + str(35) + '度'`。
34. √
- 解析:循环遍历0到9的数字,当数字是偶数时累加,是对0~9之间的偶数相累加。
35. √
- 解析:`len(tup)`可以返回元组`tup`的长度。
三、编程题解析
36. 参考代码:
r = 0 # 红码人数初始值
y = 0 # 黄码人数初始值
g = 0 # 绿码人数初始值
while True:# 开启无限循环,等待用户输入
a = input()
if a == 'end':
# 如果输入为'end',则输出检测结束信息及各类码的人数
print('检测结束,一共检测{}人'.format(r + y + g))
print('红码:{}人
黄码:{}人
绿码:{}人'.format(r, y, g))
break
elif a == 'R':# 如果输入为'R',表示红码,红码人数加一并输出提示信息
r += 1
print('红码请到 A 区检测')
elif a == 'Y':# 如果输入为'Y',表示黄码,黄码人数加一并输出提示信息
y += 1
print('黄码请到 B 区检测')
elif a == 'G':# 如果输入为'G',表示绿码,绿码人数加一并输出提示信息
g += 1
print('绿码请到 C 区检测')
else:
# 如果输入不是上述特定值,则输出输入错误提示
print('输入错误请重新输入')
总结:这段 Python 代码用于统计红码、黄码和绿码的人数。通过不断接收用户输入,根据输入的不同字符进行相应码的人数统计,并在输入为'end'时输出检测结束信息和各类码的人数统计结果。整个程序通过循环和条件判断实现了对不同码的分类统计功能。
37.参考代码:
import turtle as t # 导入 turtle 模块并起别名 t
color = ['red', 'blue', 'orange', 'green']# 创建一个包含四种颜色的列表
n = int(input('请输入边数:'))# 接收用户输入的边数并转换为整数
t.speed(0)# 设置海龟绘图速度为最快
length = 15# 初始化线条长度为 15
for i in range(60):
# 开始一个循环,循环 60 次
t.pencolor(color[i % 4]) # 设置画笔颜色为列表中对应索引的颜色,索引通过 i%4 计算得到,实现四种颜色循环使用
t.forward(length)# 向前绘制长度为 length 的线条
t.left(360 / n)# 向左旋转 360/n 度,这里的 n 是用户输入的边数,决定了每次旋转的角度以绘制不同边数的图形
length += 5# 每次循环后增加线条长度 5
总结:这段 Python 代码使用`turtle`模块进行绘图。首先接收用户输入的边数`n`,然后设置海龟绘图速度为最快。通过一个循环绘制图形,每次循环使用不同的颜色、绘制一定长度的线条并根据边数旋转一定角度,同时不断增加线条长度。循环次数固定为 60 次,在每次循环中通过对颜色列表取余操作实现四种颜色的循环使用,从而绘制出一个由不断变长的线条组成的多变形图案,边数由用户输入决定。
学科网(北京)股份有限公司
$$