内容正文:
青少年软件编程(Python)等级考试试卷(二级)
202309真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共25题,每题2分,共50分)
1、yyh = [2023, '杭州亚运会', ['拱宸桥', '玉琮''莲叶']]
jxw = yyh[2][0]
print(jxw[1] * 2)
以上代码运行结果是?( )
A. 宸宸
B. 杭杭
C. 玉玉
D. 州州
2、阿宝在学习Python语言编程,他写了一个程序可以实现输入月份数字就可以输出2023年该月的天数。程序如下:
monthdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
m = int(input())
print('2023年' + str(m) + '月有' + str(monthdays[m]) + '天。')
要想得到2023年9月的天数,应该在终端输入的数字是?( )
A. 11
B. 10
C. 9
D. 8
3、下面这个列表中,包含几个元素?( )
list = ['a', ['bb', 'cc', 'dd'], 'e', ['ff', 'gg'], 'h']
print(list)
A. 8个
B. 5个
C. 6个
D. 4个
4、使用下列哪几个命令可以把列表list1变成列表list2?( )
list1 = ['苹果', '樱桃', '西瓜', '香蕉', '葡萄', '菠萝', '芒果', '火龙果']
list2 = ['苹果', '樱桃', '西瓜', '香蕉', '葡萄', '菠萝', '桑葚', '番石榴']
A.del list1[6:8]
list1 += ['桑葚', '番石榴']
B.del list1[6:7]
list1 += ['桑葚', '番石榴']
C.del list1[6:8]
list1.append(['桑葚', '番石榴'])
D.del list1[6:7]
list1.append(['桑葚', '番石榴'])
5、以下程序的输出结果是?( )
list = ['华东', '华西', '华南', '华北']
list.insert(2, '华中')
list.pop()
print(list)
A. ['华东', '华西', '华中', '华南', '华北']
B. ['华东', '华中', '华西', '华南', '华北']
C. ['华东', '华西', '华中', '华南']
D. ['华西', '华中', '华南', '华北']
6、下列程序运行后,输出的结果应该是哪个选项?( )
t = ('s', 'a', 'a', 'r', 5)
print(t.index('a') + t.count('a'))
A. 2
B. 3
C. 4
D. 5
7、numbers = [1, 2, 3, 4],以下哪一项可以用来访问numbers中的第三个元素?( )
A. numbers[1]
B. numbers[2]
C. numbers[3]
D. numbers[4]
8、d = {"山东": "青岛", "浙江": "杭州", "安徽": "芜湖"},请问删除d中'山东'对应的数据值的函数或方法是?( )
A. del d['浙江']
B. d.clear()
C. del d['山东']
D. d.pop(0)
9、以下关于循环的说法,不正确的是?( )
A. for循环可以用于遍历列表中的所有元素
B. while循环满足循环条件时不断地运行,直到指定的条件不满足为止
C. Python中可以使用do…while循环
D. break和continue语句都可以用在for循环和while循环中
10、执行以下程序代码
score = eval(input("请输入成绩:"))
if score > 0 and score < 60:
print("不及格")
elif score >= 60 and score <= 100:
print("及格")
else:
print("请输入正确的成绩")
当输入60时,输出结果是?( )
A. 及格
B. 不及格
C. 请输入正确的成绩
D. 60
11、下列哪个说法不正确的是?( )
A. 字典是通过key(键)来进行访问的,跟列表、元组不同
B. 字典没有头下标和尾下标,跟value对应的就只有key(键)
C. Python中可以通过重新给字典当中的key赋值的方式修改对应的value,不能通过新增key的方式来添加新的元素
D. 用Python内置函数是可以删除字典当中的元素的,整个字典也可以被清空或者删除
12、请问此程序运行后的结果是?( )
s = 1
for i in range(1, 4, 3):
s = s + i
print(s)
A. 2
B. 6
C. 1
D. 5
13、关于Python循环结构的说法,下列哪个是错误的?( )
A. Python可以通过for和while循环,实现遍历和各种循环等功能
B. break是用来跳出自己所在的整个循环体,执行循环后面的语句
C. continue结束整个循环过程,不再判断循环的执行条件,继续顺序执行循环后面的语句
D. 遍历循环中的遍历结构可以是字符串或者range()函数等
14、下面几个有关流程控制的说法,那个是错误的?( )
A. 如果条件判断语句永远为 true,循环将会无限的执行下去
B. 当判断条件为假(false) 时,循环结束
C. 在while 语句中,"判断条件"不可以是个常值
D. 执行语句可以是单个语句或语句块。判断条件可以是任何表达式等
15、运行下面的代码,输出的结果是?( )
name1 = '玛卡巴卡'
name2 = '依古比古'
name3 = '唔西迪西'
print('晚安' + name2)
A. 晚安玛卡巴卡
B. 晚安依古比古
C. 晚安唔西迪西
D. 晚安name2
16、下面代码中,不能创建一个字典的是?( )
A. d = {}
B. d = {'葡萄', 20}
C. d = {'葡萄': 20}
D. d = {'葡萄': 20, '西瓜': 12}
17、字典 d = {"苹果": "apple", "香蕉": "banana", "橘子": "orange", "桃子": "peach"} 中按键值对的形式储存了部分水果的中英文名,以下能够只输出水果英文名的语句是?( )
A. print(d.values())
B. print(d.keys())
C. print(d.items())
D.以上三个语句都无法实现
18、下列定义元组的语句,不正确的是?( )
A. tp = ( )
B. tp = ('sun')
C. tp = ('star',)
D. tp = ('sun', 'star', 'moon')
19、下列关于列表的说法,正确的是?( )
A. 列表创建后不能被修改
B. 列表中各元素的类型必须相同
C. 列表不能用下标访问
D. 通过方括号[]可以创建列表
20、已知列表animal = ['cat', 'dog', 'monkey', 'tiger', 'lion'],要想得到'cat'的输出结果,以下哪个选项的语句是不正确的?( )
A. animal[0]
B. animal[1]
C.
animal.reverse()
animal[4]
D.
animal.reverse()
animal[-1]
21、关于Python的元组类型,以下选项中描述错误的是?( )
A. 元组不可以被修改
B. Python中元组使用小括号和逗号表示
C. 元组中的元素要求是相同类型
D. 一个元组可以作为另一个元组的元素,可以采用多级索引获取信息
22、对 s = "www.baidu.com" 执行 s.split(".")后的结果是?( )
A. www.baidu.com
B. ["www", "baidu", "com"]
C. "www.baidu.com"
D. wwwbaiducom
23、下面代码运行后,输出区打印的内容是?( )
s = 0
for i in range(10):
s += 1
if i * i < 50:
break
print(s)
A. 0
B. 1
C. 7
D. 3
24、以下代码执行后输出是?( )
list0 = [5, 4, 3, 2, 2]
list0.remove(2)
list0.insert(2, 6)
print(list0)
A. [5, 4, 3, 6, 2]
B. [5, 4, 3, 2, 6]
C. [5, 4, 3, 2, 6, 2]
D. [5, 4, 6, 3, 2]
25、执行以下运算后,text2的值是?( )
text1 = "Good work"
text2 = text1[-1] * 3
A. Good work Good work Good work
B. workworkwork
C. work work work
D. kkk
二、判断题(共10题,每题2分,共20分)
26、元组一旦被创建就不能被修改。( )
27、元组和列表都属于序列类型,他们的元素都有下标,可以调用sort()函数对元组和列表中的元素重新排列。( )
28、列表是有序的,列表中可以放多个不同类型的元素,列表也可以是空的,[],[(),[]]都是空列表。( )
29、dic_1 = {'键值1': '苹果', '键值2': '葡萄', '键值3': [11, 22, 33]}
dic_1['键值4'] = '西瓜'
print(dic_1)
上述代码的功能是:在字典dic_1中添加一个键值对,'键值4': '西瓜',输出添加后的字典,其值是:{'键值1': '苹果', '键值2': '葡萄', '键值3': [11, 22, 33], '键值4': '西瓜'}( )
30、for i in range(5):
print(i)
上述代码的运行结果是( )
1
2
3
4
5
31、s = "Python";
for i in s:
print(i);
上面这个程序段,运行后输出的结果是:Python。( )
32、input() 语句输入的内容,一定是字符串类型的。( )
33、下列程序在运行过程中,变量 i 的值不可能是5。( )
for i in range(5):
print(i)
34、'abc' - 'a' 的结果是 'bc'。( )。
35、if、elif和else后面均应写明条件以便判断True或False。( )
三、编程题(共2题,共30分)
36、最小公倍数
最小公倍数是指两个或多个整数公有的倍数中,最小的那个数。例如,2 和 3 的公倍数有 6、12、18 等等,其中最小的是 6,因此 6 就是 2 和 3 的最小公倍数。
最小公倍数在数学中有广泛的应用,例如在分数的化简、约分、比较大小等问题中都需要用到最小公倍数。
请你编写一个程序,程序可以输入两个正整数,输出它们的最小公倍数。
样例输入:
请输入第一个正整数:6
请输入第二个正整数:8
样例输出:
24
37、中国电子学会主办的“全国青少年信息素养大赛”总决赛要开始了,组委会的老师要统计各个赛项报名的人数。请帮着写一个程序,实现该功能:统计时,输入各项编号表示对应的比赛:
1:Python编程挑战赛
2:开源鸿蒙主题赛
3:智慧物流挑战赛
0:表示录入完毕
要求:
一、循环执行
二、当输入错误数据,可以提示“没有此编号请重复输入”;
三、当输入0后,自动统计所有项目的参赛人数,并输出出来;如下面的案例:
输入样例:
请输入赛项编号:1
请输入赛项编号:2
请输入赛项编号:3
请输入赛项编号:2
请输入赛项编号:1
请输入赛项编号:1
请输入赛项编号:0
输出样例:
Python编程挑战赛:3人
开源鸿蒙主题赛:2人
智慧物流挑战赛:1人
参考答案及解析:
一、单选题答案及解析
1. A
- 解析:`yyh[2][0]`取到'拱宸桥',`'拱宸桥'[1]`是'宸',`'宸' * 2`为'宸宸'。
2. C
- 解析:要得到2023年9月的天数,应该输入9。
3. B
- 解析:列表中有5个元素,分别是'**a**'、['**bb**', '**cc**', '**dd**']、'**e**'、['**ff**', '**gg**']、'**h**'。
4. A
- 解析:先删除`list1[6:8]`即删除'芒果'和'火龙果',再用`+=`连接列表添加'桑葚'和'番石榴'可得到`list2`。
5. C
- 解析:`list.insert(2, '华中')`在索引2处插入'华中',`list.pop()`删除最后一个元素,结果为['华东', '华西', '华中', '华南']。
6. B
- 解析:`t.index('a')`返回'a'第一次出现的索引为1,`t.count('a')`统计'a'的个数为2,结果为1 + 2 = 3。
7. B
- 解析:列表索引从0开始,第三个元素的索引是2,所以用`numbers[2]`访问。
8. C
- 解析:删除字典中指定键对应的值用`del d[key]`,这里是`del d['山东']`。
9. C
- 解析:Python中没有`do...while`循环。
10. A
- 解析:输入60,满足`score >= 60 and score <= 100`,输出“及格”。
11. C
- 解析:Python中可以通过重新给字典当中的键赋值的方式修改对应的值,也可以通过新增键的方式来添加新的元素。
12. D
- 解析:range(1,4,3) 这个包含的数据是1,不包含4。所以:1+1=2。
13. C
- 解析:`continue`是结束本次循环,直接进入下一次循环的判断,而不是结束整个循环过程。
14. C
- 解析:在`while`语句中,“判断条件”可以是个常值,只要常值为`True`,循环就会一直执行。
15. B
- 解析:字符串连接输出“晚安依古比古”。
16. B
- 解析:`d = {'葡萄', 20}`这种形式不是字典,字典应该是键值对的形式。
17. A
- 解析:`d.values()`可以输出字典中所有的值,即水果英文名。
18. B
- 解析:`tp = ('sun')`创建的是字符串而不是元组,正确的创建单个元素元组应该是`tp = ('sun',)`。
19. D
- 解析:A选项,列表创建后可以被修改;B选项,列表中各元素的类型可以不同;C选项,列表可以用下标访问。D选项,通过方括号`[]`可以创建列表正确。
20. B
- 解析:`animal[1]`输出的是'dog',不是'cat'。
21. C
- 解析:元组中的元素可以是不同类型。
22. B
- 解析:`s.split(".")`以"."为分隔符将字符串分割成列表,结果为["www", "baidu", "com"]。
23. B
- 解析:第一次循环时,变量 s = 1,i = 0,此时 i * i < 50,break语句会终止循环,此时s 为 1。
24. D
- 解析:`remove(2)`删除第一个值为2的元素,`insert(2, 6)`在索引2处插入6,结果为[5, 4, 6, 3, 2]。
25. D
- 解析:`text1[-1]`是'k',`'k' * 3`为'kkk'。
二、判断题答案及解析
26. √
- 解析:元组一旦创建就不能被修改。
27. ×
- 解析:元组是不可变的,不能调用`sort()`函数对其元素重新排列。
28. ×
- 解析:`[]`是空列表,`[(),[]]`不是空列表。
29. √
- 解析:代码在字典中添加了一个键值对并输出添加后的字典,描述正确。
30. ×
- 解析:`range(5)`生成0、1、2、3、4,运行结果是0、1、2、3、4。
31. ×
- 解析:程序段运行后输出的结果是每个字符单独一行,不是'Python'。
32. √
- 解析:`input()`语句输入的内容,一定是字符串类型的。
33. √
- 解析:变量i的值分别会取0、1、2、3、4,不会取到5。
34. ×
- 解析:字符串不能进行减法运算,会报错。
35. ×
- 解析:`if`和`elif`后面应写明条件以便判断`True`或`False`,但`else`后面不需要写条件。
三、编程题解析
36. 参考代码:
a = int(input("请输入第一个正整数:"))
# 获取用户输入的第一个正整数并转换为整数类型赋值给变量 a
b = int(input("请输入第二个正整数:"))
# 获取用户输入的第二个正整数并转换为整数类型赋值给变量 b
# 穷举法求最小公倍数
lcm = max(a, b)
# 先将最小公倍数初始化为 a 和 b 中的较大值
while True:
# 进入无限循环
if lcm % a == 0 and lcm % b == 0:
# 如果 lcm 同时是 a 和 b 的倍数
break
# 跳出循环
lcm += 1
# 如果不是,则 lcm 自增 1,继续寻找最小公倍数
print(lcm)
# 输出找到的最小公倍数
总结:这段 Python 代码的目的是通过穷举法求出两个正整数的最小公倍数。首先,将最小公倍数初始化为两个输入正整数中的较大值。然后,通过一个无限循环不断增加最小公倍数的值,直到找到一个数同时是两个输入正整数的倍数为止。最后,输出找到的最小公倍数。这种方法虽然简单直观,但对于较大的输入数可能效率较低。
37. 参考代码:
d = {'Python编程挑战赛': 0, '开源鸿蒙主题赛': 0, '智慧物流挑战赛': 0}# 创建一个字典 d,初始时三个赛项的人数都为 0
while True:
# 进入无限循环
num = input('请输入赛项编号:')
# 获取用户输入的赛项编号
if num == '1':# 如果输入为 1
d['Python编程挑战赛'] += 1
# 对应的赛项人数加 1
elif num == '2':# 如果输入为 2
d['开源鸿蒙主题赛'] += 1
# 对应的赛项人数加 1
elif num == '3':# 如果输入为 3
d['智慧物流挑战赛'] += 1
# 对应的赛项人数加 1
elif num == '0':# 如果输入为 0
break# 跳出循环
else:
# 如果输入既不是 1、2、3 也不是 0
print('没有此编号请重新输入')
# 输出提示信息
continue
# 继续下一次循环
print('统计结果如下:')
# 输出提示信息
for i in d:
# 遍历字典 d 的键
print(i + ':' + str(d[i]) + '人')
# 输出每个赛项的名称和对应的人数
总结:这段 Python 代码实现了一个简单的赛项人数统计程序。通过一个无限循环不断接收用户输入的赛项编号,根据编号增加相应赛项的人数。如果输入为 0,则跳出循环。最后,遍历字典输出每个赛项的名称和对应的人数统计结果。
学科网(北京)股份有限公司
$$