内容正文:
青少年软件编程(Python)等级考试试卷(三级)
202409真题与解析
分数:100 题数:37 测试时长:60分钟
一、单选题(共25题,共50分)
1. 以下表达式的值为True的是?( )
A. all(' ','1','2','3')
B. any([])
C. bool('abc')
D. divmod(6,0)
2. 下列代码的运行结果是?( )
l=list(map(float, (1,2,3,4)))
print(l)
A. [1,2,3,4]
B. ['1','2','3','4']
C. [1.0,2.0,3.0,4.0]
D. ['1.0','2.0','3.0','4.0']
3. 关于filter()函数的使用,以下哪个选项不正确?( )
A. filter()函数可以用于过滤出一个序列里符合函数功能的元素
B. filter()函数接收两个参数
C. filter()函数只能过滤列表
D. filter()函数可与lambda匿名函数一起使用
4. 运行以下代码,得到的结果是?( )
a='20'
b='24'
print(a+b)
A. 44
B. 2024
C. 20+24
D. '44'
5. 表达式[1, 2, 3]*3的执行结果为?( )
A. [3,6,9]
B. [1,2,3],[1,2,3,],[1,2,3,]
C. [1, 2, 3, 1, 2, 3, 1, 2, 3]
D. [123123123]
6. 表达式[3] in [1, 2, 3, 4]的结果是?( )
A. 2
B. 3
C. False
D. True
7. 表达式 sum(range(5)) 的值为?( )
A. 5
B. 55
C. 10
D. 15
8. 表达式list(map(str, [1, 2, 3, 4, 5])) 的值为?( )
A. [1,2,3,4,5]
B. {1,2,3,4,5}
C. ['1','2','3','4','5']
D. {'1','2','3','4','5'}
9. 表达式divmod(6,2)结果为?( )
A. (3)
B. (0)
C. (3,0)
D. [3,0]
10. 运行以下代码,输出的结果是?( )
s='abcdefg'
print(min(s)+max(s))
A. ag
B. a
C. g
D. ga
11. 运行程序,下列说法正确的是?( )
c=["立春","雨水"]
f=open("jieqi.csv","a")
f.write(",".join(c)+"
")
f.close()
A. 如果存在jieqi.csv文件,将覆盖jieqi.csv文件内容
B. 如果不存在jieqi.csv文件,将产生一个jieqi.csv文件
C. 程序运行后jieqi.csv文件内容不变
D. 程序运行错误
12. 使用with语句可以读取csv格式文件中的数据,下图所示,有一个名为“jieqi.csv”的文件,小明针对这个文件编写如下代码,请问代码运行后打印在屏幕上的结果是?( )
with open("jieqi.csv","r") as f:
c=f.read().strip().split(",")
print(c)
A. 立春,雨水,惊蛰,春分
B. [立春,雨水,惊蛰,春分]
C. ['立春,雨水,惊蛰,春分']
D. ['立春','雨水','惊蛰','春分']
13. 使用 readline()和readlines()函数可以读取txt文件中的数据。D盘“jieqi.txt”文件内容如下图,小明编写了下面代码,运行后打印在屏幕上的结果是?( )
f=open(r"D:\jieqi.txt", "r")
s = f.readline()
s1=f.readlines()
f.close()
print(s1)
A. 立春
B. 雨水
C. [雨水,惊蛰,春分]
D. ['雨水
','惊蛰
','春分
']
14. 使用open函数打开一个csv格式文件后,如果要将整个文件里的内容读取存放到一个
字符串变量中,需要使用以下文件操作的哪个函数?( )
A. read()
B. readline()
C. readlines()
D. write()
15. 将水果价格一维数据['苹果','8元']写入"jiage.csv"文件操作,横线上填写正确的是?( )
f = open("jiage.csv", "w")
ls = ['苹果','8元']
f._____(",".join(ls)+ "
")
f.close()
A. insert
B. append
C. write
D. read
16. 下列哪个选项不是 bin() 函数返回值的特点?( )
A. 它以 '0b' 开头,表示这是一个二进制数
B. 它只包含字符 '0' 和 '1'
C. 它的长度总是固定的
D. 它表示的是输入整数的二进制表示
17. 对分查找,也称作二分查找,对一个列表中的元素进行对分查找的前提条件是?( )
A. 列表元素无序
B. 列表元素有序
C. 列表元素唯一
D. 列表元素数量必须是偶数
18. 对一组数据[7, 2, 9, 4, 8, 1, 4, 5]进行排序,使用选择排序按从大到小的顺序进行排列,则第1轮排序过后的结果是?( )
A. 2, 7, 4, 8, 1, 4, 5, 9
B. 9, 8, 7, 4, 2, 1, 4, 5
C. 9, 2, 7, 4, 8, 1, 4, 5
D. 7, 2, 4, 8, 1, 4, 5, 9
19. 对于列表[3, 1, 5, 8, 2, 10]按从左往右进行升序的冒泡排序,则第几轮排序后的结果就是有序的?( )
A. 3
B. 4
C. 5
D. 6
20. 十六进制数2024转换为二进制数是?( )
A. 2024
B. 10000000100100
C. 11000011100
D. 10000010100
21. 十进制数15转换为二进制数,其结果是?( )
A. F
B. 10101
C. 1101
D. 1111
22. 下列有关数制的说法,错误的是?( )
A. 二进制的基本数码是0、1、2
B. 数据在计算机内部是以二进制方式存储和处理的
C. 十六进制采用逢十六进一的进位规则
D. 十进制的8大小等同于十六进制的8,但十进制的18不等同于十六进制的18
23. 表达式oct(11)的值是?( )
A. '0b11'
B. '0x11'
C. '0o13'
D. 13
24. 请选择,下面代码运行之后的结果是?( )
a = '2'
b = '4'
try:
c = a * b
print(c)
except:
print('程序出错!')
else:
print('程序正确!')
A. 8
B. 24
C. 程序正确!
D. 程序出错!
25. 小明编写了如下代码,请问,代码运行后屏幕上打印出的结果是?( )
x = 8
y = [3,2,1,0]
z = y.pop(1)
try:
a = int(x / z)
except:
print('程序出错!')
else:
pass
finally:
print(a)
A. 8
B. 4
C. 程序出错
D. 屏幕上无输出
二、判断题(共10题,共20分)
26. 表达式bool(max(6,7,8))和max(bool(6,7,8))的运行结果都是True。( )
27. map()函数不改变原列表,而是返回一个新列表。( )
28. abs(-1.0)的运行结果为1。( )
29. 列表c=[[' 张三','88'],['李四','92'],['王五','85']]可以表示二维数据。( )
30. 在Python中使用with语句打开文件,程序运行处理结束后会自动关闭被打开的文件。( )
31. 在Python中open('city.csv','r')命令的作用是以可写入的方式打开文件名为city的csv格式文件。( )
32. 十六进制转换成十进制数,其位数一定会变多。( )
33. 假设五进制数2用(2)5表示,若表达式(6)n+(1)n=(10)n成立,那么该n进制一定为七进制。( )
34. 请仔细阅读以下代码,判断这段代码能否正常运行?( )
while True :
a = input('请输入一个整数,若不是整数将会强制让你重新输入: ' )
try:
b = int(a)
except:
print('你输入的不是整数!将返回重输。')
else:
print('你输入的是整数,程序结束。')
break
35. acsii(‘0’),运行的结果是48。( )
三、编程题(共3题,共30分)
36. 某实验小学举行了跳绳比赛,其中四年级1班和2班的比赛数据存储在“ts.csv”中,如图所示,现要求Python读取该比赛数据文件,并统计各班成绩在110(含110)以上的人数。实现代码如下,请你补全划线处代码:
import csv
with open ("/data/ts.csv") as fs:
hs=list(csv.reader( ① ))
c1=0
c2=0
for i in hs[1:]:
if i[0]=="1"and ② >=110:
c1+=1
elif i[0]=="2"and ③ >=110:
c2+=1
print("四(1)班110以上的有:"+str(c1)+"个")
print("四(2)班110以上的有:"+str(c2)+"个")
37. 有一个数字构成的列表 a = [6,2,3,5,4,5,2,6,5,5,4,3,7],小明用冒泡排序算法编写了一段程序,将列表中的数字从小到大排列,运行结果为: [2, 2, 3, 3, 4, 4, 5, 5, 5, 5, 6, 6, 7] ,请将下面程序中红色 ①②③ 处欠缺的代码补充完整。
a = [6,2,3,5,4,5,2,6,5,5,4,3,7]
for i in range(0, ① ) :
for j in range(i+1 , ② ) :
if ③ :
a[i] , a[j] = a[j] , a[i]
print(a)
38. 鸡兔同笼
小明在解决经典的“鸡兔同笼”问题时,使用“穷举法”编写了以下代码。请将代码中红色①②③④处补充完整:
tou = int(input("请输入笼中鸡与兔脑袋的总数: "))
jiao = int(input("请输入笼中鸡与兔脚的总个数: "))
a = 0
for ji in range( ① ):
tu = ② - ji
if 2 * ji + 4 * tu == ③ :
print("鸡的个数为:", ji, "兔的个数为:", tu)
a = a + 1
if a == ④ :
print("头数与脚数不合理,没有合适的结果。")
参考答案及解析:
一、单选题
1. 答案:C
- 解析:all(' ','1','2','3')中有空字符串,结果为False;any([])空列表结果为False;bool('abc')非空字符串为True;divmod(6,0)会报错。
2. 答案:C
- 解析:map(float, (1,2,3,4))将元组中的元素转换为浮点数,list()将结果转换为列表[1.0, 2.0, 3.0, 4.0]。
3. 答案:C
- 解析:filter()函数可以用于过滤出一个序列(不只是列表,还可以是元组等可迭代对象)里符合函数功能的元素,接收两个参数(一个函数和一个可迭代对象),可与lambda匿名函数一起使用。
4. 答案:B
- 解析:对于字符串,+操作表示拼接,所以结果是'2024'。
5. 答案:C
- 解析:[1, 2, 3]*3表示将列表[1, 2, 3]重复三次,得到[1, 2, 3, 1, 2, 3, 1, 2, 3]。
6. 答案:C
- 解析:[3]是一个列表,不是[1, 2, 3, 4]中的元素,所以结果是False。
7. 答案:C
- 解析:sum(range(5))计算0+1+2+3+4的结果为10。
8. 答案:C
- 解析:map(str, [1, 2, 3, 4, 5])将列表中的元素转换为字符串,list()将结果转换为列表['1','2','3','4','5']。
9. 答案:C
- 解析:divmod(6,2)返回商和余数组成的元组(3,0)。
10. 答案:A
- 解析:min(s)='a',max(s)='g',输出 min(s)+max(s)为'ag'。
11. 答案:B
- 解析:以'a'模式打开文件,如果文件不存在,将产生一个文件;如果文件存在,会在文件末尾追加内容,不会覆盖原有内容。
12. 答案:D
- 解析:f.read().strip().split(",")将读取的文件内容去除两端空白符,按逗号分割成列表,每个元素是一个字符串,所以结果是['立春','雨水','惊蛰','春分']。
13. 答案:D
- 解析:f.readline()读取文件的第一行,f.readlines()读取剩余的行并组成一个列表,每行末尾带有换行符,所以结果是['雨水
','惊蛰
','春分
']。
14. 答案:A
- 解析:read()函数可以将整个文件里的内容读取存放到一个字符串变量中;readline()每次读取一行;readlines()读取所有行组成一个列表;write()是用于写入内容。
15. 答案:C
- 解析:open("jiage.csv", "w")以写入模式打开文件,使用write函数写入内容。
16. 答案:C
- 解析:bin()函数返回的二进制数长度不固定,取决于输入整数的大小。
17. 答案:B
- 解析:对分查找的前提条件是列表元素有序。
18. 答案:C
- 解析:选择排序第一轮,从所有元素中找到最大的元素9,与第一个元素7交换位置,得到9, 2, 7, 4, 8, 1, 4, 5。
19. 答案:A
- 解析:第1轮:1 3 5 2 8 10;第2轮:1 3 2 5 8 10;第3轮:1 2 3 5 8 10。
20. 答案:B
- 解析:十六进制数2024转换为二进制数是10000000100100。
21. 答案:D
- 解析:十进制转二进制,采用除2倒取余数的方法,故选D。A为十六进制数,B和C混淆了十六进制和二进制的转换方法。
22. 答案:A
- 解析:二进制的基本数码是0和1,没有2。
23. 答案:C
- 解析:oct(11)将十进制数11转换为八进制,结果是'0o13'。
24. 答案:D
- 解析:变量a与b都是字符串,不能进行乘法运算,所以经过异常处理之后,会打印”程序出错!“。
25. 答案:B
- 解析:y.pop(1)取出列表y中的元素2,x / z = 8 / 2 = 4,没有异常发生,最后输出4。
二、判断题
26. 答案:错
- 解析:bool(max(6,7,8))结果为True;max(bool(6,7,8))会报错,因为bool(6,7,8)语法错误,max函数接收的参数应该是可比较的数值或可迭代对象中的数值。
27. 答案:对
- 解析:map()函数不改变原列表,而是返回一个新的可迭代对象,通常可以用list()转换为新列表。
28. 答案:错
- 解析:abs(-1.0)取-1.0的绝对值,结果为1.0。
29. 答案:对
- 解析:列表c=[[' 张三','88'],['李四','92'],['王五','85']]可以表示二维数据,每个子列表代表一行数据。
30. 答案:对
- 解析:在Python中使用with语句打开文件,程序运行处理结束后会自动关闭被打开的文件,无需手动调用close()方法。
31. 答案:错
- 解析:open('city.csv','r')是以只读的方式打开文件名为city的csv格式文件,不是可写入的方式。
32. 答案:错
- 解析:十六进制转换成十进制数,位数不一定会变多,例如十六进制数A(十进制为10)转换后还是两位数。
33. 答案:对
- 解析:(6)n+(1)n=(10)n,分别将n为不同进制代入验证,只有当n为七进制时等式成立。
34. 答案:对
- 解析:这段代码使用while循环不断接收用户输入,通过try-except判断输入是否为整数,如果不是则提示用户重新输入,是整数则输出并退出循环,能正常运行
35. 答案:错
- 解析:ord('0')的结果是48,acsii函数不存在。
3、 编程题
36.参考答案:
参考程序:
import csv
with open ("/data/ts.csv") as fs:
hs=list(csv.reader(fs))
c1=0
c2=0
for i in hs[1:]:
if i[0]=="1"and int(i[1])>=110:
c1+=1
elif i[0]=="2"and int(i[1])>=110:
c2+=1
print("四(1)班110以上的有:"+str(c1)+"个")
print("四(2)班110以上的有:"+str(c2)+"个")
试题解析:
评分标准:
(1)fs 或等效答案;(2分)
(2)int(i[1]) 或等效答案;(1分)
(3)int(i[1]) 或等效答案。(1分)
解析:
(1)在打开文件后,使用csv.reader(fs)读取文件内容,将其转换为可迭代对象,然后通过list()函数将其转换为列表,方便后续处理。
(2)对于每个数据行,如果是四(1)班且成绩大于等于 110,则增加四(1)班的计数,所以这里需要将成绩转换为整数进行比较,即int(i[1]) >= 110。
(3)同理,对于四(2)班的情况,也是比较成绩是否大于等于 110,即int(i[1]) >= 110。
37.参考答案:
参考程序:
a = [6,2,3,5,4,5,2,6,5,5,4,3,7]
for i in range(0,len(a)-1) :
for j in range(i+1 , len(a)) :
if a[i] > a[j] :
a[i] , a[j] = a[j] , a[i]
print(a)
试题解析:
评分标准:
(1)len(a)-1 或等效答案;(4分)
(2)len(a) 或等效答案;(2分)
(3)a[i] > a[j] 或等效答案。(4分)
解析:
(1)外层循环控制遍历整个列表的次数,通常为列表的长度减一,所以是len(a)-1。
(2)内层循环从i + 1开始,遍历剩余未排序的部分,也应该遍历到列表的末尾,所以也是len(a)。
(3)当a[i] > a[j]时,说明当前元素大于后面的元素,需要交换位置,以实现从小到大排序。
38.参考答案:
参考程序:
tou = int(input("请输入笼中鸡与兔脑袋的总数: "))
jiao = int(input("请输入笼中鸡与兔脚的总个数: "))
a = 0
for ji in range(tou+1):
tu = tou - ji
if 2*ji + 4*tu == jiao:
print("鸡的个数为:",ji,"兔的个数为:",tu)
a = a + 1
if a == 0 :
print("头数与脚数不合理,没有合适的结果。")
试题解析:
评分标准:
(1)tou+1 或等效答案;(4分)
(2)tou 或等效答案;(4分)
(3)jiao 或等效答案;(4分)
(4)0 或等效答案。(4分)
解析:
(1)鸡的数量可能是从 0 到脑袋总数tou,所以range(tou + 1),保证遍历所有可能的鸡的数量。
(2)兔子的数量等于脑袋总数减去鸡的数量,即tu = tou - ji。
(3)要判断鸡和兔的脚的总数是否符合输入的脚的总数,所以是jiao。
(4)如果没有找到合适的结果,即a为 0 时输出 “头数与脚数不合理,没有合适的结果。”。
学科网(北京)股份有限公司
$$