青少年软件编程(Python)等级考试试卷(二级)
202106真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共25题,每题2分,共50分)
1.执行下列代码后,运行结果是?( )
seq=['hello','good','morning']
s='*'.join(seq)
print(s)
A、hello*good*morning*
B、*hello*good*morning
C、hello*good*morning
D、*hello*good*morning*
2.小红用一个列表score=[80,78,92,96,100,88,95]来依次表示她七周的英文测验分数,如果想要查找到第三周的英文测验分数并将其删除,应该怎么做?( )
A、score[3]
B、score[2]
C、score.pop(3)
D、score.pop(2)
3. 以下代码输出结果是?( )
ls =["2021","123","Python"]
ls.append([2021,"2021"])
ls.append(2021)
print(ls)
A、['2021', '123', 'Python', 2021]
B、['2020', '123', 'Python', [2021, '2021']]
C、['2021', '123', 'Python', [2021, '2021'], 2021]
D、['2020', '123', 'Python', [2021],2021]
4. 已知Lista=list("five"),执行语句Lista[2:]=list("rst")后,列表Lista中的元素为?( )
A、['f', 'i', 'v', 'e', 'r', 's', 't']
B、['f', 'r', 's', 't']
C、['f', 'i', 'r', 's']
D、['f', 'i', 'r', 's', 't']
5. 原有列表s=[5,2,9,1],下列哪个操作不能使得列表s变为[9,5,2,1]?( )
A、s.sort()
s.reverse()
print(s)
B、s.sort(reverse=True)
print(s)
- print(sorted(s,reverse=True))
D、s.sort()
print(s)
6.在Python3.5.2的IDLE交互式环境下依次输入以下程序语句后的结果是?( )
S=[10,20,30,40]
10 in S
A、True
B、true
C、False
D、false
7. 以下代码输出结果是?( )
ls = [888,'note',[2021,'Python',123],20]
print(ls[2][1])
A、note
B、Python
C、2021
D、结果错误
8. 已知a="123",那么a*2的结果是?( )
A、246
B、123123
C、'123123'
D、'246'
9.执行下列代码后,屏幕打印的k值的个数共有多少个?( )
k=100
while k1:
print(k)
k=k//2
A、5
B、6
C、10
D、50
10. 据相关文件规定,全国景区对老年人实行优惠政策:60岁以内全票,60-69岁(含60岁和69岁)的老年人半票,69岁以上免费。输入年龄,可以输出全票/半票/免费信息的程序是?( )
A、while True:
a=int(input('年龄:'))
if(a=70):
print('免费')
elif(a60 and 70):
print('半票')
else:
print('全票')
B、while True:
a=int(input('年龄:'))
if(a=70):
print('免费')
elif(a=60 and 70):
print('半票')
else:
print('全票')
C、while True:
a=int(input('年龄:'))
if(a70):
print('免费')
elif(a=60 and 70):
print('半票')
else:
print('全票')
D、while True:
a=int(input('年龄:'))
if(a70):
print('免费')
elif(a60 and 70):
print('半票')
else:
print('全票')
11.将下列列表a中偶数提取出来并形成一个新的列表c,请补充完整语句?( )
a = [3,5,7,6,2,8,10]
c=[]
for i in a:
if _______:
________
print(c)
A、
i%2==0:
c.append(i)
B、
i%2==0
c.extend(i)
C、
i//2=1
c.append(i)
D、
i//2=1
c.extend(i)
12. 下列说法错误的是?( )
A、字典是可变的无序集合
B、列表、元组可以相互嵌套使用
C、字典虽然不能利用下标访问元素,但可以排序
D、字典属于一对一映射关系的数据类型
13. 以下说法正确的是?( )
A、同一个元组中,元素的类型必须相同
B、tuple()函数可以将列表转换为元组
C、用del就可以删除元组中的元素
D、列表和元组都是可变数据类型
14. 关于下列程序理解说法正确的是?( )
num=0
while num < 10:
print("Python")
A、在while代码块中无论加什么都不能改变死循环
B、运行结果打印输出10个"Python"语句
C、这个while循环是一个死循环,会一直打印"Python"
D、在while代码块中加一行代码num-=1可以改变死循环
15. 下列程序的运行结果是?( )
name='The dog is ehite'
new_name=name[:11]+'white'
print(new_name[11:])
A、The dog is white
B、hite
C、ehite
D、white
16. 正确定义元组yuan的语句是?( )
A、yuan={1,2,3}
B、yuan=[1,2,3]
C、yuan=(1,2,3)
D、yuan=
17. 已知列表List1=[1,2,3,4,5],要在列表List1中的最前面添加元素0,则下列操作可行的是?( )
A、List1=0+List1
B、List1="0"+List1
C、List1=[0]+List1
D、List1=List1+[0]
18. 已知列表a=[1,2,3],执行语句print(2*a),显示的结果是?( )
A、[2, 4, 6]
B、[1, 2, 3, 1, 2, 3]
C、[1, 2, 3, 2, 4, 6]
D、[1, 2, 3, 3, 2, 1]
19.执行下列代码后,运行结果是?( )
for i in range(0,10,2):
print(i*2,end=',')
A、
0,
4,
8,
12,
16,
B、0,4,8,12,16,
C、
2,
6,
10,
14,
18,
D、2,6,10,14,18,
20.以下是一个猜数字程序,当输入的数字大于目标数字(本程序指定为5)时,提示“大了”;当小于时,提示“小了”;当相等时,提示“相等”,程序退出。程序中空白处分别应填入的代码是?( )
A、if,break
B、else,break
C、elif,break
D、elif,continue
21. 执行以下语句,程序将输出?( )
yuan=2,3,1,4,6,5
list1=sorted(yuan)
list1
A、报错
B、1, 2, 3, 4, 5, 6
C、(1, 2, 3, 4, 5, 6)
D、[1, 2, 3, 4, 5, 6]
22. 下列有关字典对象的说法,不正确的是?( )
A、字典中的值可以是任意类型的数据
B、字典中的每个元素包含键和值两部分
C、在同一个字典中,键值必须互不相同
D、可以通过字典的键找到对应的值,也可以通过值来找到对应的键
23. 以下不属于Python语言流程控制结构的是?( )
A、顺序结构
B、分支结构
C、数据结构
D、循环结构
24.已知字典dict1={0:"zero",1:"one",2:"two",3:"Three"},执行语句dict1[3]="three"后,字典dict1的内容为?( )
A、{0:"zero",1:"one",2:"two",3:"Three"}
B、{0:"zero",1:"one",2:"two",3:"three"}
C、{0:"zero",1:"one",2:"two","3":three}
D、{0:"zero",1:"one",2:"two",3:"Three",3:"three"}
25.用语句mydict={'a':1,'b':2,'c':3,'d':4}定义了一个字典,以下语句中,可以输出字典键值的是?( )
A、print(mydict('c'))
B、print(mydict 'c')
C、mydict['c']
D、print(mydict{'c'})
二、判断题(共10题,每题2分,共20分)
26. for-in用于在某范围内的循环,循环范围是有限的。()
27. 元组的定义方法与列表完全相同。()
28. 字典中的键必须是唯一的,必须是不可变数据类型,如字符串、数字或列表。()
29. 字符串中的元素是通过索引来定位的,其中第一个元素的索引是0。()
30.
a=0
while 10:
a+=1
print(a,end=" ")打印结果最后一个数是10。()
31. Python程序的分支结构分为单分支结构、二分支结构和多分支结构,可用if语句来实现。
()
32. 表达式"abc"in ["abcdef"] 的值为True。()
33. 'red' in ('yellow','red','purple') 的结果为True。()
34. Python程序设计语言中的循环结构可用while或for语句来实现,所有的while语句均可用for语句来实现。()
35.运行下列代码后,list1的值为['a',1,2,3,7]。()
list1=[1,3,'a',2,7]
list1.sort()
三、编程题(共2题,共30分)
36.没有重复数字的两位数统计
编写一段程序,实现下面的功能:
(1)检查所有的两位数;
(2)程序自动分析两位数上的个位与十位上的数字是否相同;相同则剔除,不同则保留(例如:12符合本要求,个位是2,十位是1,两个不相同);
(3)统计符合上面要求的两位数的个数,并且将个数最后打印出来(注意:是个数打印出来,符合要求的两位数不要求打印出来)。
37.编写一段程序程序,实现输入的数字自动改为对应的星期几,如下图所示,当输入1时,输出:1 —— 星期一;当输入2时,输出:2 —— 星期二……以此类推,当输入7时,输出:7 —— 星期日。
注意,程序运行后,用户是随机输入数字1-7。
参考答案及解析:
一、单选题答案及解析
1. C
- 解析:`'*'.join(seq)`会将列表`seq`中的元素用'*'连接起来,结果为'hello*good*morning'。
2. D
- 解析:列表的索引从0开始,第三周对应的索引是2,`score.pop(2)`可以查找并删除列表中索引为2的元素。
3. C
- 解析:`ls.append([2021,"2021"])`在列表末尾添加一个列表元素,`ls.append(2021)`在列表末尾添加数字2021,最终结果为`['2021', '123', 'Python', [2021, '2021'], 2021]`。
4. D
- 解析:`Lista[2:] = list("rst")`将列表`Lista`从索引2开始的部分替换为列表`["r", "s", "t"]`,结果为`['f', 'i', 'r', 's', 't']`。
5. D
- 解析:A选项先排序再反转可以得到目标列表;B选项`sort(reverse=True)`直接降序排序;C选项`sorted(s, reverse=True)`返回一个降序排序的新列表;D选项只进行了升序排序,不能得到目标列表。
6. A
- 解析:`10 in S`判断10是否在列表`S`中,结果为`True`。
7. B
- 解析:`ls[2][1]`表示访问列表`ls`中索引为2的元素(即`[2021,'Python',123]`),再取这个列表中的索引为1的元素,结果为'Python'。
8. C
- 解析:在 Python 中,字符串乘以整数会进行重复,`a="123"`,`a*2`结果为'123123'。
9. B
- 解析:初始`k = 100`,每次循环`k = k // 2`,即不断对`k`进行整除2的操作,100、50、25、12、6、3,一共6次循环。
10. B
- 解析:这道题的正确答案是 B。
A:if(a=70)这种写法是错误的,应该是if(a==70),判断相等要用两个等号。
elif(a60 and 70)这种写法也是错误的,应该是`elif(60 <= a <= 70)`,这样才能正确判断年龄在 60 - 69 岁之间。
B:`if(a==70)`正确判断了年龄为 70 岁及以上免费。
`elif(60 <= a <= 70)`正确判断了年龄在 60 - 69 岁之间为半票。对于年龄小于 60 岁输出全票也正确。
C:`if(a70)`这种写法错误,应该是`if(a>=70)`才能正确判断年龄大于等于 70 岁免费。
D:`if(a70)`和`elif(a60 and 70)`写法错误,同选项 A 和 C 的错误原因。
11. A
- 解析:判断偶数可以用`i % 2 == 0`,如果是偶数则将其添加到列表`c`中,使用`c.append(i)`。
12. C
- 解析:字典是无序的,不能直接排序。A选项字典是可变的无序集合正确;B选项列表、元组可以相互嵌套;D选项字典是键值对的一对一映射关系。
13. B
- 解析:A选项元组中元素类型可以不同;C选项元组是不可变的,不能删除元素;D选项元组是不可变数据类型,列表是可变数据类型。`tuple()`函数可以将列表转换为元组。
14. C
- 解析:由于`num`初始值为0,且循环条件`num < 10`一直为真,没有改变循环条件的语句,所以会一直打印"Python",是死循环。
15. D
- 解析:`name[:11]`取到字符串的前11个字符,然后加上'white',最后`new_name[11:]`取新字符串从索引11开始的部分,结果为'white'。
16. C
- 解析:元组使用小括号定义,选项 C 正确。A 是集合,B 是列表,D 语法错误。
17. C
- 解析:在列表最前面添加元素可以使用`[0]+List1`的方式。A 和 B 中的加法操作不恰当,D 是在列表末尾添加元素。
18. B
- 解析:`2*a`会将列表`a`重复两次,结果为`[1, 2, 3, 1, 2, 3]`。
19. B
- 解析:`range(0, 10, 2)`生成0、2、4、6、8,每个数乘以2并输出,输出结果是`0,4,8,12,16,`,注意末尾有逗号。
20. C
- 解析:当输入的数字等于目标数字时,使用`elif`进行判断,然后`break`退出循环。
21. D
- 解析:`yuan=2,3,1,4,6,5`定义了一个元组,`sorted(yuan)`会返回一个排好序的列表,结果为`[1, 2, 3, 4, 5, 6]`。
22. D
- 解析:在字典中,可以通过键找到对应的值,但不能通过值找到对应的键。A、B、C 选项说法正确。
23. C
- 解析:Python 语言的流程控制结构包括顺序结构、分支结构和循环结构,不包括数据结构。
24. B
- 解析:`dict1[3]="three"`将字典中键为3的值修改为"three",结果为`{0:"zero",1:"one",2:"two",3:"three"}`。
25. C
- 解析:`mydict['c']`可以获取字典中键为'c'的值。A、B、D 选项语法错误。
二、判断题答案及解析
26. √
- 解析:`for-in`循环通常用于遍历有限的可迭代对象,循环范围是有限的。
27. ×
- 解析:元组使用小括号定义,列表使用方括号定义,定义方法不同。
28. ×
- 解析:字典中的键必须是唯一的,必须是不可变数据类型,如字符串、数字、元组等,但不能是列表。
29. √
- 解析:字符串中的元素通过索引定位,第一个元素索引是0。
30. ×
- 解析:循环条件`while 10`一直为真,会陷入死循环,不会输出最后一个数是10。
31. √
- 解析:Python 程序的分支结构可用`if`语句实现,分为单分支、二分支和多分支结构。
32. ×
- 解析:`"abc"`不在列表`["abcdef"]`中,所以值为`False`。
33. √
- 解析:`'red'`在元组`('yellow','red','purple')`中,结果为`True`。
34. ×
- 解析:不是所有的`while`语句都可用`for`语句来实现,例如不确定循环次数的复杂条件循环。
35. ×
- 解析:`list1.sort()`会对列表进行升序排序,结果为`[1, 2, 3, 7, 'a']`,因为不同类型的数据比较会按照一定规则进行排序。
三、编程题解析
36.参考代码:
n = 0 # 初始化变量 n 为 0,用于统计满足条件的两位数的个数
for i in range(10, 100): # 遍历所有的两位数,从 10 到 99
a = i // 10 # 计算当前两位数的十位数字,通过整除 10 得到
b = i % 10 # 计算当前两位数的个位数字,通过对 10 取余得到
if a!= b: # 判断十位数字和个位数字是否不同
n += 1 # 如果不同,将 n 的值加 1,表示找到了一个满足条件的两位数
print(n) # 打印满足条件的两位数的个数
总结:这段 Python 代码的目的是统计所有两位数中十位数字和个位数字不同的数的个数。它通过遍历 10 到 99 的所有整数,分别提取出十位数字和个位数字进行比较,如果不同就增加计数器 `n` 的值。最后打印出满足条件的两位数的个数。
37. 参考代码:
days = {1: '星期一', 2: '星期二', 3: '星期三', 4: '星期四', 5: '星期五', 6: '星期六', 7: '星期日'}# 创建一个字典,键为数字 1 到 7,值分别对应星期一到星期日
while True:
num = int(input('请输入数字(1-7 之间):'))# 不断接收用户输入的数字,并将其转换为整数类型
print(f"{num} —— {days[num]}") # 根据用户输入的数字,从字典中取出对应的星期几并打印输出
总结:这段 Python 代码定义了一个字典 `days`,将数字 1 到 7 分别映射到星期一到星期日。然后通过一个无限循环,不断提示用户输入一个数字(1 到 7 之间),并根据用户输入的数字从字典中取出对应的星期几进行打印输出。