内容正文:
青少年软件编程(Python)等级考试试卷(二级)
202303真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共 25 题,每题 2 分,共 50 分)
1、下列说法正确的是?( )
A. {123: 'a', 'a': 123}不是一个合法的字典
B. 数字、字符串、列表和元组都可以作为字典的键
C. {(12, 34, 'a'): 'a', 'a': 5678}是一个合法的字典
D. 字典中的内容一经创建就不能再修改
2、下列程序的运行结果是?( )
d1 = dict(age=18)
print(d1)
A. (age=18)
B. [age=18]
C. age = 18
D. {'age': 18}
3、datas = {'Name': 'XiaoMing', 'No': '1001', 'Age': '14', 'School': 'ShiYan XueXiao'},表达式len(datas)的值是?( )
A. 8
B. 6
C. 4
D. 2
4、下列哪个是一个合法的列表?( )
A. (191, 98, 1, 0)
B. "1919,810"
C. [19, 19, 8, 10]
D. {19, '19', 8, 10}
5、运行下列程序,输出的结果是?( )
list4 = ['1', 3, '5', 7, '2,3']
list4.append('7')
print(len(list4))
A. 4
B. 5
C. 6
D. 7
6、已知 list7 列表list7 = [-3, 6, 3, 7, 5, -4, 10],执行sort()方法对此列表进行排序之后,list7 列表的第二个元素是?( )
A. -2
B. -3
C. 2
D. 5
7、已知列表list9 = [11, 4, 514, 191, 9, 81, 0],下列说法错误的是?( )
A. print(min(list9))可以输出列表的最小值,输出结果为 0
B. print(max(list9))可以输出列表的最大值,输出结果为 514
C. print(list9.index(191))可以输出数值 191 第一个匹配项的索引位置,输出结果为 3
D. list9.remove()可以移除列表中的最后一个元素
8、下列说法正确的是?( )
A. '0123456'是一个长度为 6 的字符串
B. 在 Python 中,可以用乘号'*'把两个字符串连接起来
C. 'What's this?'是一个合法的字符串
D. '*'是一个合法的字符串
9、下列说法错误的是?( )
A. while 语句通常用于重复执行某一段程序
B. break 语句可以跳出 for 和 while 的循环体
C. 在 Python 中可以使用 do..while 循环
D. if 语句通常用于执行条件判断
10、运行下列程序,共计输出了几个 banana?( )
for i in range(3, 9, 3):
print("banana")
A. 1
B. 2
C. 3
D. 4
11、运行下列程序,输出的结果是?( )
x = 0; y = 0; a = 2023
for i in range(a):
if ((i % 2) == 0):
x = x - 1
else:
y = y + 1
print(x + y)
A. -1
B. 1
C. 0
D. 2023
12、已知ls = [20, 30, 50, 10, 90],以下选项中,不能删除元素 90 的是?( )
A. ls.pop(-1)
B. del ls[-1]
C. ls.remove(ls[-1])
D. ls.remove(-1)
13、下列代码的输出结果是?( )
ls = [2023, 'Happy', ['Good', 'Luck']]
print(ls[2][1])
A. Happy
B. Good
C. Luck
D. o
14、下列程序的输出结果是?(注意:0 后面是两个单引号'',并非双引号)( )
ls = [0, '', {}, None, (), [], 'empty']
print(len(ls))
A. 2
B. 3
C. 6
D. 7
15、ls = ['富强', '民主', '文明', '和谐', '自由', '平等', '公正', '法治'],下列切片结果为['和谐', '平等']的选项是?( )
A. ls[-5:-2:-2]
B. ls[-5:-2:2]
C. ls[4:-3:1]
D. ls[4:-2:2]
16、下列代码的执行结果是?( )
mylist = ['Failure', 'is', 'the', 'mother', 'of', 'success']
for x in mylist[:]:
if len(x) <= 3:
mylist.append(x)
print(mylist)
A. ['Failure', 'is', 'the', 'mother', 'of', 'success']
B. ['Failure', 'is', 'the', 'mother', 'of', 'success', 'of', 'is']
C. ['Failure', 'is', 'the', 'mother', 'of', 'success', 'is', 'of']
D. ['Failure', 'is', 'the', 'mother', 'of', 'success', 'is', 'the', 'of']
17、创建元组错误的是?( )
A. tp = ('a',)
B. tp = ('', [], 20) 备注:这里是单引号
C. tp = (25)
D. tp = 1, 2, 3
18、列表和元组都是序列对象,列表和元组的区别是?( )
A. 元组的元素只能是不可变数据类型,例如:整型、浮点型、字符串、元组
B. 元组一旦创建不可以修改
C. 列表可以切片,元组不能切片
D. 元组之间的元素不能用逗号进行分隔
19、请问下列四个表达式中,哪个表达式的值与其他三个表达式的值不同?( )
A. '字符串' + '运算'
B. ''.join(['字符串', '运算'])
C. '字符串运算' * 1
D. '字符串' - '运算'
20、Python 解释器中执行如下代码的结果是?( )
'{2},{0},{1}'.format('You', 'need', 'Python')
A. 'Python, need, You'
B. 'Python,You,need'
C. 'need,You,Python'
D. 'need,Python,You'
21、下列代码执行的结果是?( )
dic = {'聊天机器人': 'GhatGPT', '搜索引擎': '百度', '浏览器': 'Google'}
for x in dic:
print(x, end=' ')
A. GhatGPT 百度 Google
B. 聊天机器人 搜索引擎 浏览器
C. ['GhatGPT', '百度', 'Google']
D. [('聊天机器人', 'GhatGPT'), ('搜索引擎', '百度'), ('浏览器', 'Google')]
22、不能输出0~10之间所有奇数的程序是?( )
A.
a = 0
while a < 10:
if a % 2 == 0:
a = a + 1
continue
print(a, end=' ')
a = a + 1
B.
for a in range(0, 11):
if a % 2 != 1:
continue
print(a, end=' ')
C.
for a in range(0, 11):
if a % 2 == 0:
continue
print(a, end=' ')
D.
a = 0
while a < 10:
if a % 2 == 1:
break
a = a + 1
print(a)
23、程序运行时,输入 60,程序执行的结果是?( )
a = int(input())
if a < 10:
res = a + 2
elif a < 50:
res = a - 2
elif a < 80:
res = a * 2
else:
res = a // 2
print(res)
A. 62
B. 58
C. 120
D. 30
24、以下代码运行后t的值是?( )
n, t = 10, 0
while n != 0:
n = n - 1
t = t + n
A. 36
B. 45
C. 50
D. 55
25、已知元组tup2 = (114, 5, 14, 191, 9810),下列说法错误的是?( )
A. print(tup2[1:-2])可以截取元组的一部分,输出的结果为(5, 14)
B. print(tup2[2:])可以截取元组的一部分,输出的结果为(5, 14, 191, 9810)
C. print(tup2[2:3])可以截取元组的一部分,输出的结果为(14,)
D. print(tup2[3])可以访问元组的第四个元素,输出的结果为191
二、判断题(共 10 题,每题 2 分,共 20 分)
26、pop()方法可以清空列表。( )
27、元组要用方括号[]括起来。( )
28、(152, 4.06, '20&#!^*3', '4.(..$57!')是一个合法的元组。( )
29、执行print("\'he" in "\'hello world\\")的输出结果为True。( )
30、if语句的条件后面要使用花括号{}表示接下来是满足条件后要执行的语句块。( )
31、break 语句不能在循环体之外使用。( )
32、字符串和元组是不可变对象,列表和字典是可变对象。( )
33、下列程序段中循环一共执行了 6 次。( )
for i in range(10, -1, -2):
print(i)
34、if语句的表达式为空字符串、空列表、空元组、空字典和数字 0 都等价于False。( )
35、字典值可以是任何的 Python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。( )
三、编程题(共 2 题,共 30 分)
36、某快递公司对于邮寄的包裹有尺寸要求,必须满足以下条件:
每件包裹的长、宽、高之和须小于或等于 200 厘米,且任意一边长度必须小于或等于 80 厘米。(假设所有包裹都是长方体)
编写一个重复执行的程序,可以实现自动判断包裹是否符合要求。
具体要求如下:
(1)用户以厘米为单位按顺序分别输入包裹的长、宽、高(用户只输入大于零的数字,不输入长度单位,可以输入小数;分多次输入还是一次输入不做要求);
(2)程序自动判断用户输入的包裹尺寸是否满足此快递公司的要求;
(3)如果满足要求,就输出"可以邮寄";
(4)如果不满足要求,就输出"不可以邮寄";
(5)重复以上操作。
37、编写程序帮老师对英语试卷中的英文字母、数字和其他字符(注意:包括空格)进行分类并统计每种字符的数量。
输入样例:
**Welcome to 2023~!
输出样例:
字母:Welcometo,共9个
数字:2023,共4个
其它字符:** ~!,共6个
参考答案及解析:
一、单选题答案及解析
1. C
- 解析:A选项,{123: 'a', 'a': 123}是合法的字典;B选项,只有不可变类型(如数字、字符串、元组)可以作为字典的键,列表不能作为字典的键;D选项,字典中的内容可以修改。C选项中,字典的键可以是元组,值可以是整数,是合法的字典。
2. D
- 解析:`dict(age=18)`创建了一个字典,键为'age',值为18,输出结果为`{'age': 18}`。
3. C
- 解析:字典`datas`中有四个键值对,所以`len(datas)`的值是4。
4. C
- 解析:A选项是元组;B选项是字符串;D选项是集合。只有C选项是合法的列表形式。
5. C
- 解析:列表`list4`原本有5个元素,`append('7')`后增加一个元素,长度变为6。
6. B
- 解析:`sort()方法会对列表的对象进行排序,默认按从小到大的顺序排序。排序后的结果为[-4,-3,3,5,6,7,10],第二个元素是-3.
7. D
- 解析:`list9.remove()`语法错误,应该传入要移除的元素值,而不是无参数调用。A、B、C选项说法正确。
8. D
- 解析:A选项,'0123456'是一个长度为7的字符串;B选项,在 Python 中,不能用乘号'*'把两个字符串连接起来;C选项,'What's this?'字符串中包含单引号,会导致语法错误。D选项,'*'是一个合法的字符串。
9. C
- 解析:Python 中没有`do..while`循环。A选项,`while`语句通常用于重复执行某一段程序;B选项,`break`语句可以跳出`for`和`while`的循环体;D选项,`if`语句通常用于执行条件判断。
10. B
- 解析:`range(3, 9, 3)`生成3、6,遍历输出两次"banana"。
11. A
- 解析:通过观察代码可以发现,当a为大于0的奇数时,x与y的和始终等于-1,当a为大于0的偶数时,x与y的和始终等于0。因为2023是奇数,所以答案为-1.
12. D
- 解析:`ls.remove(-1)`会报错,因为列表中没有值为-1的元素。A、B、C选项都可以删除元素90。
13. C
- 解析:`ls[2][1]`表示访问列表`ls`中索引为2的元素(即`['Good', 'Luck']`),再取这个列表中的索引为1的元素,结果为'Luck'。
14. D
- 解析:ls = [0, '', {}, None, (), [], 'empty']这个列表中一共有 7 个元素,分别是数字 0、空字符串、空字典、None、空元组、空列表和字符串 'empty'。len(ls)函数用于计算列表的长度,所以输出结果为 7,答案是 D。
15. B
- 解析:A 选项ls[-5:-2:-2],从后往前以步长为 -2 切片,得不到 [' 和谐 ', ' 平等 ']。
B 选项ls[-5:-2:2],从索引 -5 到索引 -2(不包括 -2),步长为 2,得到 [' 和谐 ', ' 平等 ']。
C 选项ls[4:-3:1],得不到 [' 和谐 ', ' 平等 ']。
D 选项ls[4:-2:2],得不到 [' 和谐 ', ' 平等 '],答案是 B。
16. D
- 解析:此题循环获取列表mylist的全切片后判断每个元素的长度,长度小于并等于3时,添加到mylist中,因此结果为['Failure', 'is', 'the', 'mother', 'of', 'success', 'is', 'the', 'of'].
17. C
- 解析:创建元组时,如果只有一个元素,需要在元素后添加逗号,选项C创建的是整数25,不是元组。A、B、D选项都是正确的创建元组的方式。
18. B
- 解析:元组一旦创建不可以修改,A选项元组的元素可以是不可变数据类型,但不是只能是这些类型;C选项元组也可以切片;D选项元组之间的元素可以用逗号进行分隔。
19. D
- 解析:A选项和B选项都是字符串连接操作;C选项是重复字符串一次;D选项字符串不能进行减法运算,会报错。
20. B
- 解析:`'{2},{0},{1}'.format('You', 'need', 'Python')`根据索引进行格式化,结果为'Python,You,need'。
21. B
- 解析:遍历字典,只输出键,结果为“聊天机器人 搜索引擎 浏览器”。
22. D
- 解析:选项D中`if a % 2 == 1:`时就`break`跳出循环了,不能输出0~10之间所有奇数。A、B、C选项都能输出0~10之间所有奇数。
23. C
- 解析:输入60,满足`a < 80`条件,执行`res = a * 2`,结果为120。
24. B
- 解析:循环中每次`n`减1,`t`加上当前的`n`,从10到1依次累加,结果为45。
25. B
- 解析:print(tup2[2:])可以截取元组的一部分,输出的结果为(14,191,9810)
二、判断题答案及解析
26. ×
- 解析:`pop()`方法是移除列表中的一个元素并返回该元素的值,不能清空列表。`clear()`方法可以清空列表。
27. ×
- 解析:元组是用小括号`()`括起来,列表是用方括号`[]`括起来。
28. √
- 解析:元组可以包含不同类型的元素,这个元组是合法的。
29. √
- 解析:`'\'he' in '\'hello world\\'`判断字符串`'\'he'`是否在`'\'hello world\\'`中,是存在的,所以输出结果为`True`。
30. ×
- 解析:`if`语句的条件后面用冒号`:`表示接下来是满足条件后要执行的语句块,不是花括号`{}`。
31. √
- 解析:`break`语句只能在循环体中使用,不能在循环体之外使用。
32. √
- 解析:字符串和元组是不可变对象,一旦创建不能修改其内容;列表和字典是可变对象,可以修改其内容。
33. √
- 解析:`range(10, -1, -2)`生成10、8、6、4、2、0,循环一共执行了6次。
34. √
- 解析:在 Python 中,空字符串、空列表、空元组、空字典和数字 0 在条件判断中都等价于`False`。
35. √
- 解析:在 Python 中,字典的键必须是可哈希的对象,通常为不可变类型,如整数、字符串、元组(其中的元素也必须是不可变类型)等;而字典的值可以是任何 Python 对象,包括标准对象和用户自定义对象。
三、编程题解析
36. 参考代码:
while True:
# 创建一个无限循环,使程序可以不断重复运行
a = float(input('请输入长(厘米):'))
# 获取用户输入的长度值,并转换为浮点数类型赋值给变量 a
b = float(input('请输入宽(厘米):'))
# 获取用户输入的宽度值,并转换为浮点数类型赋值给变量 b
c = float(input('请输入高(厘米):'))
# 获取用户输入的高度值,并转换为浮点数类型赋值给变量 c
sum = a + b + c
# 计算长、宽、高之和,赋值给变量 sum
if sum <= 200 and a <= 80 and b <= 80 and c <= 80:
# 判断长、宽、高之和是否小于等于 200,并且长、宽、高各自是否小于等于 80
print('可以邮寄')
# 如果满足条件,输出可以邮寄
else:
print('不可以邮寄')
# 如果不满足条件,输出不可以邮寄
总结:这段 Python 代码实现了一个不断重复的程序,要求用户输入的包裹长、宽、高(单位为厘米),然后计算长、宽、高之和,并判断是否满足满足快递公司的尺寸要求即总和小于等于 200 且长、宽、高各自小于等于 80 的条件。如果满足条件,输出“可以邮寄”;否则,输出“不可以邮寄”。通过无限循环,用户可以多次输入不同的尺寸进行判断。
37. 参考代码:
s = input()
# 获取用户输入的字符串并赋值给变量 s
letter = ''
# 创建一个空字符串 letter,用于存储字母
number = ''
# 创建一个空字符串 number,用于存储数字
other = ''
# 创建一个空字符串 other,用于存储其他字符
for i in s:
# 遍历用户输入的字符串 s 中的每个字符 i
if i >= 'a' and i <= 'z' or i >= 'A' and i <= 'Z':
# 如果字符 i 是小写字母(a 到 z)或者大写字母(A 到 Z)
letter += i
# 将字符 i 添加到 letter 字符串中
elif i >= '0' and i <= '9':
# 如果字符 i 是数字(0 到 9)
number += i
# 将字符 i 添加到 number 字符串中
else:
# 如果字符 i 既不是字母也不是数字
other += i
# 将字符 i 添加到 other 字符串中
print('字母:{},共{}个'.format(letter, len(letter)))
# 输出字母及其数量,使用 format 方法格式化输出字符串
print('数字:{},共{}个'.format(number, len(number)))
# 输出数字及其数量
print('其它字符:{},共{}个'.format(other, len(other)))
# 输出其他字符及其数量
总结:这段 Python 代码的功能是对用户输入的字符串进行分类,将其中的字母、数字和其他字符分别存储到不同的字符串中,并统计每种类型字符的数量,最后输出分类结果和数量。通过遍历输入字符串中的每个字符,根据字符的范围判断其类型,然后进行相应的处理。
学科网(北京)股份有限公司
$$