14 202406青少年软件编程(Python)等级考试试卷(三级)

标签:
普通文字版答案
2024-11-01
| 13页
| 155人阅读
| 4人下载

内容正文:

青少年软件编程(Python)等级考试试卷(三级) 202406真题与解析 分数:100  题数:37 测试时长:60分钟 1、 单选题(共25题,共50分) 1.现有一组初始记录无序的数据“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 2. 列表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 3. 经典的韩信点兵问题出自《孙子算经》,译文为:有一些不清楚数量的物品,如果三个为一组的数剩下两个,如果五个为一组的数剩下三个,如果七个为一组的数剩下两个,问这些物品共有多少个。解决此问题可以用哪种算法?( ) A. 解析算法 B. 枚举算法 C. 排序算法 D. 查找算法 4. 运行下列程序段: 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. 不管输入什么内容都会输出:程序结束! 5. Python的异常处理try....except...else...finally机制中,以下表述哪项是错误的?( ) A. 当碰到错误语句时,try代码块的剩余代码将会被忽略,执行except语句块 B. 当try语句块正确时,try代码块执行完毕,不执行else语句块,执行finally语句 C. 不管try代码块正确与否,finally代码都要执行 D. except程序段中语句可能会被执行,也可能不会被执行 6. 十进制数25,转化为二进制数为?( ) A. 10011 B. 11001 C. 11000 D. 11011 7. 八进制数30,转化为十进制数为?( ) A. 24 B. 30 C. 64 D. 192 8. 十进制数90,转化为十六进制数为?( ) A. 50 B. 1A C. A5 D. 5A 9. 下面转化结果与十六进制数3C不相等的是?( ) A. 十进制数60 B. 八进制数74 C. 二进制数111110 D. hex(60) 10. 用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),其他不变,结果将不一样 11. 有如下程序: color=['红','橙','黄','绿','青','蓝','紫'] f=open('color.csv','w') f.write(';'.join(color)+' ') f.close() 下列说法正确的是?( ) A. 这段程序没有输出 B. 该列表中的元素是二维数据元素 C. f.close()语句可有可无 D. color.csv的结果内容是:红;橙;黄;绿;青;蓝;紫 12. 已知二维列表gz中存储了某单位部门部分人员的工资数据,如下所示:gz=[['a1','李明',6200],['a2','吴海',5600],['a3','殷小飞',6536]],那么想要查询'殷小飞'的工资情况可使用?( ) A. gz(3) B. gz[3] C. gz(2,2) D. gz[2][2] 13. 有关数据处理,下列说法正确的是?( ) A. 一维数据通常采用列表形式来表示 B. 二维数据只能通过CSV文件进行存储处理 C. 列表不能表示二维数据 D. 存储在列表中的数据,不可以写入到CSV文件中 14. 观察下列程序代码并思考回答: 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()最好不写 15. 下面代码中,运行结果不等于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]) 16. 小明想得到整数9除以2的商和余数,所以他写下了表达式: x = divmod(9, 2) 请问,表达式中的 x 是什么类型?( ) A. 浮点数 B. 整数 C. 列表 D. 元组 17. 下面两行代码运行的结果是?( ) 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'] ) 18. 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)) 19. 小明编写了如下3行代码,请问代码运行后print()打印出的结果是?( ) a = set('大家好我是小明') b = set('你好我是大明') print(a & b) A. {'大', '好', '我', '是', '明'} B. {'大','家','好','我','是','小','明','你','好','我','是','大','明'} C. {'家', '小', '你'} D. {'好', '我', '是', '大', '明', '家', '小', '你'} 20. 如下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] 21. 执行下面代码: print(bool(4)+3) 结果应该是?( ) A. 会报错! B. 6 C. 4 D. 7 22. 小明编写了如下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会降序排列。 23. 有如下两行代码,请问代码运行之后,打印出的结果是?( ) 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] 24. 下列四个表达式,值最大的选项是?( ) A. round(5.2) B. pow(1,8) C. max(2,3,4,5,6) D. len([2,3,4,5,6]) 25. 下面两行代码执行结果是?( ) a = '0123456789' print(min(a)+max(a)) A. 9 B. 0 C. 09 D. a为字符串,不能获取大小值,代码会报错! 二、判断题(共10题,共20分) 26. bin(10)的运行结果是'0b1010';int("1101",2)的运行结果是13。( ) 27. oct(10)和hex(10)的结果相等。( ) 28. 关于文件的读取,readline()表示每次读取文件的一行,而使用read()和readlines()的结果是相同的。( ) 29. 向CSV文件中写入数据时,write()函数只能写入一行,而writelines()可以写入多行。( ) 30. 有如下程序代码 import csv with open ("fruits.csv",'w')as f: wrt=csv.writer(f) wrt.writerows(['苹果','香蕉','西瓜','哈密瓜','桔子','香梨']) 这段代码中,writerows()实现了向'fruits.csv'进行多行输入。( ) 31. 请仔细阅读下面6行代码,请判断,代码运行后打印的结果应该是No,对吗?( ) a = all([1,2,3]) b = any([3,2,1]) if a == b : print('Yes') else: print('No') 32. max()函数用于获取参数列表中的最大值,所以表达式 max(['1', '2' , '3'])与表达式max([1, 2, 3])运行结果是相同的。 请判断是否正确?( ) 33. 有如下所示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) 34. 执行:print(any(['小陈', 'False', '小李', 'True'])) 得到的结果是:False 。 请判断是否正确?( ) 35. 运行下列程序段时输入"good",则输出结果是:ok 。( ) try: x=eval(input()) print(x) except NameError: print('ok') 三、编程题(共3题,共30分) 36. 字母去重排序 在一列表中产生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("共删除字母个数:", ⑤ ,"个") 37. 植树问题 如下图所示,在“植树.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 38.合作小组 班里有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)]) 参考答案及解析: 一、单选题 1. 答案:B - 解析:冒泡排序的思想:依次比较相邻的两个数将小数放在前面,大数放在后面。 2. 答案: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。 3. 答案:B - 解析:韩信点兵问题可以通过枚举算法,逐一尝试可能的物品数量,直到满足条件为止。 4. 答案:D - 解析:当try语句块正确时,执行try代码块结束,将执行else语句块,最后执行finally语句块。当输入有误,则执行except语句块和finally语句块。 5. 答案:B - 解析:当try语句块正确时,try代码块执行完毕,会执行else语句块,然后执行finally语句块。 6. 答案:B - 解析:十进制数25转化为二进制数是11001。 7. 答案:A - 解析:八进制数30转化为十进制是3×8^1 + 0×8^0 = 24。 8. 答案:D - 解析:十进制数90转化为十六进制是5A。 9. 答案:C - 解析:十六进制数3C转化为十进制是60,八进制是74,hex(60)也是'0x3c',二进制是111100。 10. 答案:B - 解析:menu和price不是二维数组;若menu和price的元素数量不相同,程序会出错;程序中len(menu)改成len(price),其他不变,结果一样。该段程序会输出4行结果。 11. 答案:D - 解析:这段程序将列表color中的元素用分号连接后写入文件,有输出;列表中的元素不是二维数据元素;f.close()语句很重要,用于关闭文件资源,不是可有可无。 12. 答案:D - 解析:二维列表的索引方式是gz[索引1][索引2],所以查询'殷小飞'的工资情况可使用gz[2][2]。 13. 答案:A - 解析:一维数据通常采用列表形式来表示;二维数据可以通过多种方式存储处理,不只是CSV文件;列表可以表示二维数据;存储在列表中的数据可以写入到CSV文件中。 14. 答案:B - 解析:如果文件'words.csv'不存在,open()函数会自动创建新文件;变量f表示该CSV文件对象;最终f对象中的内容是:I really like the cat!;f.close()应该写,以确保文件资源正确释放。 15. 答案:C - 解析:sum([3,2,1],int('3')) = 9;sum([3,2,1],max(1,2,3)) = 9;sum([3,2,1],[3])会报错,因为sum函数的参数应该是可迭代对象中的数字,而不是列表;sum([1,2,3,2,1]) = 9。 16. 答案:D - 解析:divmod(9, 2)返回商和余数组成的元组。 17. 答案:B - 解析:list(enumerate(x))会生成一个可迭代对象,包含索引和元素值,转换为列表后是[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]。 18. 答案:C - 解析:a = min('654') = '4',对应的整数是4,max(float(a),3,2)是正确的表达式。 19. 答案:A - 解析:a & b表示两个集合的交集,即共同的元素组成的集合。 20. 答案:D - 解析:sorted(b,reverse=1)会将元组b进行排序并返回一个新的列表,降序排列。 21. 答案:C - 解析:bool(4)返回True,在算术运算中True相当于1,所以bool(4)+3 = 1+3 = 4。 22. 答案:C - 解析:print(sorted(a))会返回一个新的已排序列表,不改变原列表a的顺序,是升序排列;a.sort()会直接对原列表a进行升序排序。 23. 答案:D - 解析:list(set(a))将列表a转换为集合去除重复元素,再转换为列表,得到[1,2,3,4]。 24. 答案:C - 解析:round(5.2)=5;pow(1,8)=1;max(2,3,4,5,6)=6;len([2,3,4,5,6])=5。 25. 答案:C - 解析:a='0123456789',min(a)='0',max(a)='9',所以结果为两个字符串相连,正确答案为:09,也就是选项C。 二、判断题 26. 答案:对 - 解析:bin(10)将十进制数10转换为二进制数是'0b1010';int("1101",2)将二进制数'1101'转换为十进制数是13。 27. 答案:错 - 解析:oct(10)将十进制数10转换为八进制数是'0o12',hex(10)将十进制数10转换为十六进制数是'0xa',结果不相等。 28. 答案:错 - 解析:readline()每次读取文件的一行;read()读取整个文件内容为一个字符串;readlines()读取整个文件内容到一个列表中,结果不同。 29. 答案:错 - 解析:write()函数只能写入字符串;writelines()可以写入一个字符串序列(如列表),但不一定是多行。 30. 答案:对 - 解析:writerows()可以将一个可迭代对象(如列表)中的每个元素作为一行写入 CSV 文件,实现了多行输入。 31. 答案:错 - 解析:all([1,2,3])返回True,any([3,2,1])也返回True,所以结果应该是Yes。 32. 答案:错 - 解析:max(['1', '2', '3'])会按照字符串比较大小,返回'3';max([1, 2, 3])会按照数字比较大小,返回3,结果不同。 33. 答案:对 - 解析:集合和元组的遍历顺序不一定相同,两次print()打印出的结果可能不一样。 34. 答案:错 - 解析:any(['小陈', 'False', '小李', 'True'])中有非空元素,结果为True。 35. 答案:对 - 解析:输入对象类型错误,执行 print('ok')。 三、编程题 36.参考答案: 参考程序: import random maxn=int(input("输入生成大写字母个数")) a=[ ] for i in range(maxn): c=random.randint(1,26) numb=chr(64+c) a.append(numb) print("随机产生原始字母:",a) m,n=0,maxn while m<n: i=n-1 while a[i]!=a[m]: i=i-1 if i==m: m=m+1 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]: a[j],a[j-1]=a[j-1],a[j] print("去重后字母排序:",a) print("共删除字母个数:",maxn-n,"个") 试题解析: 评分标准: (1)a.append(numb) 或等效答案;(3分) (2)a[i]!=a[m] 或等效答案;(4分) (3)m=m+1 或等效答案;(3分) (4)a[j],a[j-1]=a[j-1],a[j] 或等效答案;(3分) (5)maxn-n 或等效答案。(3分) 解析: (1)a.append(numb):将随机生成的大写字母添加到列表a中。 (2)a[i]!= a[m]:在去重过程中,当当前元素与正在比较的元素不同时,继续向前查找。 (3)m = m + 1:如果找到了一个不重复的元素,移动指针继续下一个元素的检查。 (4)a[j], a[j - 1] = a[j - 1], a[j]:在排序过程中,如果后面的元素小于前面的元素,进行交换。 (5)maxn - n:计算删除的字母个数,初始长度为maxn,去重排序后长度为n,两者之差即为删除的字母个数。 37.参考答案: 参考程序: import csv with open("/data/植树.csv") as f: h=list(csv.reader(f)) 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+int(h[i][1]) print(s1,s2) 试题解析: 评分标准: (1)csv.reader(f) 或等效答案;(2分) (2)int(h[i][1]) 或等效答案。(2分) 解析: (1)csv.reader(f)用于读取 CSV 文件内容,将其转换为一个可迭代的对象,list(csv.reader(f))将这个可迭代对象转换为列表,方便后续的操作。 (2)int(h[i][1])表示将当前行的第二列(植树数量)转换为整数并累加到s2中。 38.参考答案: 参考程序: import random numbers=35*[0] flags=35*[False] i=0 while i<=34: n=random.randint(1,35) if not flags[n-1]: flags[n-1]=True numbers[i]=n i+=1 for i in range(5): print("第"+str(i+1)+"组人员:",numbers[i*7:7*(i+1)]) 试题解析: 评分标准: (1)i=0 或等效答案;(2分) (2)flags[n-1]=True 或等效答案;(3分) (3)n 或等效答案;(3分) (4)i+1 或等效答案。(2分) 解析: (1)初始化变量i为 0,用于遍历列表和填充numbers列表。 (2)当随机选取的学号未被使用时,将其标记为已使用,即flags[n - 1] = True。 (3)将随机生成的学号赋值给numbers[i],即numbers[i] = n。 (4)输出组号时,从 1 开始,所以是str(i + 1)。 学科网(北京)股份有限公司 $$

资源预览图

14 202406青少年软件编程(Python)等级考试试卷(三级)
1
14 202406青少年软件编程(Python)等级考试试卷(三级)
2
14 202406青少年软件编程(Python)等级考试试卷(三级)
3
所属专辑
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。