1、python软件编程等级考试(三级)编程实操题05优质程序填空阅读填空程序试题一、程序填空1程序设计:唐三藏又被妖怪抓走了,这次孙悟空还是没打得过妖怪,于是来求观音菩萨。观音菩萨告诉孙悟空,在天庭里身高正好为1000米的那位神仙可以降伏此妖。于是悟空立刻来到天上,在玉皇大帝的神仙册上看到了按身高从矮到高排列有10000个神仙。由于时间紧迫,悟空想用最短的时间找到这位神仙,这样才可以尽快解救唐僧。代码如下:Listlist(map(int,input(“请按身高递增顺序依次输入10000个神仙的身高”).split()left1right10000while mid if Listmid1000
2、: elif Listmid1000: else: print(“能帮孙悟空的神仙在第0位上”.format(midl)(1)程序代码中处正确的代码是(_)。Aleftright Bleftright Cleft!right Dleftright(2)程序代码中处正确的代码是(_)。A(leftright)/2 B(leftright)2C(leftright)/2 D(leftright)2(3)程序代码中处正确的代码是(_)。Apass Bprint(mid)z Cbreak Dcontinue(4)程序代码中处正确的代码是(_)。-Aleftmid Brightmid Cleftmid1
3、 Drightmid-1(5)程序代码中处正确的代码是(_)。Aleftmid Brightmid Cleftmid1 Drightmid-12程序编写求1+22+32+1002的结果 _ _ _ _input(“运行完毕,请按回车键退出.”)3阅读程序。分析条件语句的代码并回答问题。(1)如果不能使用int()函数,那么变量s的类型将会变成 _ 。(2)如果你的期末成绩是85,你得到的评价将会是_ 。(3)如果你的期末成绩是55,你得到的评价将会是_ 。(4)如果你得到的评价是“还可以再提升”,你的期末成绩应该在_和_之间。(5)“程序中出现的所有else都可以替换为elif,程序效果一样”
4、,这种说法是_(填“对”或“错”)的。4完善程序。以下是猜数游戏的程序,请在画线出填写正确的内容。import randomsecret=random.randint(0,10)print(“-猜数游戏 -”)cs=int(input(“你猜的数字是”)while cs!=secret: _cssecret: _ (“唉,猜大啦!”)_:print(“嘿嘿,猜小了!”)cs= int(input(“重新猜一个靠谱的数字是:”)print(“游戏结束,不玩了!”)5完善程序。以下是计算S=1+6+11+101的程序代码。请你在处填写正确的语句。s=0k=1while(k=101)_s=0k=1w
5、hile(k101): k=k+5 s=s+kprint(s+1)6分析完善程序已知包含25项的数列: 1,2/3,3/5,.,24/47,25/49。问题1 :写出该数列的通项公式f(n)= _问题2 :以下是计算S=1+ 2/3+3/5+ . + 24/47+ 25/49的程序,请补全代码:s=0for i in range(1,26): s=s+ print(“s=”,s)补充完成上述通项公式和程序:f(n)=_7约瑟夫问题是个有名的问题:N个人围成一圈,顺序为0,1,2,3,4,5,从0号这个人开始报数,报到2的将被杀掉,接下去重新开始报数,报到3的将被杀掉.以此类推,最后剩下一个,其
6、余人都将被杀掉。例如N=6,被杀掉的顺序是:1,4,3,0,5;最后只剩下2这个人。llist=n=int(input(“请输入参与人数:”)for i in range(0,n-1):llist.append(i,i+1)_long=nk=headi=1p=2while(_ ): if i=p-1: t=llistk1 print(llistt0)#索引为t的删除 _ if t=head: _ i=1 p+=1 long=long-1 k=llistk1 _ i+=1print(llisthead0)8输入三个同学的成绩,然后大到小排列。9哥德巴赫在1742年提出了以下猜想:任何一个大于2的
7、偶数都可以写成两个质数之和,请完善代码帮助哥德巴赫验证他的猜想。import mathdef ss(n):Flag=Truei=2while i n),用m除以n得到余数r,若余数r不为0,就将n和r构成新的一对数(m=n,n=r),继续上面的除法,直到余数为0,这时m就是原来两个数的最大公约数。因为这个算法需要反复进行除法运算,故被形象地命名为“辗转相除法”。小曲设计了辗转相除法的算法,请根据下面算法回答问题。描述一描述二描述三输入两个正整数m,n(mn);计算m除以n所得的余数r;m=n,n=r;若r=0,则m,n的最大公约数等于m;否则转到步骤;输出最大公约数m;结束。(1)描述一是_描
8、述法;描述二是流程图描述法;描述三是计算机程序语言描述法。(2)在描述三中代码4到6行作用是_。(3)在描述三程序设计中,补充代码第8行划线处为_。22现代生活半径的扩大和生活节奏加快使出行成本不断增长。滴滴快车应运而生,其以灵活快速的响应和经济实惠的价格为大众提供更高效、更经济、更舒适的出行服务,给人们生活带来了美好的变化。小C是滴滴快车忠实的粉丝,经常出行就提前预约,乘坐滴滴快车。小C就在思考这个滴滴快车是怎么计费的?可否用所学的Python语言也编写一个计费程序。于是小C开展了有关这个项目活动的探究。根据实际情况,回答问题。(一)收集、分析数据,运用数理思维建模登录滴滴出行官网,得到了如
9、下信息,即“滴滴快车(普通型)计价规则”:滴滴快车(普通型)计价规则时段起步价里程费时长费普通时段8.00元1.35元/公里0.20元/分钟00:00-06:308.50元2.40元/公里0.50元/分钟06:30-09:008.50元1.50元/公里0.45元/分钟21:00-23:008.50元1.50元/公里0.40元/分钟23:00-00:008.50元2.40元/公里0.50元/分钟注意:1.起步价包含里程3.3公里,包含时长9分钟,里程费、时长费合计不足基础费时,直接按照基础费计费。2.实时计价是基于订单服务内容(里程、时长、时段),按各种费用项定价标准计算订单价格的计价方式,实际
10、费用由两部分里程费与时长费累加而得。小C同学19:33从“南内环恒地大厦停车场入口”到“坞城新纪元大酒店(长风店)”乘坐滴滴快车(普通车型),里程4.1公里,时长约21分钟,按照表中的计费规则,小C同学此次出行应该支付的车费是:车费=8+(4.1-3.3)1.35+(21-9)0.2=9.68。(1)小C登录滴滴出行官网搜索并下载“计价规则”,所采用的数字化工具:_A数字化可视化表达工具 B信息加工工具C三维设计工具 D信息检索工具(2)假设Tot1表示时长费,Tot2表示里程费,S表示实际里程,T表示实际时长,Cost表示应支付费用。运用数学解析式归纳出计费公式为:如果时长超过9分钟,则To
11、t1=_。如果里程小于等于3.3公里则Tot2=_,否则Tot2=_。应支付费用:Cost=_。(二)运用算法描述方法将问题解决步骤化小C明晰了滴滴快车车费的计算方法之后,设计求解滴滴快车普通时段车费的算法,并用自然语言和流程图的方式表述出来。(3)自然语言描述:第一步:_第二步:计算时长费Totl第三步:计算里程费Tot2第四步:_第五步:_(4)流程图描述:(如图)流程图中,表示计算与赋值的是_,表示算法流向的是_。A B C D E. (5)算法描述中,用到了三种基本控制结构,分别是_、_和_。如图示中的流程图使用的控制结构是_和_。(选填:顺序结构、选择结构、循环结构、树型结构)(6)
12、一个算法必须有_或多个数据输入。有_或多个数据输出。(选填:零个/一个)(三)编写、调试、运行程序,验证算法并解决问题_23某字符转置算法描述如下:将字符串(均为大写字符)s依次转换为相对应的数值(字符AZ对应数值126);转换后的数值以K个数据为一段,将n个待处理的数据依次分割成若干段(最后一段不足部分用0来补充);每一段中K个数据与K*K转置矩阵进行乘法运算;将乘法运算得到的每一个结果值除以26求余数,依次转换成相应字符(数值126对应字符AZ),最后按原始字符串长度输出。乘法运算规则如下:第i个元素c(i)=第j个元素a(j)*转置矩阵第j行第i个元素b(t)的乘积之和(其中j=1,2K
13、)例如:字符串s=PYTHON,区块大小K=4,的转置过程如下:(1)根据算法描述,上述示例中,字符“N”的相乘结果(即图中()处)为_。(2)请在划线处填入合适代码。Private Sub Commandl_Click()Dim a(1 To 100)As Integer 存储字符串,长度不超过100个字符Dim b(1 To 100)As Integer 存储转置矩阵,长度不超过 10*10Dim c(1 To 100)As LongDim s As String, tmp As StringDim k As Integer, t As Integer, i As Integer, j A
14、s IntegerDim n As Integer, m As Integer, lens As Integers=Textl. Text 在 Textl 中输入原始字符串k=Val(Text 2.Text) 在 Text 2 中输入区块大小KRandomizeFor i=1 To k2b(i)=Int(Rnd*9)1tmp=tmp十Str(b(i)If i Mod k=0 ThenList 2. AddItem tmptmp= .End IfNext ilens=Len(s):n=lensFor i=1 To ntmp=Mid(s,i,1)_Listl. AddItem Str(a(i)Ne
15、xt iDo While n Mod k0n=n十1a(n)=0Listl. AddItem Str(a(n)LoopFor i=1 To nm=(i1)Mod k+1t=1Forj= _c(i)=a(j) * b(m-1) * k+t)+c(i)t=t1Next jNext i For i=1 To nList 3. AddItem Str(c(i)Next is=For i=1 To lens_s=s+Chr(t+64)Next iText 3.Text=s 在Text 3 中输出转置后的字符串End Sub24密码强度检测。编写python程序,实现如下功能:输入要检测的密码,输出密码强
16、度结果。密码字符分为数字字符、字母和其他符号三类。密码强度的检测方法为:若密码位数少于8位,则不进行强度检测,给出提示“密码位数不能少于8位,请重新输入!”。若密码位数在8位及以上,则进行强度检测:若密码字符属于同一类字符,则密码强度为“弱”;若密码字符属于不同的二类字符,则密码强度为“中等”;若密码字符属于不同的三类字符,则密码强度为“强”。(1)若输入“12abcd5!”,则输出结果为_(选填,选字母:A密码位数不能少于8位,请重新输入! / B弱 / C中等 / D强)(2)实现上述功能的程序如下,请在划线处填入合适的代码。password=input(“请输入要检测的密码:”)_if
17、n8: print(“密码位数不能少于8位,请重新输入!”)else: n1=0 n2=0 n3=0 for i in range(0,n,1): _ if “0”=ch=“9”: n1=1 elif “a”=ch=“z” or “A”=ch=5:n=_ #取字符串的前5个字符else:n=n+ *(5-len(n)return nr=1000;x=100;y=15;z=0.8 #从系统中分别获取消费额度、满和减以及打折的数值dis=红烧排骨,香炸刀鱼,虾仁,菜心,米饭 #某顾客所点菜品名称num=1,1,1,1,3 #某顾客所点菜品数量mon=46,45,68,16,1 #某顾客所点菜品单价
18、print(菜品名称,数量,小计)_for i in range(len(dis):print(gs(disi),numi, ,numi*moni)s=s+numi*moniif s=r:total=s*zelse:_print(消费合计:,s)print(应收现金:,total)27若两个素数之差为 2,则该对素数称为双胞胎数,如 3,5 就是一对双胞胎数。编写 python 程序,实现如下功能:输入 n 的值,统计显示 n 以内的所有双胞胎数。程序运行界面如图所示: 实现上述功能的程序如下,请在划线处填入合适的代码。 import mathdef isprime(x): _ for i i
19、n range(2,int(math.sqrt(x)+1): if x % i = = 0 : f=False return f n=int(input(请输入一个正整数 n:)c=0 k=3 while k = n-2: if isprime( k ) and_ : c + = 1 print(第+ str( c ) +对双胞胎数:, k ,和,k+2) _print(共有+str(c)+对双胞胎数)划线处处应该填入的语句为: ;划线处处应该填入的语句为: ;划线处处应该填入的语句为: 。28小金同学学完了进制转换后,对课后的不同进制的加减法很是头疼,爱动脑筋的小金突发奇想,能不能用pyth
20、on程序来完成这些作业呢?请帮小金完成代码编程.def convert(s): m=0 le=len(s) key=sle-1 if key=B: n=2 elif key=D: _ else: n=16 i=0 while i=0and c=Aand c=F: a=ord(c)-ord(A)+10 _ i+=1 return ms=input(请输入算式)result=0;suanfu1=;suanfu2=;s1=for i in range(len(s): c=si if c=+ or c=- or c=: _ suanfu1=suanfu2 suanfu2=c if suanfu1=:
21、result=t if suanfu1=+: result=result+t if suanfu1=-: result=result-t s1= else: s1=s1+cprint(计算结果为+str(result)+D)(1)将程序横线处补充完整(2)如输入“1110B+10D-30H=”则输出结果为_。29某市普通高中选课数据如图1所示,学生从地理、化学、生物等科目中选择三门作为高考选考科目,“”表示已选择的选考科目。使用 Python编程分析每所学校各科目选考的总人数、全市各科选考总人数及其占比,经过程序处理后,保存结果如图2图1图2实现上述功能的 Python程序如下:import
22、pandas as pdimport itertools读数据到pandas的 DataFrame结构中df_ (”xk73.csv”,sep.,headerinfer,encodingutf)km物理 ,化学 ,生物 ,政治 ,历史 ,地理 ,技术 按学校分组计数scdf.groupby(_ ,as_indexFalse).count()对分组计数结果进行合计,合计结果转换为 DF结构并转置为行df_sumpd.DataFrame(datasc.sum().Tdf_sum学校代码合计增加合计行resultsc.append(df_sum)百分比计算df_percentdf_sumdf_per
23、cent学校代码比例for k in km:perdf_percent.at,k/zrsdf_percentkper增加百分比行resultresult.append(df_percent)删除姓名列result_修改学生编号为总人数resultresult.rename(columns学生编号:总人数)保存结果,创建 Excel文件.生成的 Excel文件result.to_excel(学校人数统计.xlsx)(1)请在划线处填入合适的代码:(2)加框处语句的作用是_30操作说明:打开文件“Y:/1/1.py”,将程序补充完整,不得增加,删除语句、或改变程序原有结构,操作结束后保存。以下程序
24、段的功能是:根据从键盘上输入的表示星期几的数字,若输入的数字不是在范围(1至7)输出“输入错误!”,否则输出对应的英文星期的简称如“Mon、Tue、Wed、Thu、Fri、Sta、Sun”。n=int(input(“请输入一个数:”)list= “Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sta”,”Sun”if _: print(“输入错误!”)else: print(_)【参考答案】*试卷处理标记,请不要删除一、程序填空1B C C C D 【详解】本题主要考查二分查找算法及Python程序实现。二分查找的循环条件是leftright,故选B选项。此处是取中间值,需要整除2,故填(leftright)/2,故选C选项。如果mid对应的列表值是1000,表示