原连接:竞赛考级题库--202406 青少年软件编程等级考试Python三级真题 - Python
1. 编程题
字母去重排序
在一列表中产生n个大写字母,删除其中重复字母,并按照A到Z顺序排列输出。同时输出删除字母个数。
例如输入 5 随机产生原始字母:[ "D","H","K","E","H"] 输出:去重后字母排序:["D","E","H","K"] 输出:共删除字母个数:1个。
请编写程序实现上述功能,或补全代码。
import random
#导入随机数模块
maxn=int(input("输入生成大写字母个数"))
a=[ ]
for i in range(maxn):
c=random.randint(1,26)#随机产生1-26之间的整数
numb=chr(64+c)
①
print("随机产生原始字母:",a)
m,n=0,maxn
while m<n:
i=n-1
while ② :
i=i-1
if i==m:
③
else:
a.remove(a[i])
n=n-1
for i in range(n):
for j in range(len(a)-1,i,-1):
if a[j]<a[j-1]:
④
print("去重后字母排序:",a)
print("共删除字母个数:", ⑤ ,"个")
查看答案https://tiku.kids-scratch.com/dist/#/topic?gid=acc7d8ebab72549c4cd0f83e7349b04c
2. 编程题
植树问题
如下图所示,在“植树.csv”中记录着2个班级多次植树的信息(第一列为班级名,第二列为本次植树的数量),输出每个班级植树的总数,请你补全代码。
import csv
with open("/data/植树.csv") as f:
h=list( ① )
s1=0
s2=0
for i in range(len(h)):
if int(h[i][0])==1:
s1=s1+int(h[i][1])
if int(h[i][0])==2:
s2=s2+ ②
print(s1,s2)
输出:
368 362
查看答案https://tiku.kids-scratch.com/dist/#/topic?gid=3e2ef2dae5d26fd1602b0114bf44faa9
3. 编程题
合作小组
班里有35位同学,新来的王老师想以随机组合的方式给同学们组建合作小组促进学习,已知同学们的学号范围是1~35号,王老师编写了以下程序来生成5个合作小组,如下图所示,请你帮忙补全代码:
import random#导入随机数模块
numbers=35*[0]#创建35个元素值均为0的列表
flags=35*[False]#创建35个元素值均为False的列表
①
while i<=34:
n=random.randint(1,35)#随机产生1-35之间的整数
if not flags[n-1]:
②
numbers[i]= ③
i+=1
for i in range(5):
print("第"+str( ④ )+"组:",numbers[i*7:7*(i+1)])
查看答案https://tiku.kids-scratch.com/dist/#/topic?gid=18b1890de43d81505c2ef6d1f3420acc
4. 单选题
观察下列程序代码并思考回答:
word=['I','really','like','the','cat','!']
f=open('words.csv','w')
f.write(' '.join(word))
f.close()
有关该段程序,下列说法正确的是?( )
A
'words.csv'文件需事先创建好,否则open()语句会出错
B
变量f表示该CSV文件对象
C
最终f对象中的内容是:I.really.like.the.cat.!
D
程序的主要目的是写入内容,因此f.close()最好不写
答案:B
分析:
‘w’参数表示只写,默认创建一个新文件,若文件已存在则覆盖写入数据,A错误;f.write(' '.join(word))表示将word中的数据元素以空格符进行连接成字符串,并写入到f文件对象中,C错误;未妥善关闭文件容易导致数据丢失或受损,D错误。
5. 单选题
下面转化结果与十六进制数3C不相等的是?( )
A
十进制数60
B
八进制数74
C
二进制数111110
D
hex(60)
答案:C
分析:
与十六进制数3C相等的二进制数为111100。
6. 单选题
经典的韩信点兵问题出自《孙子算经》,译文为:有一些不清楚数量的物品,如果三个为一组的数剩下两个,如果五个为一组的数剩下三个,如果七个为一组的数剩下两个,问这些物品共有多少个。解决此问题可以用哪种算法?( )
A
解析算法
B
枚举算法
C
排序算法
D
查找算法
答案:B
分析:
枚举算法的思想:罗列每一个可能的解,并进行条件判断,确定哪些为真正的解
7. 单选题
用python存储某餐馆菜单信息如下:
menu=['花雕醉湖蟹','三鲜汤','西湖醋鱼','酸辣土豆丝']
price=[78,36,118,28]
for i in range(len(menu)):
print(menu[i]+':'+str(price[i]))
关于该段程序,下列说法正确的是?( )
A
menu和price组成了一个二维数组
B
该段程序一共输出4行结果
C
若menu和price的元素数量不相同,程序也不受影响
D
程序中len(menu)改成len(price),其他不变,结果将不一样
答案:B
分析:
menu和price是两个列表形式表现的一维数组,相互独立,故A错;程序的功能是遍历数组中的每个位置,输出该位置上对应的菜名与价格,由于两个数组都是四个元素,故输出四次,共4行,B正确;只有两个数组(列表)元素个数相同,程序才能对位输出,否则将发生溢出错误,C错;由于len(menu)和len(price)值相同,故修改后结果不受影响,D不正确。
8. 单选题
下面两行代码执行结果是?( )
a = '0123456789'
print(min(a)+max(a))
A
9
B
0
C
09
D
a为字符串,不能获取大小值,代码会报错!
答案:C
分析:
a='0123456789',min(a)='0',max(a)='9',所以结果为两个字符串相连,正确答案为:09,也就是选项C。
9. 单选题
已知二维列表gz中存储了某单位部门部分人员的工资数据,如下所示:gz=[['a1','李明',6200],['a2','吴海',5600],['a3','殷小飞',6536]],那么想要查询'殷小飞'的工资情况可使用?( )
A
gz(3)
B
gz[3]
C
gz(2,2)
D
gz[2][2]
答案:D
分析:
这个二维列表中,'殷小飞'相关数据在第三项子列表中,由于Python中列表索引从0开始,且由[]表示,故应选择gz[2]得到['a3','殷小飞',6536],工资6536仍然是该项中的第三项,因此最后可由gz[2][2]得到。
10. 单选题
列表l=[9,2,8,6,3,4],采用选择排序进行升序排序,第二轮排序后的结果是?( )
A
2,3,4,6,8,9
B
2,3,4,6,9,8
C
2,3,8,6,4,9
D
2,3,8,6,9,4
答案:D
分析:
选择排序的思想:第1轮排序从第1个到第n元素中找到最小元素,如果最小元素不是第1个元素,就交换它和第1个元素的位置,所以第1轮排序的结果是:2,9,8,6,3,4;第2轮排序在第2个元素到第n个元素中找到最小元素,如果最小元素不是第2个元素,就交换它和第2个元素的位置,第2轮排序的结果是:2,3,8,6,9,4。
11. 单选题
现有一组初始记录无序的数据“5,8,6,3,9,2”,使用冒泡排序算法,按从小到大的顺序排列,第一轮排序的结果为?( )
A
5,6,3,8,9,2
B
5,6,3,8,2,9
C
5,6,8,3,2,9
D
5,8,3,6,9,2
答案:B
分析:
冒泡排序的思想:依次比较相邻的两个数将小数放在前面,大数放在后面。
12. 单选题
十进制数25,转化为二进制数为?( )
A
10011
B
11001
C
11000
D
11011
答案:B
分析:
十进制与二进制转化问题。
13. 单选题
如下3行代码,运行之后打印出来的结果是?( )
b = (6,9,2,7,5)
b = sorted(b,reverse=1)
print(b)
A
[2, 5, 6, 7, 9]
B
(2, 5, 6, 7, 9)
C
(9, 7, 6, 5, 2)
D
[9, 7, 6, 5, 2]
答案:D
分析:
本题考查学生对sorted()排序函数的理解与掌握。题中的两个要点。一:虽然原题中变量b是元组,但排序后打印出来是列表;二:sorted()函数的参数reverse=1为降序排列,reverse=0为升序排列,所以本题正确答案为D。
14. 单选题
八进制数30,转化为十进制数为?( )
A
24
B
30
C
64
D
192
答案:A
分析:
八进制与十进制转化问题。
15. 单选题
小明想得到整数9除以2的商和余数,所以他写下了表达式: x = divmod(9, 2)请问,表达式中的 x 是什么类型?( )
A
浮点数
B
整数
C
列表
D
元组
答案:D
分析:
本题考查学生对divmod()函数的理解,divmod()函数返回参数的商和余数,商和余数以元组的形式返回,所以x的类型,是元组。
16. 单选题
下列四个表达式,值最大的选项是?( )
A
round(5.2)
B
pow(1,8)
C
max(2,3,4,5,6)
D
len([2,3,4,5,6])
答案:C
分析:
round(5.2) 四舍五入结果是5;len([2,3,4,5,6])计算元素个数,结果也是5;max(2,3,4,5,6)找出元素中最大的数,结果是6;pow(1,8)计算1的8次方,结果是1。所以本题答案是选项C。
17. 单选题
小明编写了如下3行代码,请问代码运行后print()打印出的结果是?( )
a = set('大家好我是小明')
b = set('你好我是大明')
print(a & b)
A
{'大', '好', '我', '是', '明'}
B
{'大','家','好','我','是','小','明','你','好','我','是','大','明'}
C
{'家', '小', '你'}
D
{'好', '我', '是', '大', '明', '家', '小', '你'}
答案:A
分析:
本题是求两串字符的交集,选项A中的5个字,在两个字符串中都存在,所以答案是选项A。
18. 单选题
执行下面代码:
print(bool(4)+3)
结果应该是?( )
A
会报错!
B
6
C
4
D
7
答案:C
分析:
bool函数是int子类型,如果有参数,会返回True也就是整数1,所以正确答案是选项C,也就是数字4。
19. 单选题
有如下两行代码,请问代码运行之后,打印出的结果是?( )
a = [1,2,3,4,3,2,3,4,2,1,4]
print(list(set(a)))
A
[1,2,3,4,3,2,3,4,2,1,4]
B
{[1,2,3,4,3,2,3,4,2,1,4]}
C
{[1,2,3,4]}
D
[1,2,3,4]
答案:D
分析:
set()函数将列表a转为集合之后,会自动去除重复的元素,再次使用list()函数将集合转为列表,那么打印出来的结果就是选项D 。
20. 单选题
十进制数90,转化为十六进制数为?( )
A
50
B
1A
C
A5
D
5A
答案:D
分析:
十进制与十六进制转化问题。
21. 单选题
min()函数用于获取参数中的最小值,如果 a = min('654') ,请问下面表达式中,正确的是?( )
A
print(max(chr(a),3,2))
B
print(max(bin(a),3,2))
C
print(max(float(a),3,2))
D
print(max(hex(a),3,2))
答案:C
分析:
正确答案选C 。因为 min('654') 得到的是一个字符,而chr()、bin()、hex()三个函数的参数都必须是整数,所以唯一正确的是选项C ,float()函数可以将字符转换成浮点数。
22. 单选题
有关数据处理,下列说法正确的是?( )
A
一维数据通常采用列表形式来表示
B
二维数据只能通过CSV文件进行存储处理
C
列表不能表示二维数据
D
存储在列表中的数据,不可以写入到CSV文件中
答案:A
分析:
在Python中,通常采用列表来表示一维数据,二维数据也可以用二维列表来表示,A正确,B错误;CSV文件可存储一、二维数据,列表也是,C错误;列表中的数据可以通过遍历逐个写入CSV文件,D错误。
23. 单选题
下面两行代码运行的结果是?( )
x=['a','b','c','d']
print(list(enumerate(x)) )
A
( {'a','b','c','d'} )
B
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
C
['a','b','c','d']
D
(['a','b','c','d'] )
答案:B
分析:
enumerate() 函数用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标,所以正确答案为选项 B。
24. 单选题
下面代码中,运行结果不等于9,会出错的,是哪项?( )
A
sum([3,2,1],int('3'))
B
sum([3,2,1],max(1,2,3))
C
sum([3,2,1],[3])
D
sum([1,2,3,2,1])
答案:C
分析:
考查学生对常见内置函数的掌握情况。ABD三个选项运行结果都等于9,C末尾的3是列表中的元素,不能直接参与计算,所以会报错。
25. 单选题
有如下程序:
color=['红','橙','黄','绿','青','蓝','紫']
f=open('color.csv','w')
f.write(';'.join(color)+'\n')
f.close()
下列说法正确的是?( )
A
这段程序没有输出
B
color列表不可以理解成一个一维数组
C
f.close()语句可有可无
D
color.csv的结果内容是:红;橙;黄;绿;青;蓝;紫
答案:D
分析:
算法程序必有输出,这段程序的输出是color.csv文件,A错;color列表可理解成一个一维数组,B错;程序中文件没有用with语句打开,处理结束后不会自动关闭相应的文件,因此需要f.close()语句关闭文件,C错;程序功能是将各元素以“;”的形式连接在一起并输出,D正确。
26. 单选题
运行下列程序段:
try:
a=6
b = int(input('输入一个数'))
m=a/b
print('商是:',m)
except:
print('输入错误!')
else:
print('正确!')
finally:
print('程序结束!')
下面说法正确的是?( )
A
当输入0时程序出错无法运行
B
当输入1时,输出结果为:商是:6
C
当输入6时,输出结果为:商是:1.0 正确!
D
不管输入什么内容都会输出:程序结束!
答案:D
分析:
当try语句块正确时,执行try代码块结束,将执行else语句块,最后执行finally语句块。当输入有误,则执行except语句块和finally语句块。
27. 单选题
Python的异常处理try....except...else...finally机制中,以下表述哪项是错误的?( )
A
当碰到错误语句时,try代码块的剩余代码将会被忽略,执行except语句块
B
当try语句块正确时,try代码块执行完毕,不执行else语句块,执行finally语句
C
不管try代码块正确与否,finally代码都要执行
D
except程序段中语句可能会被执行,也可能不会被执行
答案:B
分析:
当try语句块正确时,try代码块执行完毕,执行else语句块。
28. 单选题
小明编写了如下4行代码,请问,代码中两次print()函数打印的结果,是什么状态?( )
a = [9,3,7,5,8,4]
print(sorted(a))
a.sort()
print(a)
A
第1次print(sorted(a)),a会降序排列;第2次print(a),a也会降序排列。
B
第1次print(sorted(a)),a会降序排列;第2次print(a),a会升序排列。
C
第1次print(sorted(a)),a会升序排列;第2次print(a),a也会升序排列。
D
第1次print(sorted(a)),a会升序排列;第2次print(a),a会降序排列。
答案:C
分析:
内置函数sorted()默认将列表中的数据升序排列;列表的sort()方法,默认也是将列表的值进行升序排列,所以正确答案是C。
29. 判断题
oct(10)和hex(10)的结果相等。( )
A
正确
B
错误
答案:错误
分析:
oct(10)='0o12' 是将十进制整数转换为八进制数字符串。
hex(10)='0xa' 是将十进制整数转换为十六进制数字符串。
30. 判断题
bin(10)的运行结果'0b1010';int("1101",2)的运行结果是13。( )
A
正确
B
错误
答案:正确
分析:
考核bin()将十进制整数转换为二进制数字符串,int()将二进制数字字符串转换为十进制数。
31. 判断题
请仔细阅读下面6行代码,请判断,代码运行后打印的结果应该是No,对吗?( )
a = all([1,2,3])
b = any([3,2,1])
if a == b :
print('Yes')
else:
print('No')
A
正确
B
错误
答案:错误
分析:
all()与any()两个函数,只要内部元素不为空,则都返回True,所以代码运行结果应该为Yes。判断应该选择“错误”。
32. 判断题
有如下所示6行代码,变量a与变量b都有5个元素。代码中两次print()打印出的结果可能不会一样!请判断对否?( )
a = {'1','2','3','4','5'}
b = ('1','2','3','4','5')
for x in a:
print(x)
for i in b:
print(i)
A
正确
B
错误
答案:正确
分析:
本题答案正确。变量a是集合,b是元组,元组有顺序,每次print()打印出来都一样,而集合无顺序,每次打印出来顺序都可能不同,所以二者打印出来的结果,可能不会一样。
33. 判断题
运行下列程序段时输入"good",则输出结果是:ok 。( )
try:
x=eval(input())
print(x)
except NameError:
print('ok')
A
正确
B
错误
答案:正确
分析:
输入对象类型错误,执行 print('ok')。
34. 判断题
关于文件的读取,readline()表示每次读取文件的一行,而使用read()和readlines()的结果是相同的。( )
A
正确
B
错误
答案:错误
分析:
readline()表示每次读取文件中的一行;read()表示每次读取整个文件,且整个文件内容以字符串形式返回,而readlines()表示每次按行读取整个文件内容,以列表类型返回数据。
35. 判断题
max()函数用于获取参数列表中的最大值,所以表达式
max(['1', '2' , '3'])与表达式max([1, 2, 3])运行结果是相同的。
请判断是否正确?( )
A
正确
B
错误
答案:错误
分析:
max(['1', '2' , '3'])运行结果是'3', max([1,2,3])运行结果是3,两个表达式运行的结果不同。
36. 判断题
执行:print(any(['小陈', 'False', '小李', 'True'])) 得到的结果是:False 。
请判断是否正确?( )
A
正确
B
错误
答案:正确
分析:
any的参数都是字符串,全真,所以返回True。
37. 判断题
有如下程序代码:
import csv
with open ("fruits.csv",'w')as f:
wrt=csv.writer(f)
wrt.writerows(['苹果','香蕉','西瓜','哈密瓜','桔子','香梨'])
这段代码中,writerows()实现了向'fruits.csv'进行多行输入。( )
A
正确
B
错误
答案:正确
分析:
writerow()函数以单行形式写入文件,writerows()以多行方式写入文件。
38. 判断题
向CSV文件中写入数据时,write()函数只能写入一行,而writelines()可以写入多行。( )
A
正确
B
错误
答案:错误
分析:
write()函数的参数是字符串,可向文件中写入一行或多行数据(字符串中包含换行符)