内容正文:
青少年软件编程(Python)等级考试试卷(二级)
202109真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共25题,每题2分,共50分)
1. 有如下Python程序段:
x,y=12,5
if x % y==0:
z=x/y
print(x,"/",y,"=",z)
else:
z=y*x
print(x,"*",y,"=",z)
程序段执行后,输出的结果为?( )
A、x/y=2.4 B、x*y=60 C、12/5=2.4 D、12*5=60
2. 下列创建元组的方法中不正确的是?( )
A、t=(1,2,'信息') B、t=(1) C、t=('信息',) D、t=('音乐','体育','美术')
3. s='语文、数学、英语、信息技术'
l=s.split('、')
print(l)
以上代码的运行结果为?( )
A、['语文', '数学', '英语', '信息技术'] B、['语文、数学、英语、信息技术']
C、('语文', '数学', '英语', '信息技术') D、('语文、数学、英语、信息技术')
4. 已知存在字典a中有多个键值对,以下指令可以清空字典并保留变量的是?( )
A、a.remove() B、a.pop() C、a.clear() D、del a
5. 以下程序的运行结果是?( )
list1=[1,2,3]
list1[2]=4
print(list1)
A、[1,2,4] B、[1,2,3] C、[1,4,3] D、[1,4]
6. 执行下列代码后,运行结果是?( )
l1 = [11, 22, 33]
l2 = [66, 44, 22]
for i in l1:
for j in l2:
if i == j:
print(i)
A、 True B、0 C、2 D、22
7. 执行以下语句后的输出结果是?( )
str1='My name is BeiJing'
print(len(str1))
A、20 B、18 C、15 D、16
8. 列表a=[1,2,3,4,5,6,7,8,9],对列表进行切片操作,要想得到[3,5,7],以下切片正确的是?( )
A、a[-7:-2:-2] B、a[2:7:2] C、a[3:7:2] D、a[2:7:-2]
9. 执行以下语句,将输出?( )
list1=['b','c',1,2,3,4,5]
list1.append('a')
list1.append('a')
print(list1)
A、['b','c',1,2,3,4,5] B、['b','c',1,2,3,4,5,'a']
C、['b','c',1,2,3,4,5,'a','a'] D、无输出
10. 不能用作if语句条件表达式的是?( )
A、x in range(6) B、3=a C、a<3 and b>10 D、x-6>5
11. 执行以下语句后,输出的结果是?( )
list2 = ['a',1, 2, 3, 4, 5 ]
print(list2[5])
A、5 B、4 C、3 D、提示错误
12. alist=['cat','bat','cat','hat','cat']执行下列代码,输出的结果是?( )
alist.remove('cat')
print(alist)
A、['cat','bat','cat','hat','cat'] B、['bat','cat','hat','cat']
C、['bat','hat'] D、['cat','bat','cat','hat']
13. 以下创建字典的方法,正确的是?( )
A、d={学号,001,姓名,张三,成绩,98}
B、d={'学号':'001','姓名':'张三','成绩':98}
C、d={'学号','001','姓名','张三','成绩',98}
D、d={'学号':'001';'姓名':'张三';'成绩':98}
14. 以下代码输出的结果是?( )
for i in "Python":
if i == "t" or i == "o":
continue
print(i,end="")
A、Pyhn B、Python C、Pyt D、Pytho
15. 对于字典dic={1:2,'3':'d','sex':1,4:{'No':1,'name':'Mike'}},len(dic)的值是?( )
A、3 B、4 C、5 D、6
16. 对于元组tup=(1,2,3,4,5)执行的操作非法的是?( )
A、len(tup) B、max(tup) C、min(tup) D、tup[1] = 6
17. 水果店促销每斤苹果5元,如果购买六斤及六斤以上还可以打八折,小红去买苹果,下面的哪一个的Python程序语句可以帮小红算一下她买苹果得花多少钱(具体购买斤数由小红输入)?( )
A、x=input("请输入斤数:")
if x<6:
y=5*x
else:
y=5*x*0.8
print(y)
B、x=eval(input("请输入斤数:"))
if x<6:
y=5*x
else:
y=5*x*0.8
print(y)
C、x=eval(input("请输入斤数:"))
if x>=6:
y=5*x*0.8
else:
y=5*x
print(y)
D、x=input("请输入斤数:")
if x>=6:
y=5*x*0.8
else:
y=5*x
print(y)
18. 执行下列代码后,运行结果是?( )
s="垃圾分类"
i=len(s)
while i>0:
print(s[i-1])
i=i-1
A、类
分
圾
垃
B、垃
圾
分
类
C、垃
圾
分
类
垃
D、类
分
圾
垃
类
19. 在列表a中存放1-100之间所有的奇数,可以有多种方法,以下哪种方法是错误的?( )
A、a=list(range(1,100,2))
B、a=range(1,101,2)
C、a=[]
i=1
while i<100:
a.append(i)
i+=2
D、a=[]
for i in range(1,100,2):
a.append(i)
20. 若li=list(range(1,10,2)),则print(li)的结果是?( )
A、[0,2,4,6,8,10] B、[1,3,5,7,9] C、[1,2,3,4,5,6,7,8,9,10] D、[0,2,4,6,8]
21. 已知a=['a','b'],b=[7,8,9],如果c=a*2+b,那么列表c是?( )
A、['a','b','a','b',7,8,9] B、['a','b',2,7,8,9]
C、['a','b',7,8,9,'a','b'] D、['a','b','a','b',7,8,9,7,8,9]
22. 已知a=[1,2,3,4,5,6,7],则a[0:-2]的的值是?( )
A、[1,2,3,4,5,6] B、[2,3,4,5,6]
C、[1,2,3,4,5] D、[2,3,4,5]
23. 以下语句不正确的是?( )
A、dict={1:'a'} B、a={'name':'bob'}
C、e={[1]:'篮球'} D、c={'school':'精英小学'}
24. 关于 break的作用,以下说法正确的是?( )
A、按照缩进跳出当前层语句块
B、暂停该语句后面的循环内容,跳转到循环开始位置开始下一轮循环
C、跳出当前层for/while循环
D、跳出所有for/while循环
25. 若s=(1,'a',[1,2]),则len(s)的值为?( )
A、错误 B、2 C、3 D、4
二、判断题(共10题,每题2分,共20分)
26. while循环和for-in循环一样,都明确了循环的次数。()
27. 可以使用“+”和“-”来连接与删除字符串。()
28. 不同类型的元素可以存储在同一个列表中。()
29. 循环结构中的continue语句的功能是中断当前循环的执行,进入下一轮循环条件是否满足的判断。()
30. ESC可以用于Python跳出循环。()
31. 按照顺序执行下面的代码,以下命令都是合法的。()
list1=[1,2,3]
list1[2]=4
tuple1=(1,2,3)
tuple1[0]=0
32. Python列表、元组、字典都属于有序序列,都可以用索引进行访问。()
33. message1='Hello',则message1.append('world')的值为'Hello world'。()
34. 元组一旦创建,其中的元素就不能再被修改了。()
35. 运行以下程序,结果是一条由9行单个的#组成的图案。()
i=0
while i<10:
i=i+1
print('#')
三、编程题(共2题,共30分)
36. 日期转换
编写一个程序,实现用户输入一个日期,格式为"月/日/年",如输入'05/21/2021',程序输出日期为'May 21,2021'。
1至12月的英文名称如下:
January,February,March,April,May,June,July,August,September,October,November,December。
37. 图形的循环美
设计一个海龟绘图程序,程序效果如下图(要求:海龟从里往外绘制图形,线条初始长度为20,相邻两条边相差4(每一个线条均比前一个线条长4),线条颜色为红色,总共边数至少80条以上(为了便于程序调试,建议不超过120条)。
参考答案及解析:
一、单选题答案及解析
1. D
- 解析:12 和 5 不满足整除条件,执行 else 部分,z = y * x = 5 * 12 = 60,输出“12*5=60”。
2. B
- 解析:创建单个元素的元组需要在元素后加逗号,选项 B 创建的是整数 1 而不是元组。
3. A
- 解析:`s.split('、')`以“、”为分隔符将字符串分割成列表,结果为`['语文', '数学', '英语', '信息技术']`。
4. C
- 解析:`a.clear()`可以清空字典并保留变量,`a.remove()`和`a.pop()`不是清空字典的正确方法,`del a`会删除变量。
5. A
- 解析:`list1[2]=4`将列表`list1`索引为 2 的元素改为 4,结果为`[1, 2, 4]`。
6. D
- 解析:两层循环遍历两个列表,当元素相等时输出,两个列表中只有 22 相等。
7. B
- 解析:`len(str1)`计算字符串长度,字符串`'My name is BeiJing'`长度为 18。
8. B
- 解析:列表切片`a[2:7:2]`从索引 2 开始到索引 7(不包括),步长为 2,结果为`[3, 5, 7]`。
9. C
- 解析:`list1.append('a')`两次向列表添加元素`'a'`,结果为`['b','c',1,2,3,4,5,'a','a']`。
10. B
- 解析:赋值语句不能作为条件表达式,选项 B 是错误的赋值语句。
11. A
- 解析:列表索引从 0 开始,`list2[5]`对应的值是 5。
12. B
- 解析:`alist.remove('cat')`只移除列表中第一个出现的`'cat'`,结果为`['bat','cat','hat','cat']`。
13. B
- 解析:字典用大括号`{}`创建,键和值用冒号`:`连接,各个键值对用逗号`,`分隔。
14. A
- 解析:当遇到字符“t”或“o”时使用`continue`跳过,输出其他字符,结果为“Pyhn”。
15. B
- 解析:字典`dic`中有四个键值对,分别是`{1: 2,'3': 'd','sex': 1,4: {'No': 1,'name': 'Mike'}}`,所以`len(dic)`为 4。
16. D
- 解析:元组是不可变的,不能通过赋值修改其中的元素。
17. C
- 解析:先接收输入的斤数,判断如果大于等于 6 斤则打八折计算价格,否则按原价计算,选项 C 正确。
18. A
- 解析:从字符串末尾开始循环打印字符,结果为“类分圾垃”。
19. B
- 解析:选项 B 只是一个 range 对象,不是列表,不能直接作为存放奇数的方法。
20. B
- 解析:`range(1, 10, 2)`生成 1 到 9 之间的奇数序列,转换为列表后是`[1, 3, 5, 7, 9]`。
21. A
- 解析:`a * 2`得到`['a','b','a','b']`,再加上`b`,结果为`['a','b','a','b',7,8,9]`。
22. C
- 解析:`a[0:-2]`表示从索引 0 开始到倒数第二个元素,结果为`[1, 2, 3, 4, 5]`。
23. C
- 解析:字典的键必须是不可变类型,列表是可变类型不能作为字典的键。
24. C
- 解析:`break`用于跳出当前层的`for`或`while`循环。
25. C
- 解析:元组`s=(1,'a',[1,2])`中有三个元素,所以`len(s)`为 3。
二、判断题答案及解析
26. ×
- 解析:`while`循环不一定明确循环次数,只有在循环条件中明确判断条件时才能确定循环次数,而`for-in`循环通常是遍历可迭代对象,对于一些情况也不一定能明确循环次数。
27. ×
- 解析:在 Python 中不能使用“+”和“-”来连接与删除字符串,可以使用“+”连接字符串,但没有直接用“-”删除字符串的方法。
28. √
- 解析:不同类型的元素可以存储在同一个列表中。
29. √
- 解析:`continue`语句的功能是中断当前循环的执行,进入下一轮循环条件是否满足的判断。
30. ×
- 解析:在 Python 中,`ESC`不能用于跳出循环。
31. ×
- 解析:列表可以通过索引赋值修改元素,但元组是不可变的,不能通过索引赋值修改元素。
32. ×
- 解析:这句话是错误的。 列表和元组是有序序列,可以用索引进行访问。 但是字典是无序的(在 Python 3.6 之前是无序,3.6 及以后版本虽然在某种程度上是有序的,但这个顺序是基于插入顺序而不是传统意义上的顺序,且不能像列表和元组那样通过整数索引来严格确定位置),不能用整数索引进行访问,而是通过键来访问对应的值。
33. ×
- 解析:字符串是不可变类型,没有`append`方法。
34. √
- 解析:元组一旦创建,其中的元素就不能再被修改了。
35. ×
- 解析:循环中`i`从 0 开始,每次循环`i=i+1`,当`i=10`时循环结束,会输出 10 个“#”。
三、编程题解析
36. 参考代码:
months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']# 定义一个列表,包含十二个月的英文名称
date = input("请输入日期(月/日/年格式):")# 接收用户输入的日期字符串,格式为“月/日/年”
month, day, year = map(int, date.split('/'))
# 将用户输入的日期字符串按照'/'分割成三个部分,分别对应月、日、年
# 然后使用 map 函数将这三个部分都转换为整数类型,并分别赋值给变量 month、day 和 year
print(f'{months[month - 1]} {day}, {year}')
# 根据 month 的值从 months 列表中取出对应的英文月份名称(因为列表索引从 0 开始,所以 month - 1)
# 然后按照要求的格式输出日期,即“英文月份名称 日, 年”
总结:这段 Python 代码实现了一个简单的日期转换功能。它首先定义了一个包含十二个月英文名称的列表。然后要求用户输入一个日期,格式为“月/日/年”。接着,代码将用户输入的日期进行分割和类型转换,得到月、日、年三个整数。最后,根据月份的值从列表中取出对应的英文月份名称,并按照特定的格式输出日期。
37. 参考代码:
import turtle as t
# 导入 turtle 模块并将其重命名为 t,方便后续使用
t.pencolor('red')
# 设置画笔颜色为红色
a = 20
# 初始化变量 a 为 20,用于控制线条长度
for i in range(100):# 开始一个循环,循环次数为 100 次
t.fd(a)# 让海龟向前移动 a 的长度
t.left(90)# 海龟向左转 90 度,形成一个正方形的一条边
a += 4
# 每次循环后,将 a 的值增加 4,使得下一次绘制的线条长度比上一次长 4
总结:这段 Python 代码使用`turtle`模块进行绘图。首先设置画笔颜色为红色,然后通过一个循环绘制一系列边长不断增加的正方形(实际上是依次绘制四条边)。循环变量`i`控制循环次数,变量`a`控制每次绘制线条的长度,每次循环后`a`的值增加 4,从而实现了从里往外绘制图形且线条长度逐渐增加的效果。循环次数为 100 次,可以绘制出较多的边。
学科网(北京)股份有限公司
$$