内容正文:
青少年软件编程(Python)等级考试试卷(三级)
202103真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共25题,每题2分,共50分)
1. 下列代码的输出结果是?( )
x = 0x10
print(x)
A. 2
B. 8
C. 10
D. 16
2. 关于语句f=open('d:/a.txt', 'r'),下列描述不正确的是?( )
A. f是变量
B. 'r'以只读方式打开文件
C. 如果文件a.txt不存在,不会报错
D. ‘d:/a.txt’是文件路径,代表d盘中一个名为‘a.txt’的文件
3. 表达式 all([1,True,True])的结果是?( )
A. 1
B. False
C. 出错
D. True
4. Python中表示合法的二进制整数是?( )
A. 0bC3F
B. 0B1010
C. 0B1019
D. 0b1708
5. 执行语句x,y,z=tuple([2,1,3])之后,变量y的值为?( )
A. 1
B. 2
C. [1]
D. [2,1,3]
6. 下列代码的执行结果是?( )
ls=[[1,2,3],[[4,5],6],[7,8]]
print(len(ls))
A. 1
B. 3
C. 4
D. 8
7. 下列能产生列表[1, 3, 5, 7, 9]的表达式是?( )
A. list(range(0,9))
B. list(range(1,10))
C. list(range(0,9,2))
D. list(range(1,10,2))
8. 二维列表data中,元素"3"的表示是?( )
data = [
[1,2],
[3,4]
]
A. data[0][0]
B. data[0][1]
C. data[1][0]
D. data[1][1]
9. 下列代码的输出结果是?( )
n = 2
b=bool(n-2)
print(n, b)
A. 2 0
B. 0 True
C. 2 False
D. 0 False
10. 键盘输入数字10,以下代码的输出结果是?( )
try:
n = input("请输入—个整数: ")
n= n*n
except:
print("程序执行错误")
A. 100
B. 10
C. 程序执行错误
D. 程序没有任何输出
11. 下列程序运行后的输出结果是?( )
for i in reversed(range(10, 0, -2)):
print(i,end=" ")
A. 2 4 6 8 10
B. 0 2 4 6 8 10
C. 12345678910
D. 9 8 7 6 5 4 3 2 1 0
12. 有如下列表1=[10,1,9,6,3,4],采用冒泡排序进行升序排序,请问第一趟排序之后的结果是?( )
A. [1,3,9,6,10,4]
B. [1,9,6,3,4,10]
C. [1,6,3,4,9,10]
D. [1,3,4,6,9,10]
13. 表达式max(3,min(5,1,7))的结果是?( )
A. 1
B. 3
C. 5
D. 7
14. set() 函数通过交集、差集、并集等关系删除重复数据,创建一个无序不重复元素集。
下列程序执行结果正确的是?( )
x=set("中国")
y=set("美国")
print(x & y )
A. {'中国'}
B. {'美国'}
C. {'中美国'}
D. {'国'}
15. 下列不能用于异常处理结构中捕获特定类型的异常的语句是?( )
A. try-else语句
B. try-except语句
C. try-except-else语句
D. try-except-finally语句
16. 下列表达式的结果不为10的是?( )
A. sum([1,2,3,4])
B. sum((1,2,3),4)
C. sum([1,2,3],4)
D. sum([1,2],[3,4])
17. 表达式divmod(40,3)的结果是?( )
A. 13,1
B. (13,1)
C. 13
D. 1
18. 小明想对列表arr = [5, 33, 21, 67, 39, 73, 7, 43 ]中的数值进行升序排序,于是他编写了“选择排序”程序,
在调试程序的过程,他故意将循环的次数改成了固定值,如下图所示。
请问,现在这个程序执行之后print(arr)打印出的结果应该是?( )
A. [5, 7, 21, 33, 39, 43, 67, 73]
B. [5, 7, 21, 33, 39, 73, 43,67]
C. [5, 7, 21, 67, 39, 73, 33, 43]
D. [5, 7, 21, 33, 39, 73, 67, 43]
19. 要表示10种不同的信息,需要的二进制位数至少为?( )
A. 2
B. 3
C. 4
D. 5
20. 下列代码的输出结果是?( )
for i in range(1,6):
if i%4== 0:
continue
else:
print(i,end =",")
A. 1,2,3,
B. 1,2,3,4,
C. 1,2,3,5,
D. 1,2,3,5,6,
21. 以下关于算法以及算法的描述,错误的是?( )
A. 算法必须要在有限的步骤内完成
B. 算法每个步骤的含义必须是确切的
C. 算法必须有输入,但可以没有输出
D. 算法可以没有输入,但必须要有输出
22. 八进制10与十六进制10相加,其对应的十进制数是?( )
A. 20
B. 26
C. 24
D. 18
23. 下列代码的输出结果是?( )
d ={"大海":"蓝色","天空":"灰色","大地":"黑色"}
print(d["大地"])
A. “大地”
B. 大地
C. "黑色"
D. 黑色
24. 假设city.csv文件内容如下,那么下列代码的输出结果是?( )
f=open("city.csv","r")
ls=f.read().split(",")
f.close()
print(ls)
A. ['巴哈马','巴林','孟加拉国','巴巴多斯
白俄罗斯','比利时','伯利兹']
B. ['巴哈马','巴林','孟加拉国','巴巴多斯','白俄罗斯','比利时','伯利兹']
C. ['巴哈马,巴林,孟加拉国,巴巴多斯,白俄罗斯,比利时,伯利兹']
D. ['巴哈马','巴林','孟加拉国','巴巴多斯','
','白俄罗斯','比利时','伯利兹']
25. 下列代码的输出结果是?( )
lis=list(range(4))
print(lis)
A. [0,1,2,3,4]
B. [0,1,2,3]
C. 0,1,2,3,
D. 0,1,2,3,4
二、判断题(共10题,每题2分,共20分)
26. int('0x25',16)语句和int('25',16)语句都能实现将十六进制数0x25转换成十进制数的功能。()
27. 使用open()函数打开'food.csv'文件后,返回的是列表。()
28. 数据可分为一维数据、二维数据和多维数据。()
29. 语句try-except-finally中finally语句无论异常是否发生都必须执行的语句。()
30. CSV文件的每—行是一维数据,可以使用Python中的列表类型表示。()
31. 二进制数 1010111转换为十六进制数是 A7。()
32. abs()函数的功能是将对小数进行取整,abs(-2.3)的运行结果是2。()
33. chr()函数用于将对象转换成字符串。()
34. enumerate() 函数将字符串、列表、元组、字典等组合为索引序列,同时列出数据和数据下标。()
35. senson=["春","夏","秋","冬"] ()
senson.remove("秋")
print(senson)
执行上面程序,结果为['春', '夏', '冬']
三、编程题(共3题,共30分)
36. 一个四位数,如果在它的左边加一个数字8,就可以得到一个五位数;如果在它的右边加一个数字6,就可以得到另一个五位数, 这两个五位数的和是121410。请问原来这个四位数是多少?
现在请你编写程序,求出这个四位数。
补全下面的代码:
for a in range( ① ):
for b in range( ② ):
for c in range(0,10):
for d in range(0,10):
if ( ③ )+( ④ ) == 121410:
print(a,b,c,d)
37. 请读取文件/data/subways.csv的数据,数据内容如下图显示:
下列代码实现了读取“学号”和“身高”信息,输出“身高”达到120的学号,请你补全代码。
import csv
with open('/data/ ① ') as f:
rows = list( csv.reader (f))
for row in rows[1:]:
if(int(row[1])>=120):
print( ② )
38. 有一组数据[0,20,0,4,31]存放在nums中,请将列表中的所有零移动到列表尾。
nums=[0,20,0,4,31]
initLen = ①
i=0
j=0
while i<initLen:
if ②:
③= nums[i]
j+=1
i+=1
④=( len(nums)-j)*[0]
print(⑤)
参考答案与解析
一、单选题
1. D
- `0x10`是十六进制表示法,转换为十进制为16。
- `print(x)`输出变量`x`的值,即16。
2. C
- `f`是变量,用于存储打开的文件对象,A正确。
- `'r'`表示以只读方式打开文件,B正确。
- 如果文件`a.txt`不存在,会报错,C错误。
- `‘d:/a.txt’`是文件路径,代表`d`盘中一个名为`‘a.txt’`的文件,D正确。
3. D
- `all()`函数用于判断可迭代对象中所有元素是否都为真值。列表`[1, True, True]`中所有元素都为真值,所以结果为`True`。
4. B
- Python中合法的二进制整数以`0b`或`0B`开头,数字只能是0和1。`0B1010`是合法的二进制整数。
5. A
- `tuple([2,1,3])`创建一个元组`(2,1,3)`,执行`x,y,z=tuple([2,1,3])`后,变量`y`的值为1。
6. B
- `ls=[[1,2,3],[[4,5],6],[7,8]]`是一个包含三个元素的列表,所以`len(ls)`的结果是3。
7. D
- `range(start, stop, step)`函数生成一个整数序列。`list(range(1,10,2))`生成从1开始,步长为2,到9结束的整数序列,即`[1, 3, 5, 7, 9]`。
8. C
- 二维列表`data`中,元素“3”位于第二行(索引为1)第一列(索引为0),所以表示为`data[1][0]`。
9. C
- `n = 2`,`b=bool(n - 2)`,`n - 2`的值为0,`bool(0)`的结果为`False`,所以输出`2 False`。
10. C
- `input()`函数返回的是字符串类型,`n = input("请输入—个整数: ")`,如果输入10,`n`是字符串“10”。执行`n = n*n`时会引发错误,因为字符串不能直接相乘,所以会执行`except`块中的代码,输出“程序执行错误”。
11. A
- `reversed(range(10, 0, -2))`生成从10开始,步长为-2,到2结束的逆序整数序列。`for`循环遍历这个序列并输出,结果是`2 4 6 8 10`。
12. B
- 冒泡排序第一趟比较会将最大的数移到末尾。对于列表`[10,1,9,6,3,4]`,第一趟排序后结果是`[1,9,6,3,4,10]`。
13. B
- `min(5,1,7)`的结果是1,`max(3,1)`的结果是3。
14. D
- `set()`函数创建集合。`x=set("中国")`得到集合`{'中', '国'}`,`y=set("美国")`得到集合`{'美', '国'}`。`x & y`表示求交集,结果是`{'国'}`。
15. A
- `try-except`语句用于捕获特定类型的异常;`try-except-else`语句在没有异常时执行`else`块中的代码;`try-except-finally`语句无论是否有异常,`finally`块中的代码都会执行。没有`try-else`语句用于捕获特定类型的异常。
16. D
- `sum([1,2,3,4])`的结果是10;`sum((1,2,3),4)`先计算元组`(1,2,3)`的和为6,再加上4结果为10;`sum([1,2,3],4)`先计算列表`[1,2,3]`的和为6,再加上4结果为10;`sum([1,2],[3,4])`会报错,因为`sum()`函数不能直接对两个列表求和。
17. B
- `divmod(40,3)`返回商和余数组成的元组,即`(13,1)`。
18. D
- 循环的参数设为range(0,4),是只循环了4次,所以选D。
19. C
- 要表示10种不同的信息,$2^n\geq10$,$n$至少为4。
20. C
- `range(1,6)`生成从1到5的整数序列。循环中,当`i%4==0`时执行`continue`跳过本次循环,否则输出`i`。结果是`1,2,3,5`。
21. C
- 算法必须有明确的输入和输出,输入可以没有,但输出必须有。
22. C
- 八进制10转换为十进制是8,十六进制10转换为十进制是16,两者相加为24。
23. D
- `d["大地"]`访问字典`d`中键为“大地”的值,即“黑色”,`print(d["大地"])`输出“黑色”,没有引号。
24. A
- `f.read().split(",")`以逗号为分隔符将文件内容分割成列表。无法去除换行符。'巴巴多斯
白俄罗斯'作为一个列表元素出现。
25. B
- `list(range(4))`生成从0到3的整数列表,即`[0,1,2,3]`。
二、判断题
26. 正确
- int('0x25',16)语句和int('25',16)语句都可以实现转换。
27. 错误
- 使用`open()`函数打开文件后返回的是文件对象,不是列表。
28. 正确
- 数据可分为一维数据、二维数据和多维数据。
29. 正确
- `finally`语句无论异常是否发生都必须执行。
30. 正确
- CSV文件的每一行是一维数据,可以用列表类型表示。
31. 错误
- 二进制数1010111转换为十六进制数是57。
32. 错误
- `abs()`函数的功能是返回一个数的绝对值,`abs(-2.3)`的结果是2.3。
33. 错误
- `str()`函数用于将对象转换成字符串,`chr()`函数是将一个整数转换为对应的字符。
34. 错误
- `enumerate()`函数将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,不能用于字典。
35. 正确
- `senson.remove("秋")`从列表`senson`中移除元素“秋”,结果为`['春', '夏', '冬']`。
三、编程题
36.参考代码:
评分标准:
①1,10 (2分 )
②0,10 (2分 )
③80000+a*1000+b*100+c*10+d (3分 )
④a*10000+b*1000+c*100+d*10+6 (3分 )
参考答案:
for a in range(1,10):
for b in range(0,10):
for c in range(0,10):
for d in range(0,10):
if (80000+a*1000+b*100+c*10+d)+(a*10000+b*1000+c*100+d*10+6) == 121410:
print(a,b,c,d)
#其中答案③和④可互换。
37.参考答案:
评分标准:
① subways.csv (2分)
② row[0] (2分)
参考程序:
import csv
with open('/data/subways.csv') as f:
rows = list( csv.reader (f))
for row in rows[1:]:
if(int(row[1])>=120):
print(row[0])
38、参考答案:
评分标准:
①len(nums)(3分)
② nums[i]!=0(4分)
③ nums[j](3分)
④ nums[j:](3分)
⑤ nums(3分)
参考程序:
nums=[0,20,0,4,31]
initLen = len(nums)
i=0
j=0
while i<initLen:
if nums[i]!=0:
nums[j]= nums[i]
j+=1
i+=1
nums[j:]=( len(nums)-j)*[0]
print(nums)
学科网(北京)股份有限公司
$$