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

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

内容正文:

青少年软件编程(Python)等级考试试卷(三级) 202303真题与解析 分数:100  题数:37 测试时长:60分钟 1、 单选题(共25题,共50分) 1.十进制数111转换成二进制数是?( )(2分) A.111 B.1111011 C.101111 D.1101111 2.某班有36人,王老师想给每位同学分配一个二进制的学号,那么该学号至少需要多少位?( )(2分) A.36 B.5 C.6 D.7 3.数据的存储形式多种多样,如s1=[[“李亮”,“98”],[“王宁宁”,“95”],[“莫晓珍“,“88”]],s2=[“李亮”,“98”,“王宁宁”,“95”,“莫晓珍“,“88”],有关s1与s2下列说法正确的是?( )(2分) A.都是用列表实现的 B.s1是一维列表 C.s2是二维列表 D.要取出“王宁宁”同学的成绩,方法是一样的,用s1[4]或s2[4] 4.a=["跳绳","跳高","跳远","铅球"] fs=open("sports.csv","w") fs.write(" ".join(a)+' ') fs.close() 关于上述代码,下列说法正确的是?()(2分) A.若”sports.csv”文件不存在,则程序出错 B.程序的最后结果是:跳绳 跳高 跳远 铅球 C.程序中的fs.close()代码可有可无 D.“w”参数表示不能修改原csv文件 5.现有水果价格数据jg=[[‘草莓’,15],[‘梨子’,9],[‘苹果’,10],[‘桔子’,4]],需要将其打印成二维表格数据形式,程序代码如下: jg=[[‘草莓’,15],[‘梨子’,9],[‘苹果’,10],[‘桔子’,4]] for row in range(len(jg)): for col in range(len(jg[row])): print(____________,”\t”) 上述划线处代码是?()(2分) A.jg[row] B.jg[col] C.jg[col][row] D.jg[row][col] 6.运行下列程序段: try: a=int(input("请输入被除数:")) b=int(input("请输入除数:")) x=a/b print("商是:",x) except: print("输入有错!请检查。") else: print("正确!") finally: print("程序结束。") 若输入a为8,b为4,则输出结果是?()(2分) A. 商是:2 正确! B. 商是:2 正确! 程序结束。 C. 商是:2.0 程序结束。 D. 商是:2.0 正确! 程序结束。 7.已知A的ASCII码值为65, s=”China” k=abs(-4.8) 则表达式ord(min(s))+k的值是?()(2分) A.71.8 B.63 C.61 D.62 8.divmod(8,5)的结果是?( )(2分) A.1 B.3 C.(1,3) D.[1,3] 9.若有代码: name=[“李明”,“王宁”,“朱倩”] for a,i in enumerate(name): print(a,i) 则显示的结果是?()(2分) A. 0 李明 1 王宁 2 朱倩 B. 李明 王宁 朱倩 C.李明,王宁,朱倩 D. 1 李明 2 王宁 3 朱倩 10.有关于print()语句的运用,下列输出结果有误的是?( )(2分) A.print(“Happy!”) B.print(李明) C.print('Happy!’) D.print(2023) 11.若s=”y ea\tr”,则len(s)的值为?()(2分) A.8 B.4 C.6 D.5 12.b=[1,2,3,4,5],则sum(b)的值是?()(2分) A.10 B.14 C.15 D.12 13. 某算法的流程图如图所示,则该流程图的结构属于?()(2分) A.顺序结构 B.分支结构 C.树形结构 D.循环结构 14.有如下代码: a=[25,37,49,64,73,75,85,91] t=i=0 j=len(a)-1 key=int(input()) while i<=j: m=(i+j)//2 if a[m]==key: break elif a[m]>key: j=m-1 else: i=m+1 t+=1 print(t) 若输入的key值是73,则程序输出的结果是?()(2分) A.5 B.1 C.2 D.3 15.hex函数可以将十进制数转换成十六进制数。在Python交互式编程环境下,执行语句hex(2023)后,显示的运行结果是?( )(2分) A."0x7e3" B."0x7e6" C."0x7e7" D."0x7e8" 16.int() 函数用于将一个字符串或数字转换为整型。在Python交互式编程环境下执行以下语句,会出现错误的一项是?()(2分) A.int() B.int(1.0) C.int(0x20,16) D.int('2023',8) 17.一维数据可以存储在CSV格式文件中,下列描述正确的是?()(2分) A.必须采用逗号分隔数据元素 B.必须采用空格来分隔数据元素 C.必须采用分号分隔数据元素 D.允许采用特殊字符来分隔数据元素 18.如果需要使用open函数以可读可写的方式打开一个存储二维数据的CSV文件,则open函数的文件打开模式不能设置成?( )(2分) A.rw B.r+ C.w+ D.a+ 19.在try....except...else...finally异常处理机制中,如果发生异常则完全不会被执行的代码块是?( )(2分) A.try代码块 B.except代码块 C.else代码块 D.finally代码块 20.下列数据对象中,不能使用len()函数获取数据对象长度的是?( )(2分) A.2023 B.[2, 0, 2, 3] C.["Go", "China!"] D.("Go", "China!") 21.在Python交互式编程环境下,输入print(list(range(0,5,2)))语句,执行的结果是?()(2分) A.存在语法错误,不能执行 B.[0,1] C.[0, 1,2, 3,4,5] D.[0, 2, 4] 22.在交互式编程环境下,执行all([0,1,2,3])语句后,返回的值是?( )(2分) A.True B.False C.1 D.4 23.在交互式编程环境下,输入float("1")语句,执行的结果是?()(2分) A.1 B.1.0 C.'1' D.传入参数错误,不能执行 24.在交互式编程环境下,输入max([(1,2),(2,3),(3,4),(2,6)])语句,执行的结果是?( )(2分) A.6 B.(3, 4) C.(2,6) D.(3,6) 25.“鸡兔同笼”是一个古老的数学问题,可以应用枚举法求解,也可以利用二元一次方程进行求解。以下是使用计算机解决“鸡兔同笼”问题的几个步骤: ①编写Python程序,用计算机进行处理。 ②设计“鸡兔同笼”求解算法。 ③验证算法的功能和性能。 ④分析问题,确定解题任务。 使用计算机解决“鸡兔同笼”问题,正确的步骤是?(D )(2分) A.②④①③ B.④①②③ C.④②③① D.④②①③ 二、判断题(共10题,共20分) 26.若name为若干元素的列表对象,file为CSV文件,则file.write(‘,’.join(name)+’ ’)语句可确保列表中每个写入CSV文件的数据,在表格软件打开时作为一个单元格存在。( ) 27. 当程序发生异常时,我们可以用try…except…语句进行异常处理。但每个try模块只能有一个except语句块。() 28. float()函数可将整数转换为浮点类型数据,但不能将字符串中的数字转换为浮点类型数据。( ) 29. 在执行语句x=input()的过程中,若键盘输入23并按下回车键,则x的值就被赋值为整数23。( ) 30. Python语言中,bin()函数可以输出二进制数值,也可以传入参数用来设置输出为十六进制数值。() 31. 任何二维数据都可以用二维列表来表示。( ) 32. 执行语句wq=[[0]*19]*19可以创建一个19行及19列的二维表。( ) 33. bool()函数用于将给定参数或表达式转换为布尔类型。语句bool(-1)返回的是False值。() 34. enumerate()函数用于将列表、元组或字符串等可遍历的数据对象组合为一个索引序列。( ) 35.十六进制9E的二进制数是8位。( ) 三、编程题(共3题,共30分) 36.百钱买百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题,问题的原文是:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?这个问题用现代文描述起来就是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱。如果用100文钱买100只鸡,那么公鸡、母鸡和小鸡各应该买多少只呢?请完成下面程序中空白处的语句,实现对问题的求解,找出所有符合题目要求的买鸡方案,并输出。 #设cock、hen、chicken分别为公鸡、母鸡和小鸡的数量,num为符合题目要求的方案数目。 num=0 for cock in range(1,21): for hen in range(1,34): for chicken in ① : if ② == 100 and cock*5 + hen*3 + chicken/3 == ③ : num = ④ print(f'第 {num} 种方案是:公鸡{cock}只,母鸡{hen}只,小鸡{chicken}只') 37. 妙妙学校举行了知识竞赛,有一、二、三3个班分别派出最优秀的5名代表参加此次竞赛。这15名代表的成绩存放于”jscj.csv”文件中,现在妙妙读取了其中的数据,数据内容如图所示: 下列代码实现了读取竞赛分数信息,并输出各班平均分的情况,请你补全代码。 import csv with open("/data/jscj.csv",encoding="utf-8")as f: rows=list( ① (f)) sum=[0,0,0] for row in rows[1:]: if int(row[0])==1: sum[0]+=int(row[2]) elif int( ② )==2: sum[1]+=int(row[2]) else: sum[2]+=int(row[2]) for i in range(1,4): print(str(i)+"班的平均分为:",round( ③ /5,2)) 38.若要生成一个由若干小写字母组成的互不重复的随机数组,已知小写字母的ASCII码值为97~122整数范围,并将其进行从小到大输出,如图所示,请将相关程序补充完整。 import random #random是随机数模块 n=int(input("请输入元素个数(不超过26):")) a=[] #产生不重复的随机数组 for i in range(n): x=random.randint(97,122) #产生97-122之间的随机整数 while chr(x) in a: x=random.randint(97,122) a.append( ① ) print(a) #将各个元素进行排序输出 for i in range(n-1): k=i for j in range( ② ,n): if a[k]>a[j]: k= ③ if i!=k: a[i],a[k]= ④ print("该随机数组从小到大排列为:",a) 参考答案及解析: 一、单选题 1. 答案:D - 解析:十进制转二进制,采用除二倒取余数,直到商为0为止。 2. 答案:C - 解析:36 用二进制表示为 100100,至少需要 6 位二进制数。2⁵ = 32<36,2⁶ = 64>36。 3. 答案:A - 解析:s1 是二维列表,s2 是一维列表,要取出“王宁宁”同学的成绩,s1 用 s1[1][0],s2 用 s2[2]。 4. 答案:B - 解析:若“sports.csv”文件不存在,会自动创建;程序的最后结果是将列表中的元素用空格连接后写入文件,即为“跳绳 跳高 跳远 铅球”;fs.close()很重要,确保文件正确关闭;“w”参数表示覆盖写入,可以创建新文件,如果文件存在则会清空原有内容。 5. 答案:D - 解析:外层循环遍历行,内层循环遍历列,通过 jg[row][col]可以正确取出每个元素进行打印。 6. 答案:D - 解析:输入 a 为 8,b 为 4,程序正常执行,输出商是 2.0,然后进入 else 代码块输出“正确!”,最后执行 finally 代码块输出“程序结束。”。 7. 答案:A - 解析:s=”China”,min(s)='a',ord('a')=97,k = abs(-4.8)=4.8,所以 ord(min(s))+k = 97 + 4.8 = 71.8。 8. 答案:C - 解析:divmod(8, 5)返回商和余数组成的元组,8 除以 5 商 1 余 3,所以结果是(1, 3)。 9. 答案:A - 解析:enumerate(name)会生成一个可迭代的对象,包含索引和元素值,依次输出索引和对应元素。 10. 答案:B - 解析:print(李明)如果李明不是一个变量而是字符串应该用引号括起来,否则会报错。 11. 答案:C - 解析:s=”y ea\tr”,其中转义字符 和 \t 分别算一个字符,加上 y、n、e、a、r,共 6 个字符。 12. 答案:C - 解析:sum(b)是对列表 b 中的元素求和,1+2+3+4+5 = 15。 13. 答案:D - 解析:算法的基本结构有顺序结构、分支结构(也叫选择结构)、循环结构。循环结构的特点是在满足某一条件的情况下,重复进行某些操作,直到条件不满足。 14. 答案:C - 解析:这是一道对分查找算法题。主要功能是在列表a中查找数字73,输出查找次数。根据i,j的初始值,m=(0+7)//2=3,第一次对分访问的数据是64,由于64<73,第二次查找范围是i=4,j=7不变,此时t=1;第二次对分访问的是5号索引位上的75,由于75>73,第三次查找的范围是i=4不变,j=4,此时t=2;第三次对分访问的是4号索引位的73,由于73==73,执行break中断整个循环,故t+=1不执行,最后t的值为2。 15. 答案:C - 解析:hex(2023)将十进制 2023 转换为十六进制为 0x7e7。 16. 答案:C - 解析:int() 函数用于将一个字符串或数字转换为整型,C项缺引号。 17. 答案:D - 解析:一维数据存储在 CSV 格式文件中,可以采用逗号、空格、分号等多种特殊字符来分隔数据元素,不是必须固定某一种。 18. 答案:A - 解析:open 函数没有“rw”这种文件打开模式。“r+”可读可写;“w+”可读可写,创建新文件或覆盖原有文件;“a+”可读可写,追加模式。 19. 答案:C - 解析:如果发生异常,try 代码块中异常点之后的代码不会执行,执行 except 代码块,finally 代码块无论是否发生异常都会执行,而 else 代码块只有在没有异常发生时才会执行。 20. 答案:A - 解析:2023 是一个整数,不能使用 len()函数获取长度;[2, 0, 2, 3]是列表,可以用 len()获取长度为 4;["Go", "China!"]是列表,可以用 len()获取长度为 2;("Go", "China!")是元组,可以用 len()获取长度为 2。 21. 答案:D - 解析:range(0, 5, 2)生成 0、2、4 三个数的序列,list(range(0, 5, 2))将其转换为列表[0, 2, 4]。 22. 答案:B - 解析:all()函数判断可迭代对象中所有元素是否都为真值,[0, 1, 2, 3]中有 0,0 为假值,所以返回 False。 23. 答案:B - 解析:float("1")将字符串"1"转换为浮点数 1.0。 24. 答案:B - 解析:`max`函数比较元组时先比较第一个元素,再比较第二个元素。对于`max([(1,2),(2,3),(3,4),(2,6)])`,逐一比较后结果为`(3,4)`。答案是 B。 25. 答案:D - 解析:使用计算机解决问题首先要分析问题确定解题任务,然后设计算法,接着编写程序进行处理,最后验证算法的功能和性能。 二、判断题 26. 答案:正确 - 解析:列表中的数据元素以‘,’合并成字符串,最后在末位加换行符。 27. 答案:错误 - 解析:每个 try 模块可以有多个 except 语句块,用于处理不同类型的异常。 28. 答案:错误 - 解析:float()函数可以将整数和字符串中的数字转换为浮点类型数据。 29. 答案:错误 - 解析:执行语句 x=input(),若键盘输入 23 并按下回车键,x 的值被赋值为字符串“23”,不是整数 23。 30. 答案:错误 - 解析:bin()函数只能输出二进制数值,不能设置输出为十六进制数值。 31. 答案:正确 - 解析:任何二维数据都可以用二维列表来表示,二维列表可以灵活地存储和操作二维数据。 32. 答案:正确 - 解析:执行语句 wq=[[0]*19]*19 可以创建一个 19 行及 19 列的二维表,其中每个元素都是 0。 33. 答案:错误 - 解析:bool(-1)返回的是 True 值,因为非零值在布尔类型中被视为 True。 34. 答案:正确 - 解析:enumerate()函数用于将列表、元组或字符串等可遍历的数据对象组合为一个索引序列,方便同时获取索引和元素值。 35. 答案:正确 - 解析:十六进制转二进制,每1位十六进制数转换为4位二进制数,高位最左边的0可省略。E->1110,9->1001.共8位。 三、编程题 36.参考答案: 参考程序: #设cock、hen、chicken分别为公鸡、母鸡和小鸡的数量,num为符合题目要求的方案数目。 num=0 for cock in range(1,21): for hen in range(1,34): for chicken in range(1,101): if cock+hen+chicken == 100 and cock*5 + hen*3 + chicken/3 == 100: num = num +1 print(f'第 {num} 种方案是:公鸡{cock}只,母鸡{hen}只,小鸡{chicken}只') 试题解析: 评分标准: (1)range(1,101)或等效答案;(3分) (2)cock+hen+chicken或等效答案;(3分) (3)100或等效答案;(2分) (4) num +1或等效答案。(2分) 解析: 1. `range(1,101)`用于遍历小鸡数量,涵盖所有可能。 2. `cock+hen+chicken`验证三种鸡总数为 100。 3. 数字 100 用于判断总花费为 100 文。 4. `num +1`统计方案数目。 37.参考答案: 参考程序: import csv with open("/data/jscj.csv",encoding="utf-8")as f: rows=list(csv.reader(f)) sum=[0,0,0] for row in rows[1:]: if int(row[0])==1: sum[0]+=int(row[2]) elif int(row[0])==2: sum[1]+=int(row[2]) else: sum[2]+=int(row[2]) for i in range(1,4): print(str(i)+"班的平均分为:",round(sum[i-1])/5,2)) 本题主要考查文件的读取操作和计算思维。第一空为利用csv模块的reader对象读取文件内容;第二空属于分支结构的第二个分支,由第一个分支可知这里为讨论班级是否是2班,因此仍然是读取row[0]的数据;第三空是计算每个班的平均分,班级和循环变量i有关,sum中对应班级的索引和循环变量i相差1,故为sum[i-1]。 试题解析: 评分标准: (1)csv.reader;(1分) (2)row[0];(1分) (3)sum[i-1]。(2分) 解析: 1、rows = list(csv.reader(f)):使用csv.reader读取文件内容,并将其转换为列表形式存储在rows中。2、elif int(row[0]) == 2:判断当前行的第一个元素(班级编号)是否为 2。 3、round(sum[i - 1] / 5, 2):计算每个班级的平均分,sum[i - 1]表示对应班级的总分,除以 5 得到平均分,再使用round函数保留两位小数。 38.参考答案: 参考程序: import random #random是随机数模块 n=int(input("请输入元素个数(不超过26):")) a=[] #产生不重复的随机数组 for i in range(n): x=random.randint(97,122) #产生97-122之间的随机整数 while chr(x) in a: x=random.randint(97,122) a.append(chr(x)) print(a) #将各个元素进行排序输出 for i in range(n-1): k=i for j in range(i+1,n): if a[k]>a[j]: k=j if i!=k: a[i],a[k]=a[k],a[i] print("该随机数组从小到大排列为:",a) 本题主要考查选择排序。程序的第一部分是产生不重复的字母组成的数组。由于x是97~122中的随机整数,故追加到a列表中的元素应在x的基础上将其转化为字符,故①空填写chr(x);在选择排序中,外循环控制排序趟数,内循环控制排序次数,不难看出,i的取值范围为0~n-2,因此j每次从i的下一个位置开始至最后,故②处填写i+1;根据选择排序的原理,在j位置上找到比k位置更小的元素,则k移至该位置,故③处填写为j;在某趟排序过程中,当全部元素比较结束,应在最小元素位置上,需要将其交换到相应的i位置上,故④位置答案应为a[k],a[i]。 试题解析: 评分标准: (1)chr(x);(4分) (2)i+1;(4分) (3)j;(4分) (4)a[k],a[i]。(4分) 解析: 1、 a.append(chr(x)):将随机生成的整数对应的小写字母添加到列表a中。chr(x)函数将 ASCII 码值转换为对应的字符。 2、 range(i+1,n):在排序部分,外层循环控制已排序的部分,内层循环从当前已排序部分的下一个元素开始到列表末尾,进行比较和交换操作。 3、 k=j:如果发现当前元素比标记的最小元素还小,更新标记为当前元素的索引。 4、a[i],a[k]=a[k],a[i]:如果发现当前元素不是最小的,交换当前元素和最小元素的位置。 学科网(北京)股份有限公司 $$

资源预览图

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