内容正文:
青少年软件编程(Python)等级考试试卷(二级)
202309真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共25题,共50分)
1. a = ['甲','乙','丙','丁','子','丑']
print(a[4])
以上代码的输出是?( )
A. 丁
B. ['丁']
C. ['子']
D. 子
2. 语句",".join("新年快乐")的运行结果是?( )
A. '新,年,快,乐'
B. '新年快乐'
C. '新 年 快 乐'
D. '新、年、快、乐'
3. 语句"I like program".replace("m","mming") 的运行结果?( )
A. 'I like program'
B. 'I like programming'
C. 'I like programing'
D. "I like programmming"
4. ls = ['a', 'b', 'c', 'd', 'e'],下列哪个选项可以将 ls 中的元素顺序整体反转?( )
A. ls.insert('f')
B. ls.extend('f')
C. ls.reverse()
D. ls.add('f')
5. 已知 stu = {"一班":"杨思甜", "二班":"赵柏瑞", "三班":"王一乐", "四班":"刘道林"},则输出所有班级及对应姓名(键值对)的命令是?( )
A. print(stu.keys())
B. print(stu.values())
C. print(stu.items())
D. print(stu.clear())
6. 运行下列代码,终端区打印的结果是?( )
shiju=["众鸟高飞尽,孤云独去闲",'言我独坐之时',"湖光秋月两相和"]
shiju.remove("潭面无风镜未磨")
print(shiju)
A. ["众鸟高飞尽,孤云独去闲",'言我独坐之时',"湖光秋月两相和","潭面无风镜未磨"]
B. ["众鸟高飞尽,孤云独去闲",'言我独坐之时',"湖光秋月两相和"]
C. ['众鸟高飞尽,孤云独去闲','言我独坐之时', '湖光秋月两相和']
D. 终端区会报错
7. 已知一个元组planet=('地球',46,('化石','岩石'),["金星","水星","木星","天王星"]) ,要访问元组planet的前3个元素,可以使用以下代码?( )
A. print(planet[1:3])
B. print(planet[:3])
C. print(planet[1:3:2])
D. print(planet[::3])
8. 以下选项中,哪段代码不能实现循环10次?(提醒:是不能实现)( )
A. for i in range(10):
B. for i in range(1,20,2):
C. for i in range(1,20):
i=i+2
D. i=0
while i<10:
i=i+1
9. ls1=['榴莲','芒果','椰子','杨桃','柠檬','百香果','橄榄','木瓜']
ls1.append(['枇杷','火龙果'])
print(ls1)
以上代码输出的结果是?( )
A. ['榴莲','芒果','椰子','杨桃','柠檬','百香果','橄榄','木瓜']
B. ['榴莲','芒果','椰子','杨桃','柠檬','百香果','橄榄','木瓜',['枇杷','火龙果']]
C. ['榴莲','芒果','椰子','杨桃','柠檬','百香果','橄榄','木瓜','枇杷','火龙果']
D. ['榴莲','芒果','椰子','杨桃','柠檬','百香果','橄榄','木瓜','枇杷',['火龙果']]
10. 藏头诗,又名“藏头格”,是杂体诗中的一种。藏头诗有三种形式,比较常见的是把每句的第一个字连起来读,可以传达作者的某种特有思想。例如明代徐渭经典的藏头诗,就将“平湖秋月”藏于诗中。阿宝尝试编写程序,将“平湖秋月”从诗中自动提取出来,以下程序正确的是?( )
A.ls=['平湖一色万顷秋','湖光渺渺水长流','秋月圆圆世间少','月好四时最宜秋']
print(ls[0]+ls[1]+ls[2]+ls[3])
B.ls=['平湖一色万顷秋','湖光渺渺水长流','秋月圆圆世间少','月好四时最宜秋']
print(ls[0][0]+ls[1][0]+ls[2][0]+ls[3][0])
C.ls=['平湖一色万顷秋','湖光渺渺水长流','秋月圆圆世间少','月好四时最宜秋']
print(ls[0][1]+ls[0][2]+ls[0][3]+ls[0][4])
D.ls=['平湖一色万顷秋','湖光渺渺水长流','秋月圆圆世间少','月好四时最宜秋']
print(ls[0][0]+ls[1][1]+ls[2][2]+ls[3][3])
11. 以下程序运行的结果是?( )
i=0
s=0
while i<7:
i=i+1
if i%2==0:
continue
s=s+i
print('s={},i={}'.format(s,i))
A. s=16,i=7
B. s=16,i=6
C. s=9,i=6
D. s=9,i=7
12. 运行这段代码,终端区会打印什么结果?( )
nums = (1, 2, 3)
nums[2] = 5
print(nums)
A. (1, 2, 3)
B. (1, 2, 5)
C. (1, 5, 3)
D. 终端区会报错
13. 运行这段代码,字典会变成什么样子?( )
cat = {'三花猫':7, '布偶猫':11, '狸花猫':13}
cat['三花猫'] = 5
A. {'三花猫':7, '布偶猫':11, '狸花猫':13}
B. {'三花猫':5, '布偶猫':11, '狸花猫':13}
C. {'三花猫':5, '三花猫':7 ,'布偶猫':11, '狸花猫':13}
D. 程序会报错
14. 运行这段代码,终端区会打印什么内容?( )
a = 10
if a > 5:
a += 20
print(a)
A. 10
B. 20
C. 30
D. 5
15. 使用下列哪个命令可以把lst变成一个只有整数的列表?( )
lst = [7, 8, 4, 0, 5, 80, 6.2, 2.9, 11, 3]
A. del lst[6:7]
B. del lst[6:8]
C. del lst[6,8]
D. del lst[6],lst[8]
16. 已知列表list = ['鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪'],以下可以输出生肖“龙“的是哪个语句?( )
A. print(list[5-12])
B. print(list[4-11])
C. print(list[4])
D. print(list[5])
17. 已知s = 'python',请问s*2的值是?( )
A. python*2
B. 'python'*2
C. pythonpython
D. 'python''python'
18. 执行以下语句,可以创建字典的是?( )
A. dict = {'陕西':'西安','山西':'太原','广西':'南宁','江西':'南昌'}
B. dict = ('陕西':'西安','山西':'太原','广西':'南宁','江西':'南昌')
C. dict = ['陕西':'西安','山西':'太原','广西':'南宁','江西':'南昌']
D. dict = {'陕西':'西安';'山西':'太原';'广西':'南宁';'江西':'南昌'}
19. 下列不属于Python流程控制语句的是?( )
A. if语句
B. for语句
C. while语句
D. do...while语句
20. 下列说法中错误的是?( )
A. 元组和列表都可以存入多个元素,元素可以是字符串、数字等类型
B. 列表中的元素是有序的
C. 元组中的元素和列表一样,可以使用 元组[索引] = 新元素 的方式更改
D. 元组中的元素是有序的且不可变
21. 李老师在录入学生信息,她将所有的学生基本信息存储到字典info中,info = {'name': '李凯', 'gender': '男', 'height': 170}。若要在字典中增加一个所在年级信息,李老师应该使用下列哪个选项?( )
A. len(info)
B. info.pop('class')
C. infor['class'] = '四年级'
D. info['height'] = '四年级'
22. 运行下列程序,输入85,输出结果为?( )
score = int(input('请输入成绩:'))
if score >= 90:
print('优秀!')
elif 80 <= score < 90:
print('良好!')
elif 60<= score < 80:
print('中等!')
else:
print('不及格!')
A. 优秀!
B. 良好!
C. 中等!
D. 不及格!
23. 有列表 fruits = ['apple', 'banana', 'orange', 'pear'],该列表中一共包含几个元素?( )
A. 1
B. 2
C. 3
D. 4
24. 在Python中,下面哪一项是创建列表(list)的正确操作?( )
A. list1 = 5
B. list1 = [1, 2, 3, 4]
C. list1 = "Hello"
D. list1 = (1, 2, 3, 4)
25. 执行下面程序,当输入3时,输出结果是?( )
number = 7
guess = -1
print('猜数字!')
while guess != number:
guess = int(input("请输入你要猜的数字"))
if guess == number:
print("你猜中了,真厉害!")
elif guess < number:
print("猜小了,再猜猜?")
elif guess > number:
print("猜大了,再猜猜?")
A. 你猜中了,真厉害!
B. 猜小了,再猜猜?
C. 猜大了,再猜猜?
D. 恭喜你,猜对了!
二、判断题(共10题,共20分)
26. append() 方法会将新元素添加为列表的第一个元素。( )
27. str1 = '123', str2 = 123, 则str1与str2相同。( )
28. break与continue均用于中止循环。( )
29. 创建字典时,可以用数字、字符串、元组、列表作为字典中的键。( )
30. 多层循环中,break可以退出所有循环。( )
31. 在元组中,可使用remove()函数删除元组中的末尾元素。( )
32. 现有一个元组为 fruit=('苹果', '香蕉', '苹果'),其中'苹果'这个元素出现了两次,因此这个元组不能正常使用。( )
33. 执行语句print('She's a pupil.'),得到的输出语句是She's a pupil。( )
34. 在分支结构中,if、elif、else都可以单独使用。( )
35. while语句可以实现无限循环。( )
三、编程题(共2题,共30分)
36. 运动统计
李想同学是班级的体育委员,他负责统计和督促同学们加强锻炼。因此,他统计了班上几位同学周一和周二的运动步数。
周一的步数分别为:4125,3947,15395,238,6844,8341,3419,2943
周二的步数分别为:3975,3584,9754,4584,3435,9890,2344,9890
注意:每位同学的统计的顺序是不变的。
李想同学计划将每位同学周一和周二的步数相加得到每位同学这两天的总步数。请帮李想同学编程计算每位同学的总步数。
要求:
(1)必须使用列表或者元组;
(2)将每个同学两天的步数和求出来后形成一个新的列表;
(3)将新的列表(总步数)输出出来,并且按照步数的多少从小到大排列。
37. 智能抽奖机
中秋节到了,阿宝准备制作一个智能抽奖机,在班会活动上,让同学们参与趣味十足的抽奖游戏。智能抽奖机的抽奖机制如下:
(1)程序开始会定义一个数字(1-100之间),作为幸运数字;
(2)每个同学有五次机会,他们可以在终端区输入自己猜测的号码;
(3)如果猜中了,程序就会打印:'恭喜你获得大奖!';
(4)如果没有猜中,程序就会打印:'很遗憾,再来一次吧'。
示例:
>>>请输入数字
18
很遗憾,再来一次吧
>>>请输入数字
56
很遗憾,再来一次吧
67
恭喜你获得大奖!
参考答案及解析:
一、单选题答案及解析
1. D
- 解析:列表索引从0开始,`a[4]`取到列表中的第5个元素“子”。
2. A
- 解析:`",".join("新年快乐")`将字符串中的每个字符用逗号连接起来,结果为'新,年,快,乐'。
3. B
- 解析:`"I like program".replace("m","mming")`将字符串中的“m”替换为“mming”,结果为'I like programming'。
4. C
- 解析:`ls.reverse()`可以将列表中的元素顺序整体反转。A选项`ls.insert('f')`会报错,插入位置应该是整数索引;B选项`ls.extend('f')`会将字符串中的每个字符作为单独的元素添加到列表末尾;D选项列表没有`add`方法。
5. C
- 解析:`print(stu.items())`可以输出字典的所有键值对;`print(stu.keys())`输出字典的所有键;`print(stu.values())`输出字典的所有值;`print(stu.clear())`会清空字典并输出`None`。
6. D
- 解析:列表`shiju`中原本没有“潭面无风镜未磨”这个元素,执行`shiju.remove("潭面无风镜未磨")`会报错。
7. B
- 解析:`print(planet[:3])`可以访问元组`planet`的前三个元素。A选项`planet[1:3]`是从索引1到索引3(不包括3)的元素;C选项`planet[1:3:2]`是从索引1到索引3(不包括3),步长为2的元素;D选项`planet[::3]`是从开头到结尾,步长为3的元素。
8. C
- 解析:C选项i循环了19次,i的初始值依次为1、2、3……19,后面虽然进行了i=i+2的计算,但是当再次开始循环的时候,i又被重新赋值为初始值中的相关次数的值。故正确答案为C。
9. B
- 解析:`ls1.append(['枇杷','火龙果'])`是将一个列表作为一个元素添加到列表`ls1`末尾,结果为['榴莲','芒果','椰子','杨桃','柠檬','百香果','橄榄','木瓜',['枇杷','火龙果']]。
10. B
- 解析::不调用循环直接从列表元素的字符串中提取,正确的结果应为:ls[0][0]+ls[1][0]+ls[2][0]+ls[3][0],第一个代表的是列表中的元素的下标,第二个代表的是字符串中元素的下标。
11. A
- 解析:循环中,当`i`为偶数时使用`continue`跳过本次循环,所以`s`只累加奇数,最终`s = 1 + 3 + 5 + 7 = 16`,循环结束时`i = 7`。
12. D
- 解析:元组是不可变的,不能通过索引赋值修改元组中的元素,所以执行`nums[2] = 5`会报错。
13. B
- 解析:可以通过`字典名[键]=新值`的方式修改字典中对应键的值,所以结果为{'三花猫':5, '布偶猫':11, '狸花猫':13}。
14. C
- 解析:如果`a > 5`,则`a += 20`,这里`a = 10`满足条件,所以`a = 10 + 20 = 30`。
15. B
- 解析:`del lst[6:8]`可以删除列表中的浮点数元素,使列表只剩下整数元素。A选项只删除一个元素;C选项语法错误;D选项语法错误。
16. C
- 解析:列表索引从0开始,“龙”在索引4处,所以`print(list[4])`可以输出生肖“龙”。
17. C
- 解析:字符串乘以整数是重复字符串,`s*2`结果为'pythonpython'。
18. A
- 解析:创建字典的方式是使用大括号和键值对,A选项正确;B选项是元组的语法;C选项是列表的语法;D选项语法错误。
19. D
- 解析:Python中没有`do...while`循环语句。A选项`if`语句、B选项`for`语句、C选项`while`语句都是Python的流程控制语句。
20. C
- 解析:元组中的元素是不可变的,不能使用`元组[索引] = 新元素`的方式更改。A选项元组和列表都可以存入多个不同类型的元素;B选项和D选项列表和元组中的元素都是有序的。
21. C
- 解析:向字典中添加键值对的方式是`字典名[键]=值`,所以`infor['class'] = '四年级'`可以在字典中增加所在年级信息。A选项`len(info)`是获取字典长度;B选项`info.pop('class')`是删除键为'class'的键值对,如果字典中没有这个键会报错;D选项是将字典中键为'height'的值改为'四年级'。
22. B
- 解析:输入85,满足`80 <= score < 90`,所以输出“良好!”。
23. D
- 解析:列表`fruits = ['apple', 'banana', 'orange', 'pear']`中有四个元素。
24. B
- 解析:创建列表使用方括号,B选项`list1 = [1, 2, 3, 4]`是正确的创建列表的方式。A选项将整数赋值给变量不是创建列表;C选项将字符串赋值给变量不是创建列表;D选项是创建元组。
25. B
- 解析:考察条件语句 if – elif –elif ,此程序是猜数字,目标数字是7,当输入3时,会提示:猜小了,再猜猜?故选B
二、判断题答案及解析
26. ×
- 解析:`append()`方法会将新元素添加为列表的末尾元素。
27. ×
- 解析:`str1 = '123'`是字符串,`str2 = 123`是整数,它们不相同。
28. ×
- 解析:break是退出本层循环,是终止循环;而continue仅仅是退出本次循环,然后重新开始新一轮循环,是中止循环。
29. ×
- 解析:创建字典时,可以用数字、字符串、元组作为字典中的键,但不能用列表作为键,因为列表是可变的。
30. ×
- 解析:多层循环中,`break`只能退出当前所在的一层循环,不能退出所有循环。
31. ×
- 解析:元组是不可变的,不能使用`remove()`函数删除元组中的元素。
32. ×
- 解析:元组中的元素可以重复出现,不影响元组的正常使用。
33. ×
- 解析:执行语句`print('She's a pupil.')`会报错,因为字符串中的单引号没有正确转义。正确的写法是`print("She's a pupil.")`。
34. ×
- 解析:在分支结构中,`if`必须与`elif`或`else`搭配使用,不能单独使用。`elif`和`else`也不能单独使用。
35. √
- 解析:`while`语句可以通过设置条件为`True`来实现无限循环。
三、编程题解析
36. 参考代码:
step1 = [4125, 3947, 15395, 238, 6844, 8341, 3419, 2943]
# 定义周一的步数列表
step2 = [3975, 3584, 9754, 4584, 3435, 9890, 2344, 9890]
# 定义周二的步数列表
step3 = []
# 创建一个空列表 step3,用于存储总步数
for i in range(len(step1)):
# 遍历 step1 列表的索引
x = step1[i] + step2[i]
# 计算周一和周二对应位置的步数之和
step3.append(x)
# 将总步数添加到 step3 列表中
step3.sort()
# 对总步数列表进行排序
print(step3)
# 输出总步数列表
总结:这段 Python 代码的目的是计算每位同学周一和周二的步数总和,并将总步数存储在一个新的列表中,然后按照总步数从小到大进行排序并输出。首先定义了周一和周二的步数列表`step1`和`step2`,然后通过遍历`step1`的索引,计算对应位置的周一和周二步数之和,并将结果添加到新的列表`step3`中。最后,对`step3`进行排序并输出。
37.参考代码:
lucky = 67
# 设置幸运数字为 67
for i in range(5):
# 循环 5 次,代表每个同学有 5 次机会
num = int(input('请输入数字'))
# 获取用户输入的数字并转换为整数类型
if num == lucky:
# 如果输入的数字等于幸运数字
print('恭喜你获得大奖!')
# 输出中奖信息并跳出循环
break
else:
# 如果输入的数字不等于幸运数字
print('很遗憾,再来一次吧')
# 输出提示信息继续下一次循环
总结:这段 Python 代码实现了一个简单的抽奖程序。首先设定了一个幸运数字,然后通过一个循环让用户输入数字进行猜测。如果用户猜对了,程序输出恭喜信息并跳出循环;如果用户猜错了,程序输出提示信息让用户继续猜测,循环最多执行 5 次。
学科网(北京)股份有限公司
$$