内容正文:
青少年软件编程(Python)等级考试试卷(二级)
202112真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共25题,每题2分,共50分)
1、执行以下程序
a = [33, 55, 22, 77]
a.sort()
for i in a:
print(i)
运行结果是?( )
A. 33 55 22 77
B. 22 33 55 77
C. 55 33 22 77
D. 77 55 33 22
2、运行以下程序
a = eval(input("年龄:"))
if a > 10:
b = 30
else:
b = 15
print("票价:", b)
当输入12时,输出结果为?( )
A. 票价: 12
B. 票价: 15
C. 票价: 30
D. 票价: 10
3、执行以下程序
a = {'gj': 'china', 'nl': 12, 'xb': '女'}
a['nl'] = 11
del a['gj']
a['xm'] = 'xxs'
print(a)
运行结果是?( )
A. {'gj':'china','nl':11,'xb':'女'}
B. {'nl':11,'xb':'女'}
C. {'nl': 11, 'xb': '女', 'xm': 'xxs'}
D. {'nl': 12, 'xm': 'xxs', 'xb': '女'}
4、执行以下程序
l = ['i', 'love', 'you', '!']
l = '.'.join(l)
l = l.split('.')
l = ' '.join(l)
print(l)
运行结果是?( )
A. iloveyou!
B. i.love.you.!
C. i love you !
D. ['i', 'love', 'you', '!']
5、以下程序功能是?( )
a = 0
for i in range(1, 100):
if (i % 2 == 0):
a = a + 1
print(a)
A. 计算并输出100以内(不含0和100)所有数字的和
B. 计算并输出1-100所有数字的和,输出5050
C. 统计并输出100以内(不含0和100)偶数个数,输出50
D. 统计并输出100以内(不含0和100)偶数个数,输出49
6、以下程序执行后的结果是?( )
s = 'Kevin likes English.'
new = ''
for i in range(len(s)):
if i % 3 == 0:
new += s[i]
print(new)
A. enisni.
B. KileEls
C. KvnlksEgih
D. KileElh
7、对于元组tup=('富强','民主','文明','和谐','爱国')操作正确的是?( )
A. tup[2:4:2] = ('敬业')
B. tup[4]='敬业'
C. del tup[4]
D. tup*3
8、 下列程序的第四行横线处输入哪个选项中的代码不能打印出九九乘法表?( )
for i in range(1, 10): # 第一行
for j in range(1, 10): # 第二行
if j <= i: # 第三行
___________ # 第四行
print("")
A. print("{}*{}={}".format(j, i, i * j), '', end='')
B. print("%d*%d=%d" % (j, i, i * j), end=" ")
C. print(j, '*', i, '=', i * j, '', end='')
D. print("{}*{}={}".format({j * i = {i * j}}), '', end = '')
9、下面的语句哪个会无限循环执行下去?( )
A.
for a in range(10):
print(a)
B.
a = 1
while True:
print(a)
if a == 3:
break
a = a + 1
C.
a = 1
while True:
print(a)
if a == 3:
continue
a = a + 1
D.
a = [1, 0, 2]
for i in a:
if not i:
continue
print(i)
10、某商场促销打折,打折规定如下:消费500元以内的打8.8折;满500元(含500)的打8折,满1000元及以上的打7折。要编程解决该问题,需要用到的控制语句是?( )
A. 赋值语句
B. 选择(分支)结构语句
C. 循环结构语句
D. 输入输出语句
11、以下语句不能创建字典的是?( )
A. dic={}
B. dic={12:34}
C. dic={[12]:[34]}
D. dic={(12):(34)}
12、执行下列代码后,运行结果是?( )
stu = {'202101': '小明', '202102': '小红', '202103': '小丽'}
print(len(stu))
A. 0
B. 1
C. 3
D. 6
13、下列语句中变量i取值范围是0—99的是?( )
A. for i in range(101)
B. for i in range(1, 100)
C. for i in range(0, 101)
D. for i in range(100)
14、执行下列程序的结果为?( )
message1 = {'name': 'Tom', 'age': 14, 'city': 'London'}
for v in message1.values():
print(v, end='')
A. Tom14London
B. nameageLondon
C. name:Tom
D. Tom
15、下面代码运行的结果是?( )
tup1 = ('中国', '电子学会', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print(tup1[-1], tup2[1:5])
A. 2000 (2, 3, 4, 5)
B. 2000 (2, 3, 4, 5, 6)
C. (2000 (2, 3, 4, 5,6))
D. 1997 (1,2, 3, 4, 5)
16、以下代码的输出结果是?( )
ls = [[1, 2, 3], 'python', [[4, 5, 'ABC'], 6], [7, 8]]
print(ls[2][1])
A. 5
B. p
C. 4
D. 6
17、执行以下代码的结果是?( )
name = ['Amir', 'Betty', 'Chales', 'Tao']
name.index("Edward")
A. -1
B. 0
C. 4
D. 异常报错
18、下面程序的输出结果是?( )
a = [[1, 2, 3], [4, 5, 6]]
a.sort(reverse=True)
print(a)
A. [[4, 5, 6], [1, 2, 3]]
B. [6, 5, 4], [3, 2, 1]
C. [[6, 5, 4], [3, 2, 1]]
D. [4, 5, 6], [1, 2, 3]
19、已知a = list("zhangsan"),执行了a[1:7:2]后结果是?( )
A. [ 'h', 'a', 'n', 'g', 's', 'a', 'n']
B. ['z', 'h', 'a', 'n', 'g', 's', 'a']
C. [ 'h', 'a', 'n', 'g', 's', 'a']
D. ['h', 'n', 's']
20、已知a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 执行 del a[1:]后,a的结果是什么?( )
A. [0, 1, 2, 3, 4, 5, 6, 7, 8]
B. [1, 2, 3, 4, 5, 6, 7, 8, 9]
C. [0]
D. [0, 1]
21、下列哪一个Python列表的创建是错误的?( )
A. l = [1, 3.14, "laowang", [1,2]]
B. l = [1, 3.14, laowang, [1,2]]
C. l = [1, 3.14, "laowang", (1,2)]
D. l = []
22、下列关于Python列表的表达正确的是?( )
A. Python列表是包含0个或者多个对象引用的有序序列
B. python列表用小括号()表示
C. 列表的长度是不可变的
D. Python列表的元素间用顿号、隔开
23、已知列表lis = ['a','bc','def'],则执行print(len(lis))语句输出的结果是?( )
A. 3
B. 4
C. 5
D. 6
24、在python中,当列表需要动态添加元素时,可以使用( )函数添加一个新的元素到列表的尾部。
A. append()
B. del()
C. sort()
D. sorted()
25、已知t1 = (2, 3),t2 = (4, 5, 6),那么t2 + t1 *2的结果是?( )
A. (2, 3, 2, 3, 4, 5, 6)
B. (4, 5, 6, 2, 3, 2, 3)
C. (2, 3, 4, 5, 6, 2, 3, 4, 5, 6)
D. (2, 3, 4, 5, 6)
二、判断题(共10题,每题2分,共20分)
26、运行如下程序
s1 = "hi"
s2 = " lanxi"
s3 = "!"
print(s1 + s2 + s3)
运行结果为hi lanxi! ( )
27、在一段程序中,如果有break,就一定有continue。( )
28、字符串是可变的数据类型。( )
29、while循环的判断条件可以是任何表达式,只有当表达式的值为True的时候,才执行循环体。( )
30、只有列表可以转换为元组,字符串、字典都无法转换成元组。( )
31、[1, 2] in [1, 2, 3, 4, 5, 6]的结果为True。( )
32、凡是用while语句编写的循环结构,都可以用for语句实现。( )
33、执行下列代码后,运行结果是:Helloorld!( )
for i in "HelloWorld!":
if i == "W":
break
print(i, end="")
34、字典是无序的。( )
35、t2 = 1, 2, 3 则t2是int类型数据。( )
三、编程题(共2题,共30分)
36、日期计算器
设计一款日期计算程序,能否实现下面的功能:
(1)要求用户分别输入年、月、日(分三次输入) ;
(2)程序自动会根据输入的年月日计算出这一天是这一年的第几天;
(3)输出格式为:这是****年的第**天;
请输入某年某月某日,通过编程判断这一天是这一年的第几天。
友情提示:
考试平台暂不支持eval()命令。
37.将四句唐诗用逗号和句号连接,完整输出这首诗,必须使用变量的方法编写程序。
jvzi1 = "白日依山尽"
jvzi2 = "黄河入海流"
jvzi3 = "欲穷千里目"
jvzi4 = "更上一层楼"
输出应为"白日依山尽,黄河入海流。欲穷千里目,更上一层楼。"
参考答案及解析:
一、单选题答案及解析
1. B
- 解析:`a.sort()`对列表`a`进行升序排序,然后遍历输出,结果为`22 33 55 77`。
2. C
- 解析:输入年龄为 12,大于 10,执行`b = 30`,输出“票价: 30”。
3. C
- 解析:先将字典中键为`'nl'`的值改为 11,删除键为`'gj'`的键值对,添加键为`'xm'`的键值对,结果为`{'nl': 11, 'xb': '女', 'xm': 'xxs'}`。
4. C
- 解析:首先用“.”连接列表元素,然后再分割成列表,最后用“ ”连接列表元素,结果为`i love you!`。
5. D
- 解析:这个程序遍历从 1 到 99 的数字,当数字是偶数时(i % 2 == 0),变量a加 1。所以这个程序是统计并输出 100 以内(不含 0 和 100)偶数的个数。100 以内的偶数有 2、4、6、8……98,一共 49 个,答案是 D。
6. D
- 解析:以下是对该题的解析: 程序遍历字符串`s = 'Kevin likes English.'`,通过判断索引`i`是否能被 3 整除,将对应位置字符添加到`new`字符串中。逐一分析可得,当`i = 0, 3, 6, 9, 12, 15`时,分别取到`'K'、'i'、'l'、'E'、'l'、'h'`,最终`new`为`'KileElh'`,所以答案是 D。
7. D
- 解析:元组是不可变的,不能通过切片赋值、单个元素赋值或删除元素,`tup*3`可以重复元组。
8. D
- 解析:选项 D 的格式化字符串错误,不能打印出九九乘法表。
9. C
- 解析:选项 C 中当`a == 3`时执行`continue`,会一直循环下去,不会改变循环条件。选项 A 会正常遍历结束;选项 B 当`a == 3`时会跳出循环;选项 D 也会正常遍历结束。
10. B
- 解析:根据不同的消费金额选择不同的折扣,需要用到选择(分支)结构语句。
11. C
- 解析:字典的键必须是不可变类型,列表是可变类型不能作为字典的键。
12. C
- 解析:字典`stu`中有三个键值对,所以`len(stu)`为 3。
13. D
- 解析:`range(100)`生成 0 到 99 的整数序列。选项 A 是 0 到 100;选项 B 是 1 到 99;选项 C 是 0 到 100。
14. A
- 解析:遍历字典的`values`,输出字典的值,结果为`Tom14London`。
15. A
- 解析:元组索引为-1 表示最后一个元素,切片`tup2[1:5]`取从索引 1 到索引 4 的元素,结果为`2000 (2, 3, 4, 5)`。
16. D
- 解析:`ls[2][1]`表示访问列表`ls`中索引为 2 的元素(即`[[4, 5, 'ABC'], 6]`),再取这个列表中的索引为 1 的元素,结果为 6。
17.D
- 解析:答案是 D(异常报错)。 解释:`index()`方法用于从列表中找出某个值第一个匹配项的索引位置。在给定的列表`name = ['Amir', 'Betty', 'Chales', 'Tao']`中并不存在字符串“Edward”,所以调用`name.index("Edward")`会引发`ValueError`异常。
18. A
- 解析:`a.sort(reverse=True)`对列表`a`进行降序排序,结果为`[[4, 5, 6], [1, 2, 3]]`。
19. D
- 解析:切片操作`a[1:7:2]`从索引 1 开始到索引 7(不包括),步长为 2,结果为`['h', 'n', 's']`。
20. C
- 解析:`del a[1:]`删除列表`a`中索引为 1 及以后的所有元素,结果为`[0]`。
21. B
- 解析:选项 B 中`laowang`未用引号括起来,不是字符串类型,会报错。
22. A
- 解析:Python 列表是包含 0 个或者多个对象引用的有序序列,用方括号`[]`表示,长度可变,元素间用逗号隔开。
23. A
- 解析:`len(lis)`计算列表`lis`的长度,列表中有三个元素,结果为 3。
24. A
- 解析:当列表需要动态添加元素时,可以使用`append()`函数添加一个新的元素到列表的尾部。
25. B
- 解析:先计算`t1 * 2`得到`(2, 3, 2, 3)`,再与`t2`连接,结果为`(4, 5, 6, 2, 3, 2, 3)`。
二、判断题答案及解析
26. √
- 解析:字符串可以用“+”连接,结果为“hi lanxi!”。
27. ×
- 解析:有`break`不一定有`continue`,两者作用不同,不是必然同时出现。
28. ×
- 解析:字符串是不可变的数据类型。
29. √
- 解析:`while`循环的判断条件是表达式,只有当表达式的值为`True`的时候,才执行循环体。
30. ×
- 解析:字符串和列表都可以通过一定的方法转换成元组。
31. ×
- 解析:`[1, 2]`是一个列表,不能用`in`判断是否在另一个列表中,应该用`[1, 2] in [[1, 2], [3, 4], [5, 6]]`这样的形式。
32.×
- 解析:for语句与while语句在循环次数上的不同,while语句可以实现循环次数不确定的问题求解,本题说法太绝对了,不正确。
33. ×
- 解析:当遇到字符“W”时使用`break`跳出循环,输出结果为“Hello”。
34. √
- 解析:字典是无序的,存储键值对时不保证顺序。
35. ×
- 解析:`t2 = 1, 2, 3`,`t2`是`tuple`类型数据。
三、编程题解析
36. 参考代码:
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
# 分别接收用户输入的年份、月份和日期,并将其转换为整数类型
days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 定义一个列表,存储每个月的天数,默认平年的情况
if (year % 4 == 0 and year % 100!= 0) or year % 400 == 0:
days_in_month[1] = 29# 判断输入的年份是否为闰年,如果是闰年则将二月的天数改为 29
total_days = 0
for i in range(month - 1):
total_days += days_in_month[i]
# 通过循环累加输入日期之前的月份的总天数
total_days += day# 再加上输入的日期天数
print(f"这是{year}年的第{total_days}天。")# 按照要求的格式输出结果
总结:这个 Python 程序实现了一个日期计算器的功能,它要求用户输入年、月、日,然后通过判断输入的年份是否为闰年,确定每个月的天数。接着,程序通过循环累加输入日期之前的月份总天数,并加上输入的日期,从而计算出这一天是这一年的第几天。最后,程序以特定的格式输出结果,清晰地告知用户输入的日期在该年中的位置,整个程序利用了基本的条件判断和循环结构,能够准确地完成日期的计算任务。
37. 参考代码:
jvzi1 = "白日依山尽"
jvzi2 = "黄河入海流"
jvzi3 = "欲穷千里目"
jvzi4 = "更上一层楼"
poem = jvzi1 + "," + jvzi2 + "。" + jvzi3 + "," + jvzi4 + "."
print(poem)
总结:这段代码将四句古诗分别存储在四个变量中,然后通过字符串拼接的方式将这四句古诗组合成一首完整的诗,并输出。
学科网(北京)股份有限公司
$$