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

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

内容正文:

青少年软件编程(Python)等级考试试卷(三级) 202306真题与解析 分数:100  题数:37 测试时长:60分钟 1、 单选题(共25题,共50分) 1. 请选择,下面代码运行之后的结果是?()(2分) a = '2' b = '4' try: c = a * b print(c) except: print('程序出错!') else: print('程序正确!') A. 24 B. 8 C. 程序出错! D. 程序正确! 2. 下面程序执行结果是?()(2分) a=['春','夏','秋','冬'] c=list(enumerate(a)) print(c) A. [(0, '春'), (1, '夏'), (2, '秋'), (3, '冬')] B. [[0, '春'], [1, '夏'], [2, '秋'], [3, '冬']] C. [(1, '春'), (2, '夏'), (3, '秋'), (4, '冬')] D. [[1, '春'], [2, '夏'], [3, '秋'], [4, '冬']] 3. 下面程序执行结果是?()(2分) s='123456789' print(min(s)+max(s)) A. 1 B. 9 C. 10 D. 19 4. 打开b.txt文件,将"Hello Tom!"写入文件,下列语句正确的是?()(2分) A. f.write(['Hello'],[Tom!]) B. f.read('Hello',' Tom!') C. f.write('Hello Tom!') D. f.read('Hello Tom!') 5. 下列数据中,最大的数值是?()(2分) A. int('16',10) B. int('110',2) C. int('11',16) D. int('1111',2) 6. 十六进制数7E转换为二进制数是几位数?()(2分) A. 7 B. 6 C. 4 D. 2 7. 表达式int('13',8)的返回值是?( )(2分) A. 12 B. 11 C. 10 D. 15 8. 有如下代码: res = [] f = open('Python08.txt','r') #Python08.txt中共4行诗句 p = f.readlines() for s in p: res.append(s) print(res) f.close() 对于该段代码,说法不正确的是?(B)(2分) A. 程序的功能是按行读取文本文件中的内容,并将其逐一写入列表res B. 此处readlines()用法错误,应改成readline() C. 该文本文件和程序代码文件在同一文件夹下 D. 参数'r'不允许修改该文本文件 9. 有代码如下: s=["白日依山尽","黄河入海流","欲穷千里目","更上一层楼"] f=open('sj.txt','w') f.write(' '.join(s)) f.close() 关于上述代码,说法不正确的是?()(2分) A. 写入文本文件的步骤主要是打开——写入——关闭 B. f.write(' '.join(s))与f.write(' '.join(s)+' ')的功能是相同的 C. write()的参数是一个字符串,而writelines()的参数可以是字符串也可以是字符序列 D. 该代码的功能是将列表中的诗句按行写入文本文件 10. 编写程序代码时,我们经常会犯错,对于Python的异常处理,描述正确的是?( )(2分) A. 可以用if…elif…else…进行异常处理 B. 异常处理可以弥补程序漏洞,让程序在任何情况下都不会终止运行 C. 通过异常处理语句,当程序输入错误时,仍可以让程序继续运行 D. 当遇到错误语句时,将执行try代码块语句 11. 若scores="9,7,8,9,6,5",则list(scores)的结果是?( )(2分) A. [9,7,8,9,6,5] B. ['9','7','8','9','6','5'] C. ['9', ',', '7', ',', '8', ',', '9', ',', '6', ',', '5'] D. 9,7,8,9,6,5 12. 下列表达式的结果为True的是?()(2分) A. len("13"+"4")>14 B. ord(min("banana"))<65 C. sum([13,14,16])==53 D. any(["a","b","","d"]) 13. 下列有关于函数的说法,正确的是?( )(2分) A. bool( )函数是一个类型转换函数,用于将给定参数转换为布尔类型,若没有参数,则出错 B. ascii()函数和ord()函数功能都是返回一个数值类型的数据 C. filter()函数用于过滤序列,过滤不符合条件的元素,一般由两个参数组成,即函数和序列 D. map()函数主要用于画地图 14. 下列表达中,和range(8)的结果相同的是?( )(2分) A. range(0,8) B. range(1,8) C. range(0,8,2) D. range(1,9) 15. 已知x,y,z=map(int,['20','2','3']),则表达式x+y+z的结果是?( )(2分) A. 程序出错 B. 2023 C. 21 D. 25 16. 《孙子算经》是我国古代重要的数学著作,其中有一题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”小王同学用Python编写了如下程序: x=1 while x>0: if not ( ): x+=1 else: print(x) x+=1 关于上述程序,下列说法不正确的是?()(2分) A. 把第一个x+=1改成break,则程序输出一个结果 B. 括号内应填入的代码是x%3==2 and x%5==3 and x%7==2 C. 该程序是个死循环 D. 该程序将有无穷多个输出 17. 下列关于二维数据的描述,正确的是?( )(2分) A. 二维数据就是由两个一维数据组成 B. 二维数据由多个一维数据组成 C. 二维数据的每一个一维数据之间,只能采用逗号进行分隔 D. 二维数据不适合以表格的形式进行存储 18. 使用open函数打开某个CSV格式文件后,如果要将整个文件里的内容读取到一个列表中,需要使用以下文件对象的哪个函数?( )(2分) A. read() B. readline() C. readlines() D. flush() 19. abs()是Python的内置函数,执行abs(-1.00)语句返回的结果是?()(2分) A. -1.00 B. 1 C. 1.0 D. 1.00 20. divmod()是Python的内置函数。对应变量x和y,divmod(y,x)返回的结果是?()(2分) A. (x//y, x%y) B. (x%y, x//y) C. (y//x, y%x) D. (y%x,y//x) 21. 在交互式编程环境下执行a = input("请输入考试成绩:")语句后,通过数字键盘输入数值89.5。输入完成后,查看变量a的数据类型,会是下列哪一种?( )(2分) A. float B. int C. str D. bool 22. 执行print(list(range(4)))语句后,显示的结果是?()(2分) A. [0,1,2,3] B. [1,2,3,4] C. [0,0,0,0] D. ['' ,'' ,'' ,'' ] 23. 暴力破解是一种常见的网络攻击行为,它采用反复试错的方法去尝试破解用户的密码。这种黑客工具主要使用以下哪种算法进行设计?()(2分) A. 枚举算法 B. 解析算法 C. 排序算法 D. 对分查找算法 24. 对一组数据"6,1,3,2,8"进行排序,按从小到大的顺序进行排列,使用冒泡算法进行编程,则第一轮过后,排序的结果是?()(2分) A. 1,6,3,2,8 B. 1,3,6,2,8 C. 1,3,2,6,8 D. 1,2,3,6,8 25. 二进制数11110010转换为十六进制数是?()(2分) A. 1502 B. 152 C. F2 D. F02 二、判断题(共10题,共20分) 26. 下列这段代码能够正常运行。对吗?( ) while True : a = input('请输入一个整数,若不是整数将会让你重新输入: ' ) try: b = int(a) except: print('你输入的不是整数!将返回重输。') else: print('你输入的是整数,程序结束。') break 27. 一组有n个元素的数列,如采用顺序查找法找到数列中的某一个元素,平均查找次数为 (n+1)/2 次。( ) 28. 十进制数转十六进制数以后,位数一定变少了。( ) 29. 二进制数1101011011转换成十六进制数是35B。( ) 30. 使用open()方法一定要保证关闭文件对象,即调用close()方法。( ) 31.file=open('fruits.csv','r') name=file.read().strip(' ').split(',') file.close() 上述代码的功能是读取文件中的数据到列表。() 32.a=['shanghai','beijing','tianjin','chongqing','hangzhou'] with open ('city.csv','w')as f: f.write(','.join(a)+' ') 本段代码最后还缺少一条'f.close()'语句以关闭文件。() 33. sort()与sorted()函数的区别在于前者默认是升序,后者默认是降序。() 34. round()函数属于数学函数,可用于近似保留小数位数。( ) 35. sum()函数不仅可以对列表数据进行求和,也可以对元组数据进行求和。( ) 三、编程题(共3题,共30分) 36. 某班级期中考试成绩汇总在文件“score.csv”中,包含了语文、数学、英语三科的分数,数据内容如下图显示: 小明编写了如下程序,读取成绩文件中的数据,并分别计算语文、数学、英语三科成绩的平均分,请你补全代码。 import csv ChineseNum=0 MathNum=0 EnglishNum=0 num=0 with open('/data/score.csv',encoding='utf-8') as csv_file: row = csv.reader(csv_file, delimiter=',') next(row) # 读取首行 for r in row: ChineseNum += float( ① ) MathNum += float( ② ) EnglishNum += float( ③ ) num += ④ print("语文平均成绩是:%.2f"%(ChineseNum/num)) print("数学平均成绩是:%.2f"%(MathNum/num)) print("英语平均成绩是:%.2f"%(EnglishNum/num)) 37. 新学期到了,学校接收了一批捐赠的图书,小明编写了一个简单的程序用来管理图书,并支持借阅功能。为了提高查找图书的效率,小明使用了二分查找法来设计图书借阅功能。以下是小明编写的图书借阅管理程序,请你补全代码。 library=dict() #用字典生成一个图书管理数据结构(字典的键为编号,字典的值为['书名',本数]) #书籍入库 nums=len(library) #先计算图书编号总数 library[nums+1]=['红楼梦',5] #在编号总数的基础上继续添加新书:library[新编号]=['书名',本数] library[nums+2]=['西游记',10] library[nums+3]=['水浒传',5] library[nums+4]=['三国演义',10] print(library) blist=list(library.keys()) #按书名借阅: bookname=input('请输入借阅图书名称:') min_v = blist[0] max_v = blist[-1] turns=0 while min_v <= ① : turns += 1 cur = (min_v + max_v) ② print(cur) if library[cur][0] == ③ : if library[cur][1] > 0: library[cur][1] -= ④ print('《%s》借阅成功!'%bookname) else: print('抱歉,您选择的书籍已被借完!') break elif blist[cur-1] > cur: min_v = ⑤ else: max_v = ⑥ print("经过%d轮二分查找,完成图书的搜索。"%turns) 38. 某班“天天向上”小组共有6个同学,姓名和身高数据分别存放在列表a中,编写程序实现小组同学按身高从高到低输出名单,运行结果如图所示: 程序代码如下,请在划线处补充完整: a=[["李洪全",135],["王倩倩",154],["吴乐天",148],["周立新",165],["鲁正",158],["杨颖颖",150]] for i in range(1,len(a)): for j in range(0, ① ): if a[j][1] ② a[j+1][1]: a[j],a[j+1]=a[j+1],a[j] print("小组名单是:") for i in range(len(a)): print( ③ ) 参考答案及解析: 一、单选题 1. 答案:C - 解析:变量a与b都是字符串,不能进行乘法运算,所以经过异常处理之后,会打印”程序出错!” 2. 答案:A - 解析:enumerate(a)会生成一个可迭代对象,包含索引和元素值,形式为(索引, 元素),转换为列表后是[(0, '春'), (1, '夏'), (2, '秋'), (3, '冬')]。 3. 答案:D - 解析:min(s)='1',max(s)='9',输出 min(s)+max(s)为'19'。 4. 答案:C - 解析:打开文件后,使用 write()方法写入字符串,应该是 f.write('Hello Tom!')。 5. 答案:C - 解析:A为十进制16,B为十进制6,C为十进制17,D为十进制15。 6. 答案:A - 解析:十六进制转二进制,从低位起,每位十六进制可转换为4位二进制数,合并后最左边的“0”去除。 7. 答案:B - 解析:int('13',8)表示将八进制数 13 转换为整数,八进制 13 等于十进制 11。 8. 答案:B - 解析:readlines()用法正确,它可以按行读取文本文件内容并返回一个列表。程序功能是按行读取文本文件中的内容,并将其逐一写入列表 res;该文本文件和程序代码文件在同一文件夹下;参数'r'表示只读模式,不允许修改该文本文件。 9. 答案:B - 解析:写入文本文件的步骤主要是打开——写入——关闭;f.write(' '.join(s))是将列表中的元素用换行符连接后写入文件,f.write(' '.join(s)+' ')是将列表中的元素用空格连接后再加上换行符写入文件,功能不同;write()的参数是一个字符串,而 writelines()的参数可以是字符串也可以是字符序列;该代码的功能是将列表中的诗句按行写入文本文件。 10. 答案:C - 解析:不能用 if…elif…else…进行异常处理;异常处理不能保证程序在任何情况下都不会终止运行;通过异常处理语句,当程序输入错误时,可以让程序继续运行;当遇到错误语句时,会执行 except 代码块语句。 11. 答案:C - 解析:list()函数是python内置函数,功能是将序列中的元素转换为列表中的元素,转换中不改变元素的类型,故结果中的数字仍为字符串类型数字,元素包含逗号。 12. 答案:D - 解析:len("13"+"4")的长度为3,ord(min("banana"))为97,sum([13,14,16])为43,any()用于判断序列元素是否全为False。 13. 答案:C - 解析:bool()函数没有参数时返回 False;ascii()函数返回一个可打印的字符串,ord()函数返回字符的 ASCII 值;filter()函数用于过滤序列,一般由两个参数组成,即函数和序列;map()函数不是用于画地图,主要用于根据提供的函数对指定序列做映射。 14. 答案:A - 解析:range(8)和 range(0,8)的结果相同,都是生成 0 到 7 的整数序列。 15. 答案:D - 解析:x,y,z=map(int,['20','2','3']),分别将字符串转换为整数,x=20,y=2,z=3,x+y+z=20+2+3=25。 16. 答案:A - 解析:当x=1时,if条件取非后满足,执行break,则直接退出循环,程序并没有输出结果。故A错。由于x向上递增,while条件始终满足,故程序将是一个死循环,不断有满足条件的x将被输出。 17. 答案:B - 解析:二维数据由多个一维数据组成;二维数据的每一个一维数据之间可以采用多种方式分隔;二维数据适合以表格的形式进行存储。 18. 答案:C - 解析:read()读取整个文件内容为一个字符串;readline()读取一行内容;readlines()读取整个文件内容到一个列表中;flush()用于刷新文件缓冲区。 19. 答案:C - 解析:abs(-1.00)返回 1.0,是浮点数类型。 20. 答案:C - 解析:divmod(y,x)返回(y//x, y%x),即 y 除以 x 的商和余数。 21. 答案:C - 解析:input()接收的输入默认是字符串类型,所以变量 a 的数据类型是 str。 22. 答案:A - 解析:range(4)生成 0、1、2、3 的整数序列,list(range(4))转换为列表[0,1,2,3]。 23. 答案:A - 解析:暴力破解采用反复试错的方法,主要使用枚举算法进行设计。 24. 答案:C - 解析:冒泡排序第一轮,依次比较相邻两个数,将较大的数往后移,得到 1、3、2、6、8。 25. 答案:C - 解析:二进制数 11110010 转换为十六进制数是 F2。 二、判断题 26. 答案:对 - 解析:这段代码通过不断接收用户输入,尝试将其转换为整数,如果不是整数则提示重新输入,直到输入整数为止,然后结束程序。 27. 答案:对 - 解析:采用顺序查找法找到数列中的某一个元素,平均查找次数为 (n+1)/2 次。 28. 答案:错 - 解析:十进制数转十六进制数后,位数不一定变少,例如十进制数 10 转换为十六进制还是两位数 A。 29. 答案:对 - 解析:二进制转十六进制,从低位起,每4位二进制转1位,不足四位,高位补0。 30. 答案:对 - 解析:使用 open()方法打开文件后,一定要保证关闭文件对象,即调用 close()方法,以确保资源正确释放。 31. 答案:对 - 解析:代码先打开文件,读取文件内容,去除换行符,用逗号分割后存入列表,功能是读取文件中的数据到列表。 32. 答案:错 - 解析:使用 with open 语句打开文件时,不需要手动调用 close()方法,会自动关闭文件。 33. 答案:错 - 解析:sort()函数和 sorted()函数默认都是升序,区别在于 sort()是列表的方法,直接修改原列表,而 sorted()是内置函数,返回一个新的已排序列表。 34. 答案:对 - 解析:round()函数属于数学函数,可用于近似保留小数位数。 35. 答案:对 - 解析:sum()函数可以对列表和元组数据进行求和。 三、编程题 36.参考答案: 参考程序: import csv ChineseNum=0 MathNum=0 EnglishNum=0 num=0 with open('/data/score.csv',encoding='utf-8') as csv_file:     row = csv.reader(csv_file, delimiter=',')     next(row)  # 读取首行     for r in row:         ChineseNum += float(r[0])         MathNum += float(r[1])         EnglishNum += float(r[2])         num += 1 print("语文平均成绩是:%.2f"%(ChineseNum/num)) print("数学平均成绩是:%.2f"%(MathNum/num)) print("英语平均成绩是:%.2f"%(EnglishNum/num)) 试题解析: 评分标准: (1)r[0];(1分) (2)r[1];(1分) (3)r[2];(1分) (4)1。(1分) 解析: (1)r[0]表示语文成绩所在的列。 (2)r[1]表示数学成绩所在的列。 (3)r[2]表示英语成绩所在的列。 (4)num += 1是统计学生的数量,每遍历一行就加一。 37.参考答案: 参考程序: #学校图书管理系统 library=dict()            #用字典生成一个图书管理数据结构(字典的键为编号,字典的值为['书名',本数]) #书籍入库 nums=len(library)              #先计算图书编号总数 library[nums+1]=['红楼梦',5]     #在编号总数的基础上继续添加新书:library[新编号]=['书名',本数] library[nums+2]=['西游记',10] library[nums+3]=['水浒传',5] library[nums+4]=['三国演义',10] print(library) blist=list(library.keys()) #按书名借阅: bookname=input('请输入借阅图书名称:') min_v = blist[0] max_v = blist[-1] turns=0 while min_v <= max_v:     turns += 1     cur = (min_v + max_v) // 2     print(cur)     if library[cur][0]==bookname:                 if library[cur][1] > 0:              library[cur][1] -= 1             print('《%s》借阅成功!'%bookname)         else:             print('抱歉,您选择的书籍已被借完!')         break     elif blist[cur -1] > cur:         min_v = cur +1     else:         max_v = cur -1 print("经过%d轮二分查找,完成图书的搜索。"%turns) 试题解析: 评分标准: (1)max_v;(2分) (2)// 2;(2分) (3)bookname;(3分) (4)1;(3分) (5) cur +1;(3分) (6)cur -1。(3分) 解析: (1)max_v:作为循环条件,确保在最小索引小于等于最大索引时继续循环。 (2)// 2:取中间索引。 (3)bookname:判断当前中间位置的图书名称是否为要借阅的图书名称。 (4)1:每借阅成功一本,该书的数量减一。 (5)cur + 1:如果当前中间位置的图书名称小于要借阅的图书名称,调整最小索引为当前中间索引加一。 (6)cur - 1:如果当前中间位置的图书名称大于要借阅的图书名称,调整最大索引为当前中间索引减一。 38.参考答案: 参考程序: a=[["李洪全",135],["王倩倩",154],["吴乐天",148],["周立新",165],["鲁正",158],["杨颖颖",150]] for i in range(1,len(a)):     for j in range(0, len(a)-i):         if a[j][1] < a[j+1][1]:             a[j],a[j+1]=a[j+1],a[j] print("小组名单是:") for i in range(len(a)): print(a[i][0]) 本题考查冒泡排序算法。从外循环看,6个元素排5趟,应该能全部排整齐。内循环每趟主要从第一个元素开始,相邻元素两两相比,i=1时,j最终取到4,i=2时,j最终取到3,i=3时,j最终取到2,i=2时,j最终取到1,i=1时,j最终取到0,由于range()的终值是取不到的,故第一空应填len(a)-i;根据题目从高到低的要求,若前一个数小于后一个数,则应将其往后移,故第二空应为”<”;由输出结果观察可知,只需要输出排序后列表中的姓名部分,故第三空应填a[i][0]。 试题解析: 评分标准: (1)len(a)-i;(4分) (2)<;(3分) (3)a[i][0]。(3分) 学科网(北京)股份有限公司 $$

资源预览图

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