《2021年6月份青少年软件编程(Python)等级考试试卷(四级)-20210623093122808.docx》由会员分享,可在线阅读,更多相关《2021年6月份青少年软件编程(Python)等级考试试卷(四级)-20210623093122808.docx(13页珍藏版)》请在课桌文档上搜索。
1、青少年软件编程(PythOn)等级考试试卷(四级)分数:100.00题数:38一、单选题(共25题,每题2分,共50分)1 .对自然数1至n求和,如果将递推式f(n)=f(n-l)+n(n>l)转化成递归函数,则递归出口是?()Asf(l)=lB.f(l)=0C、f(0)=lD、f(0)=0答案:A试题解析:2 .对比两个求等差数列l+2+n的和的程序,其算法效率?()程序1:n=int(input()s=(l+)*n2print(s)程序2:n=int(input()S=Oforiinrange(n+l): s=s+iprint(s)A、程序1比程序2高B、程序2
2、比程序1高Cs一样高D、不能判断答案:A试题解析:理解算法性能、算法效率概念3 .若以下程序段的运行结果为,*#*#*,则空格 、 处填写结果不可能为?()deff(n): s= foriinrange( m): ifi%2=1: s=s+*
3、 else: s=s+# returnsprint(f(  X2) )A、3,8B、3,7C、9,14D、1,6答案:B试题解析:当变量i为奇数时,S累计符号,所以range函数的初始值为奇数,又因为总共输出了5个符号,所以range函数的终值为初始值+5。4 .有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。假如兔子都不死,要求输出一年内兔子的数量是多少。如果采用递归算法来编程,则核心的
4、递归逻辑应该是?OA、f(n)=n*f(n-l)f()=f(n-l)+nCsf(n)=f(n-l)+f(n-2)Dxf(n)=f(n-l)+(n-l)f(-2)答案:C试题解析:只有C是符合题意的递推式。5 .下列程序使用了哪种算法?()deffact(n): ifn=0: return1 else: returnn*fact(n-l)A、递推B、递归C、排序D、分治答案:B试题解析:6 .以下几项关于函数的说法,错误的是?()A、函数是一段具有特定功能的语句
5、组B、调用函数时,参数传入的顺序必须与定义时保持一致C、在一个程序中,函数的定义可以放在函数调用代码之后D、使用函数可以增加代码重复利用率,还可以降低维护难度答案:C试题解析:函数是一段具有特定功能的语句组,使用函数能够提高代码的重复利用率,降低维护难度;调用函数时,参数传入的数量、顺序必须与定义时一致;函数必须定义在前,才可以调用。7 .下面关于递归的描述不正确的是?()A、递归思想是将大型复杂的问题转化为一个与原问题相似的规模较小的问题来求解B、递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,它不是分治策略的具体体现C、递归必须有终止递归的条件D、递归是在过程或函数里调用自身
6、答案:B试题解析:递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,它是分治策略的具体体现8,下列哪项不是分治算法所具有的特征?()A、该问题的规模缩小到一定的程度就可以容易地解决B、该问题可以分解为若干个规模较小的不同问题C、利用该问题分解出的子问题的解可以合并为该问题的解D、该问题所分解出的各个子问题是相互独立的答案:B试题解析:9.以下能正确计算出mI!+3!+5!”值(n!=lx2x3-)的自定义函数是?()A、deff(): s=0 t=l foriinrange(l,612): &n
7、bsp; t=t*i s=s+t returnSB、deff(): s=0 t=0 foriinrange(l,612): t=t*i s=s+t returnSC、deff(): s=0 t=l foriinrange(l,612): &n
8、bsp; t=t*i ifi%2=l: s=st returnSDxdeff(): s=0 t=l foriinrange(l,6): t=t*i ifi%2=l: s=s+t return
9、s答案:D试题解析:A选项和C选项求的是1*1+1*1*3+1*1*3*5的值;B选项由于t=0,乘以任何数都等于0,所以最终结果为0。10 .下面关于递归算法的描述,错误的是?()A、任何递归程序都可以改写成非递归程序B、定义简单,逻辑清晰C、算法的执行效率较高D、原问题与子问题在结构上必须相似答案:C试题解析:C11 .下列关于函数的描述正确的是?OA、使用函数的唯一目的是减少代码的重用不带return的函数返回值是NoneC、带有默认值的参数可以放在位置参数之前D、函数可以有多个参数,参数之间使用;隔开答案:B试题解析:自定义函数中,可以有返回值,return语句;也可以没有返回值,不带
10、return语句的,返回值是NOne以下程序是用什么算法思维来显示数列1,4,7,10,13t16?()a=lforiinrange(6): print(a) a+=3A、递归B、递推C、分治D、枚举答案:B试题解析13 .运行下列这段程序,正确的输出结果是?()deff(a,b): c=a*2+b b=a returnca=5b=100c=f(a,b)bprint(c)A、210B、225C130D、115答案:B试题解析:函数的形参作用域为本函数,实参变量b的值没有改变,还是IO0
11、。14 .安装WheeI,wheel用于离线安装已经下载到本地的Whl文件可以在命令窗口直接运行?OA、piplistpipwheelC、pipunistallwheelDpipinstallwheel答案:D试题解析:知道pip、wheekexe安装方法15 .下列选项中,哪个选项调用如下函数会报错?()defshow(numbers): forninnumbers: prit(n)A、show(4,5,6)B、show(,Chinese,)C、show(3,4)D、show(4,5,6)答案:C试题解析:调用函数时参数传入
12、,数量必须一致16 .运行下列程序,输出结果正确的是?()defdemo(lst1k): ifk<len(lst): returnlstk:+lst:klst=l,2,3l4,5,6prit(demo(lst,4)A.4,5,6,1,2,3B.5,6,1,2,3,4C.6,5,4,3,2,1D、123,4,5,6答案:B试题解析:运行结果是函数的返回值,返回值为两个列表的合并17 .在解决问题过程中,常用的“二分法”是一种什么算法?()A、分治B、递归C、推理D、递推答案:A试题解析:18 .在PythonShell提示
13、符下输入以下哪个选项,回车后,再输入pi1回车,能得到数值3.141592653589793?()AximportmathimportmathaspiC、frommathimportPlDxfrommathimport*答案:D试题解析:掌握import和from方式19,下列程序段中自定义函数do(n)的作用是?()defdo(n): s=0 f=l foriinrange(l,n+l,2): s=s+li*f f=-f &n
14、bsp;returnSprit(do(10)A、求1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10的值B、求1+1/3+1/5+1/7+1/9的值C、求1-1/3+1/5-1/7+1/9-1/10的值D、求1-1/3+1/5-1/7+1/9的值答案:D试题解析:当调用自定义函数do(10)时,range(1.11,2)表示生成的序列为1,3,5,79而变量f的作用是在1和-1之间互相转换,所以运算符号“+”、交替出现。20 .下列几个选项中,不是PythOn定义函数规则的是?()A、def关键字开头,后接函数名加括号,以冒号结束B、Python定义函数时,必须声明形
15、参类型C、返回值写在return后面D、使用函数名()的方式调用函数答案:B试题解析:Python定义函数的规则:以def开头,后接函数名和():,有参数写在()中,下一行缩进,如果有返回值则写在return后面。Python定义函数时,不需要声明函数参数的类型21 .以下哪项不是使用分治法解决问题的步骤?()A、分解B、求解C合并D、判断答案:D试题解析:22 .在PythOn中,调用下面函数的返回值为?()deffun(): x=101A、NoneB、IOlC、程序报错D、x=101答案:A试题解析:没有return语句的函数,返回值是None23 .下列哪个选项的返
16、回值与其他三项不同?()A、round(3.176)abs(-3)C、ord(13,)D.Ie(l,2,3)答案:C试题解析:round(x,n)对X进行四舍五入(如果给定n,就将数X转换为小数点后有n位的数),所以A选项返回值为30abs(x)返回X的绝对值,所以B选项的返回值为3。Ord(X)返回X对应的ASeIl值,所以C选项的返回值为51。Ien(Seq)返回序列的长度,所以D选项的返回值为3024 .下列哪个是正确的函数名?()A、Plan_20212021planC、returnDxIOpIanlO答案:A试题解析:函数的命名规则与变量名一致,由字母、数字和下划线组成,不能以数字开
17、头,字母区分大小写,不能使用PythOn中的关键字,如return。25 .以下函数的返回值是?()defpic(a:int,b:str)->str: c=a*b print(c) returncpic(5;*#*)A、*#*#*#*#*#*B、5C5*#*D、程序出错答案:A试题解析:Python是动态语言,自定义函数时不需要声明与指定类型,但是在Python3.5之后,新增了对函数参数和返回值的类型指定和检查。即使参数输入类型与定义时不一致,实际上运行不会报错,Python的本质还是动态语言。二、判断题(共10题,每题
18、2分,共20分)26 .递归方法的运用不仅会简化主程序的设计,也会大大减少程序的代码量。答案:正确试题解析:正确。递归能减少程序的代码量27 .在Python中定义函数时不需要声明函数的返回值类型。答案:正确试题解析:28 .Python程序是模块化架构,以Py的文件可以作为一个模块被引用。一些Python爱好者和支持者开发和分享了大量扩展库(包),可以根据需要用包管理器来安装或自定义,体现了Python语言强大的扩展性。答案:正确试题解析:理解模块化架构和包的管理29 .通常问题的规模越大算法执行的时间就越长,算法执行时间的增长率和问题规模的增长关系,称为空间复杂度。答案:错误试题解析:时间
19、复杂度和空间复杂度的概念,本题是时间复杂度的描述,不是空间复杂度。30 .将一个大问题分解为若干子问题,且子问题与大问题是相同的问题,就构成了递归。答案:错误试题解析:还需要满足一个条件:不能无限制地调用本身,须有个出口,化简为非递归状况处理。31 .将一个复杂的问题分解成若干个规模较小的子问题后,能不能利用分解出的子问题的解合并得到原问题的解是最关键的特征,它决定了是否可以使用分治算法。答案:正确试题解析:如果一个问题能够分解成若干个相同的规模较小的子问题,但是合并子问题的解不能得到原问题的解,就决定是该问题不能够运用分治算法求解。但是可以深度贪心算法或者动态规划算法求解。32 .已知大写字
20、母“A”对应的ASCIl码值为65,变量Ch保存输入的大写英文字母,则语句chr(ord(ch)+l-ord(,A)%26+ord(A)能实现大写英文字母后移一位,如AB,BC,YT乙ZA0答案:正确试题解析:Ord(X)函数的作用是返回X对应的ASell直Chr(X)函数的作用是返回X对应的字符,x%y表示X除以y取余数,已知大写英文字母26为一循环,所以语句,chr(ord(ch)+l-ord(A)%26+ord(A)能实现大写英文字母后移一位。33,下列程序段运行后,打印结果为90deff(): s=0 foriinrange(3,l,-l):
21、 ifi<=l: x=l ifi<=2: x=2 ifi<=3: x=3 s=s+x returnSPrint(f()答案:错误试题解析:循环结构中循环变量i的值只能
22、取到3和2。当i=3时,x=3,s=3;当i=2时,x=3,s=o34. 可以统计字符串、列表、元组、字典等内某元素个数的PythOn内置函数是index。答案:错误试题解析:可以统计字符串、列表、元组、字典等内某元素个数的Python内置函数是COUnt()。35.判断下列代码的正确与错误。deff(a,b,c): print(a+blb,c-a)f(8,b=2,6)运行上述程序段,结果为10 2 -2o答案:错误试题解析:本题在调用函数的过程中,实参传递时既有顺序,又有关键字,在两种方式混用时,顺序实参必须放在关键字实参的前面,否则程序会报错。三、
23、编程题供3题,共30分)36.质数是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。下面的程序设计中,先自定义一个函数,用来判断一个数是否为质数。然后,通过键盘输入一个数,调用所编写的函数,判断该输入的数是否为质数。请根据上述设计思想,完成程序段中划线处的填空。deffindprime(m): foriinrange(2,m): if: returnFalse el
24、se: returnn=int(input(请输入一个数:)if ): Print(该数是质数) else: Print(该数不是质数.)答案:参考答案:m%i=0 (3分)True (3分)findprime(n) (4分)试题解析:deffindprime(m): foriinrange(
25、2,m): ifm%i=0: returnFalse else: returnTrue n=int(input(,请输入一个数:)if findprime(n): Print(该数是质数.) else: Print(该数不是质数.)37.随机生成的10个在L100)范围内整数存入列表;输入一个待查找的整数
26、k1运用二分法在列表中查找k,根据查找状态输出对应的结果,请将程序补充完整。fromrandomimportrandintdefb(s,v): top=0 last=le(s) whiIe fl) mid=(top+last)2 ifv=smid: returnmid elifv>smid:&nb
27、sp; elifv<smid: last=mid-l returnNones=randint(l,100)foriinrange(10)s.sort() print(s) k=int(input()ans=b(s,k)if  Print(找到,下标是:1,ans)else: PrintC没有找到这个数!)运行结
28、果1:13,25,27,41,52,66,67,69,72,7572找到,下标是:8运行结果2:9,15,16,19,27,31,43,64,84,9320没有找到这个数!答案:参考答案:top<=last:或等效答案;(2分)top=mid+l或等效答案;(3分)ans!=None:或等效答案;(3分)试题解析:参考答案:fromrandomimportrandintdefb(s,v): top=0 last=le(s) whiletop<=Iast: mid=(top
29、+last)2 ifv=smid: returnmid elifv>smid: top=mid+l elifv<smid: last=mid-l returnNones=randint(l,100)foriinrang
30、e(10)s.sort() print(s) k=int(input()ans=b(s,k)ifans!=None: Printc找到,下标是:,ans)else: PrintC没有找到这个数,)38.有一群兔子,4个4个地数余1个,5个5个地数余2个,9个9个地数余7个,试问兔子有多少只?(请将程序补充完整)def while ifn%5=2:
31、 break +=9 whileTrue: if break n+=45 print(n)f(16)答案:参考答案:f(n):或等效答案;(4分)Trlle:或等效答案;(4分)n%4=l:或等效答案;(4分)试题解析:函数相关概念2分,自定义函数的创建与调用10分参考答案:deff(n): whileTrue: ifn%5=2: break +=9 whileTrue: ifn%4=l: break +=45 print(n)f(16)