真题与解析 202406二级 青少年软件编程(Python)考级
青少年软件编程(Python)等级考试试卷(二级)
202406真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共25题, 共50分)
1. 列表 fruit = ['西瓜', '菠萝', '哈密瓜', '葡萄'],以下哪个选项,可以获取列表最后一个元素?( )
(2分)
A fruit[len(fruit)]
B fruit[len(fruit) – 1]
C fruit[len(fruit) + 1]
D fruit[0]
2. 初唐四杰是指唐朝初期的四位文学家,分别是王勃、杨炯、卢照邻和骆宾王。 目前列表 names 如下:
names = ['王勃', '杨炯', '白居易', '卢照邻', '骆宾王']
列表中多了一位不是初唐四杰的文学家,
以下哪个选项可以删除列表中的这位诗人?( )
(2分)
A names.pop()
B names.pop(1)
C names.pop(2)
D names.pop(3)
3. 小明在语文课学习了一个新成语:'从善如流';形容能迅速而顺畅地接受别人的正确意见,执行以下语句,终端区会打印什么内容?( )(2分)
idiom = '从善如流'for i in idiom:
print(i)
A 从善如流
B
从
善
如
流
C
从善如流
从善如流
从善如流
从善如流
D
i
i
i
i
4. my_tuple = (1, 2, 3, 4, 5) print(my_tuple[::-2]) 以上代码的输出是?( )
(2分)
A (1, 3, 5)
B (1, 2, 3, 4, 5)
C (5, 3, 1)
D (5, 4, 3, 2, 1)
5. 执行如下代码,输出结果是?( )
tuple = ('q', 'i', 'n', 'g', 'd', 'a', 'o', '1024')
print(max(tuple) + min(tuple))
A 1024 q
B 1024q
C q 1024
D q1024
6. for var in :
print(var)
哪个选项不符合上述程序空白处的语法要求?( )
(2分)
A range(0,10)
B (1, 2, 3)
C a>5
D "Wulaoshi"
7. 执行以下代码后,列表ls的元素个数多少个?( )
ls=[1,2,3,['a',"b"]]
ls.append(5)
ls[3].append(6)
A 6
B 5
C 4
D 7
8. 已知xs=(5,'女','北京大学'),该如何定义字符串geshi,才能在执行print(geshi%xs)后得到如下的运行结果?( )
学号:000005 性别:女 学校名称: 北京大学
A geshi='学号:%6d\t性别:%s\t学校名称: %s'
B geshi='学号:%06s\t性别:%s\t学校名称: %s'
C geshi='学号:%06d\t性别:%s\t学校名称: %s'
D geshi='学号:%6d\t性别:%d\t学校名称: %d'
9. 小圆同学想要创建空列表P,他可以通过以下哪条语句实现?( )
A P={}
B P=()
C P=[]
D P=""
10. ls1=[5,2,0,1,4,11,66,38],以下哪种函数或方法可实现列表ls1元素从大到小的排序?( )
A ls1.sort()
B ls1.sort(reverse=True)
C sorted(ls1)
D ls1.reverse()
11. 中国电子学会等级考试的官方网址是https://www.qceit.org.cn,用户可以通过注册账号和密码登入网站。不同用户的账号是不同的,但同一用户的账号和密码是一一对应的,最好采用以下哪种数据结构存储账号和密码的对应关系?( )
A 元组
B 字典
C 列表
D 字符串
12.month={1:'Jan',2:'Feb',3:'Mar',4:'Apr',5:'May',6:'Jun',7:'Jul',8:'Aug',9:'Sep',10:'Oct',11:'Nov',12:'Dec'},month[2]的值是?( )
A 'Mar'
B 3:'Mar'
C 2:'Fed'
D 'Feb'
13. 以下程序段运行后打印的结果是?( )
tp=('牢记历史', '不忘过去', '珍爱和平', '开创未来')
tq='山河已无恙','吾辈当自强'
new=tp+tqprint(new)print(len(new))
A ('牢记历史', '不忘过去', '珍爱和平', '开创未来','山河已无恙','吾辈当自强')
6
B ('牢记历史', '不忘过去', '珍爱和平', '开创未来','山河已无恙','吾辈当自强')
5
C ('牢记历史', '不忘过去', '珍爱和平', '开创未来','山河已无恙','吾辈当自强')
7
D 程序运行时错误
14. 下列哪个程序不会陷入死循环?( )
A false=‘false’
while false:
print(该程序已经进入死循环!’)
B while 0:
print(该程序已经进入死循环!’)
C while 1<2:
print(该程序已经进入死循环!’)
D while 1:
print(该程序已经进入死循环!’)
15. 以下程序段执行后绘制出的图形是?( )
A
B
C
D
16. 执行语句print(list(range(1,5)))的输出结果是?( )
A [1, 2, 3, 4]
B [1, 2, 3, 4, 5]
C 1, 2, 3, 4
D 1, 2, 3, 4, 5
17. 以下各个选项中的Python语句执行的循环次数与其他不同的是?( )
A for i in range(10):
print(i)
B fori in range(10,0,-1):
print(i)
C i=0
while (i<=10):
print(i)
i=i+1
D i=10
while (i>0):
print(i)
i=i-1
18. 运行下列程序,输出的结果是?( )
s = '抽刀断水水更流。'print(s.replace('水', '#'))
A 抽刀断水水更流。
B 抽刀断更流
C 抽刀断##更流。
D 抽刀断#水更流。
19. 运行以下程序,输出结果为?( )
s = 0
l = [1, 2, 3, 4, 5]for i in l:
if i == 2:
continue
if i == 4:
break
s = s + iprint(s)
A 15
B 13
C 4
D 10
20. 要想把字符串 s = 'abc' 转换成列表类型,以下选项中哪个命令是正确的?( )
A str(s)
B int(s)
C float(s)
D list(s)
21. 下列选项中,关于sort()和sorted()函数说法错误的是?
A sort()函数是在原内存地址上进行排序,会改变原列表的值
B sorted()函数是在原内存地址上进行排序,会改变原列表的值
C sorted()函数会生成一个新的已排序列表,不会改变原列表的值
D sort()函数默认是按照从小到大的顺序进行排序
22. 小明将自己的考试成绩保存到字典(dictionary)中,如下所示:
dict1 = {'语文':90,'数学':95,'英语':98}
经过核对发现数学少加了2分,现在想修改字典中的数学成绩为97, 下列哪个程序可以实现此功能?( )
A dict1[1] = 97
B dict1[1][‘数学’] = 97
C else
D dict1['数学'] = 97
23. 定义字典 dict1 = {'姓名':'王小明', '性别':'男','身高':'150cm', '体重':'40kg'} 保存了小明的个人信息, 输入如下程序并执行后, dict1['爱好'] = '篮球'
dict1['体重'] = '42kg'
del dict1['性别']
请问字典dict1中的内容为?( )
A {'姓名':'王小明', '性别':'男','身高':'150cm', '体重':'40kg'}
B {'姓名':'王小明', '性别':'男','身高':'150cm', '体重':'40kg', '爱好': '篮球'}
C {'姓名':'王小明', '身高': '150cm', '体重': '40kg', '爱好': '篮球'}
D {'姓名':'王小明', '身高': '150cm', '体重': '42kg', '爱好': '篮球'}
24. 小明用Python编写了一个狗狗与人类年龄的转化程序如下, 假设小明家狗狗现在4岁,请问相当于人类年龄几岁?( )
A 14
B 22
C 31
D 32
25. 如果有一个列表fruits = ['苹果', '香蕉', '樱桃'],小明想在'香蕉'和'樱桃'之间添加一个新的水果'桔子',他应该怎么做?( )
A fruits.append('桔子')
B fruits.insert(1, '桔子')
C fruits.insert(2, '桔子')
D fruits.add('桔子')
二、判断题(共10题, 共20分)
26. 元组和列表都属于序列类型,它们的元素都有下标,元素和长度都是可变的。( )
27.while()无限循环常常与if条件结构和break语句结合起来使用。( )
28.元组的元素不能被修改。( )
29.在Python中,for循环与while循环都可以用于遍历序列(如列表、元组、字符串等)中的元素。( )
30.已知score=93.2,那么代码 print("本次数学期末考试,本班平均分为%d" % (score)) 的写法是正确的。( )
31.字典的主要操作是依据键来存储和读取值。( )
32.while循环不断地运行,直到指定的条件满足为止。( )
33.使用min()函数可以找到字符串中最大的字符。( )
34.列表(list)是一个存储空间,可以存储一个元素,也可以存储多个元素。( )
35. 要检查两个人的年龄都不小于21岁,可以使用下面的条件语句。( )
age_0 = 22
age_1 = 18
if age_0 >= 21 and age_1 >= 21:
print('两个人年龄都不小于21岁!')
三、编程题(共2题, 共30分)
36. 成绩分级(15分)
期末数学考试满分为100分,需要将同学们的得分转换为A、B、C、D等级的形式进行期末素质考核评估,大于等于90分为A,大于等于80分小于90分为B,大于等于60分小于80分为C,小于60分为D,现在请编写一段程序,当输入成绩时(成绩为整数),程序能给出相应的等级,并且可循环输入成绩,直至输入字符“E”时结束程序。
37 飞花令(15分)
“飞花令”是中国人在饮酒时的一种助兴游戏,飞花令名字起源于诗词之中,因唐代诗人韩翃的《寒食》“春城无处不飞花”而得名。飞花令的规则是,参与者轮流说出含有特定字的诗句,这些字通常都是事先约定的,称为“雅令”,如“花”、“春”等。请用Python程序来实现飞花令。
功能实现:
(1)程序开始运行时,提示用户输入本局雅令,即约定好的关键字;
(2)输入完雅令后,回车后进入后面的输入诗句环节,
(3)提示用户输入含有雅令的诗句,诗句长度为5个字或者7个字;
(4)多个句子答案用" 、"分隔,并且将每一句转换成列表中的元素;
(5)回车代表结束诗句输入;
(6)统计雅令出现的次数,雅令出现一次计一分;
(7)格式化输出最后得分。
输入输出样例:
参考答案及解析:
一、单选题答案及解析
1. B
– 解析:列表索引从0开始,`len(fruit)`表示列表长度,`fruit[len(fruit)-1]`可以获取列表最后一个元素。A选项会超出列表索引范围;C选项也超出列表索引范围;D选项是获取列表第一个元素。
2. C
– 解析:列表`names`中“白居易”在索引2处,所以删除他应该使用`names.pop(2)`,C选项正确。
3. B
– 解析:循环遍历字符串,每次输出一个字符,所以会输出“从善如流”每个字符分别占一行。
4. C
– 解析:元组切片`[::-2]`表示从后向前,步长为2,结果为(5, 3, 1)。
5. D
– 解析:元组中的字符可以比较大小,`max(tuple)`为'q',`min(tuple)`为'1024',输出结果为'q1024 '。
6. C
– 解析:`for`循环可以遍历可迭代对象,A选项`range(0,10)`是可迭代的整数序列;B选项元组是可迭代对象;D选项字符串是可迭代对象;C选项`a>5`不是可迭代对象。
7. B
– 解析:列表`ls`原本有4个元素,`append(5)`后增加一个元素,`ls[3].append(6)`在列表中的子列表中增加一个元素,所以总共有5个元素。
8. C
– 解析:格式化字符串中`%06d`表示输出6位整数,不足6位前面补0;`%s`表示输出字符串。所以`geshi='学号:%06d\t性别:%s\t学校名称: %s'`可以在执行`print(geshi%xs)`后得到正确结果。
9. C
– 解析:创建空列表用`[]`,A选项`{}`创建字典;B选项`()`创建元组;D选项`""`创建空字符串。
10. B
– 解析:`ls1.sort(reverse=True)`可以实现列表`ls1`元素从大到小的排序;A选项`ls1.sort()`是从小到大排序;C选项`sorted(ls1)`返回一个新的已排序列表,不改变原列表;D选项`ls1.reverse()`只是反转列表,不是从大到小排序。
11. B
– 解析:字典可以存储键值对,适合存储账号和密码的对应关系。元组不可变且不适合存储这种对应关系;列表和字符串也不适合。
12. D
– 解析:字典通过键访问值,`month[2]`的值是'Feb'。
13. A
– 解析:元组拼接后得到新的元组,长度为6,输出结果为('牢记历史', '不忘过去', '珍爱和平', '开创未来','山河已无恙','吾辈当自强'),长度为6。
14. B
– 解析:答案是B。 分析如下: A选项,这里`false`被赋值为字符串`'false'`,在 Python 中,非空字符串被视为真值,所以这个循环会陷入死循环。 C选项,`1<2`为真,循环会一直执行,陷入死循环。 D选项,`while 1`中,1被视为真值,循环会一直执行,陷入死循环。 B选项,`while 0`,0被视为假值,循环条件不成立,不会进入循环体,不会陷入死循环。
15. B
– 解析:段代码会生成三个等边三角形组成的图案,且三个三角形的颜色分别为橙色、绿色和粉色。
16. A
– 解析:`range(1,5)`生成1、2、3、4,`list(range(1,5))`转换为列表为[1, 2, 3, 4]。
17. C
– 解析:分析如下: A选项`for i in range(10)`会从0到9循环10次。 B选项`for i in range(10, 0, -1)`是从10到1进行循环,循环10次。 C选项`i = 0; while (i <= 10)`,从0到10循环11次。 D选项`i = 10; while (i > 0)`,从10到1循环10次。 所以C选项的循环次数与其他不同。
18. C
– 解析:`s.replace('水', '#')`将字符串中的“水”替换为“#”,结果为“抽刀断##更流。”。
19. C
– 解析:循环中遇到2时`continue`跳过本次循环,遇到4时`break`跳出循环,所以`s = s + i`执行了1+3,结果为4。
20. D
– 解析:`list(s)`可以将字符串`s`转换成列表类型;A选项`str(s)`将对象转换为字符串;B选项`int(s)`将字符串转换为整数(如果字符串内容可以转换为整数);C选项`float(s)`将字符串转换为浮点数(如果字符串内容可以转换为浮点数)。
21. B
– 解析:`sort()`函数是在原内存地址上进行排序,会改变原列表的值;`sorted()`函数会生成一个新的已排序列表,不会改变原列表的值。
22. D
– 解析:修改字典中的值使用`字典名[键]=新值`,所以`dict1['数学'] = 97`可以实现此功能。
23. D
– 解析:执行`dict1['爱好'] = '篮球'`添加键值对,`dict1['体重'] = '42kg'`修改体重,`del dict1['性别']`删除性别键值对,结果为{'姓名':'王小明', '身高': '150cm', '体重': '42kg', '爱好': '篮球'}。
24.D
– 解析:如果小明家狗狗现在 4 岁,执行的是 age > 2 的分支。人类年龄 human = 22 + (4 – 2) * 5 = 22 + 2 * 5 = 22 + 10 = 32。所以相当于人类年龄 32 岁。
25. C
– 解析:`fruits.insert(2, '桔子')`可以在列表索引2处(即“香蕉”和“樱桃”之间)添加新元素“桔子”;A选项`fruits.append('桔子')`在列表末尾添加;B选项`fruits.insert(1, '桔子')`在“苹果”和“香蕉”之间添加;D选项列表没有`add`方法。
二、判断题答案及解析
26. ×
– 解析:元组的元素和长度是不可变的,列表的元素和长度是可变的。
27. √
– 解析:`while()`无限循环常常与`if`条件结构和`break`语句结合起来使用,以便在满足特定条件时跳出循环。
28. √
– 解析:元组是不可变的,元组的元素不能被修改。
29. √
– 解析:在 Python 中,`for`循环与`while`循环都可以用于遍历序列(如列表、元组、字符串等)中的元素。
30. ×
– 解析:`score=93.2`是浮点数,`%d`是格式化输出整数,应该使用`%f`或`%.2f`等格式化输出浮点数。
31. √
– 解析:字典的主要操作是依据键来存储和读取值。
32. ×
– 解析:`while`循环满足循环条件时不断地运行,直到指定的条件不满足为止。
33. ×
– 解析:使用`max()`函数可以找到字符串中最大的字符,但不能用`min()`函数找到最大字符,且通常是根据字符的 ASCII 值进行比较。
34. √
– 解析:列表(list)是一个存储空间,可以存储一个元素,也可以存储多个元素。
35. ×
– 解析:`age_1 = 18`不满足条件,所以不能输出“两个人年龄都不小于21岁!”。
三、编程题解析
36. 参考代码:
while True:
# 进入一个无限循环,持续接收用户输入
score = input("请输入成绩(输入'E'结束程序):")
# 获取用户输入的成绩或结束指令
if score == 'E':
# 如果用户输入'E',表示要结束程序
break
else:
# 如果不是'E',则尝试将输入转换为整数类型的成绩
score = int(score)
if score >= 90:
# 如果成绩大于等于 90 分,输出等级'A'
print("A")
elif score >= 80:
# 如果成绩大于等于 80 分且小于 90 分,输出等级'B'
print("B")
elif score >= 60:
# 如果成绩大于等于 60 分且小于 80 分,输出等级'C'
print("C")
else:
# 如果成绩小于 60 分,输出等级'D'
print("D")
总结:这段 Python 代码实现了一个成绩等级转换程序。程序通过一个无限循环不断接收用户输入的成绩,当用户输入'E'时,程序结束。对于输入的成绩,程序根据不同的分数范围将其转换为对应的等级(A、B、C、D)并输出。
37. 参考代码:
keyword = input("请输入本局雅令:")
# 获取用户输入的本局关键字(雅令)
print("现在请输入含有雅令的诗句,诗句长度为 5 个字或者 7 个字,多个句子答案用' 、'分隔,回车代表结束诗句输入。") # 给出输入诗句的提示信息
poems = input().split(" 、")
# 获取用户输入的诗句,以" 、"进行分割,存储在列表 poems 中
score = 0
# 初始化得分变量为 0
for poem in poems:
count = poem.count(keyword)
# 统计当前诗句中雅令出现的次数
score += count
# 将当前诗句中的雅令次数累加到总得分中
print(f"最后得分为:{score}分。")
# 格式化输出最后得分
总结:这段 Python 代码实现了一个简单的飞花令程序。首先让用户输入本局的雅令关键字,然后提示用户输入含有该雅令的诗句,用户可以输入多个诗句并用" 、"分隔。程序将用户输入的诗句分割成列表,然后遍历这个列表,统计每个诗句中雅令出现的次数,并将这些次数累加起来得到总得分,最后格式化输出得分结果。
作者:晴朗向上