资源简介 第二单元 算法的程序实现信息技术(50分)一、选择题(本大题共12小题,每小题2分,共24分。每小题列出的四个备选项中只有一个是符合题目要求的,不选、多选、错选均不得分)1.某算法的部分流程图如图所示,执行这部分流程,若输入的x依次为4,5,9,14,0,则输出n的值是( )A.1 B.2C.3 D.42.根据图a所示的凸透镜成像规律,图b所示流程图中①②③处应分别填入( )A.①stand=″″ zoom=″″②stand=″正立″③u>2f B.①stand=″倒立″ zoom=″放大″②stand=″正立″③u<2f C.①stand=″″ zoom=″″②zoom=″放大″③u>2f D.①stand=″倒立″ zoom=″放大″②zoom=″放大″③u<2f3.从身份证号码中取出“出生日期”信息(第7~14位),下列Python表达式不正确的是( )A.s[6:14] B.s[-5:-13]C.s[6:][:8] D.s[:-4][6:]4.为便于四校联考的组织,所有考生统一编制准考证号,某位考生的准考证号如图所示。其表示2023年4月组织的考试,高二年级学校编号为1,坐在05考场28号座位的考生信息,现有Python语句s='202304210528',以下表达式不能表示该考生所在年级的一项是( )A.s[6] B.s[-6]C.s[5:7] D.s[len(s)//2]5.已知浮点型变量h表示身高数据,浮点型变量w表示体重数据,则下列Python表达式中,能够正确计算身体质量指数BMI并四舍五入保留两位小数的是( )A.int(w/h*h*100+0.5)/100B.round(w//h**2,2)C.int(w*h**(-2)*100+0.5)/100D.round(h/w/w,2)6.输入身份证号码,能正确输出其性别的程序段,代码如下:s=input(″请输入身份证号码:″)if :print(xb[0])else:print(xb[1])则加框中①②处代码依次为( )A.①xb={0:″女″,1:″男″} ②int(s[-2])%2==1B.①xb=[″女″,″男″] ②int(s[-2])%2==1C.①xb=[″女″,″男″] ②int(s[-2])%2==0D.①xb={0:″女″,1:″男″} ②int(s[-2])%2==07.已知某同学的BMI值存储在变量X中,若BMI值小于18,则偏瘦;若BMI值在18到24之间,则正常;若BMI值大于24,则偏胖。小蓝编写程序判断该同学的身体状况信息,并保存到变量Y中,则下列程序段无法实现该功能的是( )A.Y=″偏瘦″if X>=18:Y=″正常″elif X>24:Y=″偏胖″B.Y=″偏胖″if X<18:Y=″偏瘦″elif X<=24:Y=″正常″C.if X>24:Y=″偏胖″elif X>=18:Y=″正常″else:Y=″偏瘦″D.if 18<=X<=24:Y=″正常″else:Y=″偏瘦″if X>18:Y=″偏胖″8.有如下Pyhton程序段:s1=input(″请输入:″)q=″1357902468″;s2=″″for ch in s1:if ″0″<=ch<=″9″:s2+=q[int(ch)]elif ″a″<=ch<=″z″:s2+=chr((ord(ch)-ord(″a″)+2)%26+ord(″a″))else:s2+=chprint(s2)运行该程序,输入s1的值为″Mike122@″,则s2的值为( )A.Mgic355@oo.amk B.Kgic931@oo.amkC.Mkmg355@ss.eqo D.Okmg931@ss.eqo9.有如下Python程序:a=[0]*10;c=0n=int(input(″输入n的值:″))while n>0:a[n%10]+=1if a[n%10]==2:c+=1n//=10print(c)运行该程序后,输出结果为2,则输入n的值可能为( )A.135553 B.234125C.202222 D.11223310.某校学生走班上课需要刷卡,每个学生都被分配了以“入学年份(4位)+班级(2位)+学号(2位)”为编码规则的卡号,刷卡后,签到系统自动在后台数据库中记录卡号和姓名。为进一步统计,老师将本次签到数据导出到“stu.txt”文件中,并编写了如下程序:dic={″01″:[″201班″,0],″02″:[″202班″,0],″03″:[″203班″,0],″04″:[″204班″,0]}myfile=open(″stu.txt″,″r″,encoding=″utf-8″)for line in myfile:(1)________for i in dic:print(str(dic[i][0])+″人数为:″+str(dic[i][1]))则划线处的代码为( )A.dic[line[5:6]][0]+=1B.dic[line[5:7]]+=1C.line[4:6]+=1D.dic[line[4:6]][1]+=111.有如下Python程序段:import randoms='abcdefghijklmnopq'for i in range(4): k=random.randint(0,4)+random.randint(0,1)*10 print(s[k],end='')执行该程序后,输出的结果不可能是( )A.ddaa B.eaeoC.dfam D.nemc12.某Python代码如下:import randomlst=[0]*8 #定义列表lst,lst[0]~lst[7]初始值均为0i=0while i<8:if i % 2==0:lst[i]=int(random.random()*10)else:lst[i]=int(random.randint(1,5))*2+1i+=1print(lst)执行程序后,列表lst[0]~lst[7]各元素值可能的是( )A.[0,10,2,9,8,3,4,5] B.[8,5,4,7,10,3,6,9]C.[4,11,3,5,9,6,1,7] D.[6,3,1,11,7,3,5,9]二、非选择题(本大题共3小题,其中第13小题7分,第14小题10分,第15小题9分,共26分)13.小明编写Python程序,实现对某次评价报名序号的检测并输出该考生的评价类别+科类类别。报名序号的编写方法是:由10位数字组成,毕业年份(4位)+评价类别(1位)+科类代码(1位)+顺序代码(4位)。评价类别:1普通、2单项;科类类别:3艺术类、4体育类、5综合类。例如:输入报名序号“2022150001”,输出“普通综合类”(1)与加框处代码功能相同的是________。(单选,填字母:A.s=dic[ticket[-6:-4]]/B.s=dic[ticket[-6:-5]])(2)实现查询功能的Python程序如下,请在划线处填入合适的代码。while True:ticket= ①________num=0for i in ticket:if i>=″0″ and i<=″9″: num=num+1if len(ticket)!=10:print(″输入长度不符合要求″)elif ②________:print(″输入存在非数字字符″)else:breakdic={″13″:″普通艺术类″,″14″:″普通体育类″,″15″:″普通综合类″,″23″:″单项艺术类″,″24″:″ 单项体育类″,″25″:″单项综合类″}s=print(″该考生的考试科类为:″,s)14.条形码在现实生活中使用的越来越广泛,如在各种商品上印上条形码,超市里散装称重商品在称重完成后也会打上条形码。学校教务处想调查高二、高三学生对任教老师的满意度。调查方式采用学生填涂机读卡方式。由于高二、高三每个班学生选科不同。虽然采用机读卡能方便将卡上的信息读取出来,但很难区分某个学生所涂的内容是对哪个科目老师的投票。因此小张想通过设计条形码来区别该张卡是哪位学生对哪些科目的投票。小张设计的条形码,包括了学生的入学年份、该生所在班级、学号及所选课代码(选课代码:01-物理,02-化学,03-生物,04-政治,05-历史,06-地理,07-技术)。某学生条形码如下图所示,该生是2020年入学,5班,学号为23号,选科为:物理、生物、技术。(1)根据条形码设计的规则,请你设计出2019年入学7班学号为15号,选科为化学、生物、技术学生的条形码显示的数字为________。(2)通过条码形与机读卡的组合,可以快速地统计出每班个班各科的教学情况。由于每个学生对投票的兴趣不一,可能存在有些学生没有兴趣参与投票。如果某个科目参与投票的学生达不到该科目选科总人数的60%,则该科目的教学调查就没有任何意义。为了统计出某个班哪几个科目的教学调查无效,小张事前应准备好的数据是________(单选,填字母)。A.该年级总人数 B.每个班级总人数C.参与教学调查投票的总人数 D.每个班各科选课人数(3)小张设计了一个实现统计某个班级哪几个科目的教学调查是无效的算法,他事先将某个班学生条形码通过扫描仪读取后存入在txm.txt中,每个条形码一行。为实现上述功能,请在划线处填入合适选项或代码。data=open(″txm.txt″) #班级选课人数存放在列表xknum中,代码略kmmc=″物理化学生物政治历史地理技术″line=data.readline()kmnum=[0]*7 #用于存放实际参与教学调查每个选科人数while line:for i in range(3): #统计每科参考投票的人数km=int(line[__①__])-1 #(选填字母,从下列A、B、C、D四个选项中选取一项)kmnum[km]=kmnum[km]+1line=data.readline()s=″″for i in range(7):if ②________: #(填程序代码)s=s+kmmc[i*2:(i+1)*2]+″″print(″无效的科目有:″,s)划线①处的选项为( )A.9+i*2:9+i*2 B.9+i*2:11+i*2C.8+i*2:9+i*2 D.8+i*2:10+i*215.某年级要选出3位同学参加市趣味科学竞赛,现有8位同学报名参赛。参赛选手进行展示后由大众评委投票产生前三名。投票结果存储在“vote.txt”文件中,如图a所示。其中choose列的数据为大众评委的投票对象,均以选手代码显示。选手名称与选手代码的对应关系如下表:选手名称 选手A 选手B 选手C 选手D 选手E 选手F 选手G 选手H选手代码 0 1 2 3 4 5 6 7小明用Python编写了一个统计得票数的程序,用于检查每位大众评委的投票是否有效(每人投3票且不重复),并对有效结果进行统计,按照得票数从高到低输出投票结果,如图b所示。若存在并列且前三名总人数超过3人,则输出所有满足条件的选手,并通过随机抽奖形式在末位同分同学中抽取参赛学生,如图c所示,在选手C、E、H中抽取一位同学作为第三名。(1)根据题意,若评委人数为7人,投票数据分别为“142,565,620,361,203,604,136”,则入选人员不可能为________(单选,填字母)。A.选手A、选手B、选手GB.选手C、选手D、选手GC.选手A、选手C、选手DD.选手B、选手D、选手G(2)实现上述功能的代码如下,请在划线处填入合适的代码。from random import randintdef check(x): #检测投票是否有效flag=Falseisum,checklist=0,[0]*8if len(x)==3:for i in range(3): if ″0″<=x[i]<=″7″: checklist[int(x[i])]=1isum=sum(checklist[i]) #统计列表checklist[i]所有数据的和if ①________: flag=Truereturn flagdict={0:″选手A″,1:″选手B″,2:″选手C″,3:″选手D″,4:″选手E″,5:″选手F″,6:″选手G″,7:″选手H″}f=open(″vote.txt″,″r″)line=f.readline() #第一行为列标题,读取两次跳过该行line=f.readline()count=[0]*8while line:linelist=line.split(″,″) #将字符串按逗号分隔为列表②________if check(s):for i in range(3): count[int(s[i])]+=1line=f.readline()f.close()a=[]for i in range(8):a.append([dict[i],count[i]])#将列表a按照选手票数从高到低排序并输出,代码略m=3 #入选人数b=[a[0]];k=1;st=0for i in range(1,len(a)): if ③________:break if a[i][1]!=a[i-1][1]:st=i k+=1b.append(a[i])print(″满足条件的选手:″)for i in range(k): print(b[i]) #输出满足票数前m条件的参赛选手#输出最终入选人员print(″最终入选人员:″)for i in range(st): print(b[i])#末位同分的同学,用抽奖的方式确定入选人员flag=[0]*k④________while d>0:lucky=randint(st,k-1) #在最后同分的同学中随机抽取if flag[lucky]==0:print(b[lucky])flag[lucky]=1d-=1第二单元 算法的程序实现1.B [本题考查算法的表示。条件a=b+c表示该项等于他前两项之和。输入4个非0数,循环4次。第1次循环时,a,b,c的值依次为4,0,0;第2次循环时,a,b,c的值依次为5,4,0;第3次循环时,a,b,c的值依次为9,5,4;第4次循环时,a,b,c的值依次为14,9,5。a=b+c的条件满足了两次,故n=2。]2.B [本题考查算法的表示。③处N的结果zoom='缩小',可以推出③处是u<2f?,那么当u<2f时,成像:倒立、放大,由此可以推出①处stand='倒立',zoom='放大',②处是u<=f的情况,u=f不成像,那么②处就是u3.B [本题考查字符串的切片操作。B选项步长省略默认为1,该处使用负索引,取值为空,故错误。C和D为二次切片,注意的是切完第一次之后索引重新编排,例如s[6:][:8]为先将s从索引6切到最后,然后将这个结果从头切到索引8的位置。]4.C [本题考查字符串求子串。A、D选项通过正索引6访问该学生所在年级,B选项通过负索引-6访问该学生所在年级。C选项中s[5∶7]表示取字符串s的索引下标5至6范围内的子串,不能表示该考生所在年级的一项。]5.C [对一数x四舍五入保留两位小数的表达式为int(x*100+0.5)/100,而题中x为w*h**(-2)。]6.D [输出xb[0],因此用字典存储男生或女生信息,但A选项int(s[-2])%2==1表示男生。]7.A [本题考查Python分支结构基本语法。A选项只要变量X的值大于等于18,输出结果均为“偏胖”,与题干要求不符。]8.C [遍历字符串s1,如果是数字,则在q字符串中取出位置的值;若是小写字母,循环后移2位。大写字母或特殊字符依次连接。]9.A [用数组a来存储0~9各个数字出现的次数,统计输入n的各个位置上数字出现的次数,当某个数字出现2次或两次以上,c进行计数。]10.D [本题考查字典的应用。遍历文件myfile每行line,取出班级代码line[4∶6],将字典中该键对应的值进行计数操作。]11.C [本题考查随机数模块以及for循环。其中random.randint(0,4)产生一个0~4(包含)之间的随机整数,random.randint(0,1)产生随机数0或者1,random.randint(0,1)*10产生随机数0或者10,因此k的值为[0,1,2,3,4,10,11,12,13,14]中的任意一个,for循环循环四次,每次用k作为位置去访问字符串s,'abcdefghijklmnopq'划线字母为可能访问到并且输出的字符,因此C选项中的f错误,访问不到这个字符。]12.D [本题主要考查Python中循环和分支语句的综合运用,该程序语句的作用是当i依次取[0,8]的值时,若i为偶数,则以i为索引的列表lst中的元素为[0,9]内的随机整数,若i为奇数,则以i为索引的列表lst中的元素为[0,5]内的随机整数的2倍加1(必定为奇数),故答案应该选择D。]13.(1)A (2)①input(″请输入准考证号:″) ②num!=10解析 本题考查Python中字符串操作。(1)加框处代码是以ticket字符串第4至5位为键,从字典中读取对应的数据。字符串切片时规则是取头不取尾,A选项:ticket[-6∶-4],截取的是倒数第6位和第5位,符合题意。而B选项中ticket[-6∶-5],只取了倒数第6位,不合题意。(2)①根据题意,首先要输入评价报名序号,即ticket字符串,此处为输入语句。由于本题没有给出程序运行界面,输入格式提示不明显。②处用于判断数字字符是否为10个,即num!=10。14.(1)20190715020307 (2)D(3)①D ②kmnum[i]/xknum[i]<0.6解析 (1)根据规则入学年份4位,班级2位,学号2位。(2)统计的是选科人数。(3)①中将获取学科代码,根据(1)中可知,前面学生信息占8位(0~7),学科代码索引号从8开始,每个学科占2位。②中将统计某个科目参与投票的学生达不到该科目选科总人数的60%的学科。15.(1)C (2)①isum==3或isum==len(x)②s=linelist[2] ③k>=m and a[i][1]!=a[i-1][1]或k>=3 and a[i][1]!=a[i-1][1] ④d=m-st解析 (1)投票565为废票。选手6得票4,选手1203均得3票,在选手B、C、A、D随机投2位。(2)①检测投票有效条件是只能投3票,且不能出现重复,遍历选票x,并统计各张选票的选手的得票数,若统计总选票数为3,说明不重复。②选票中第3项为投票情况,提取第3项赋值给s。③④略。 展开更多...... 收起↑ 资源预览