高中信息技术教科版(2019)2.3 周而复始的循环

2024-08-04
| 18页
| 87人阅读
| 0人下载

内容正文:

2.3 周而复始的循环 一、选择题 1.有如下Python程序段: import random s='Python2024'; ans=" k=random.choice([-1,1])    #随机生成-1或1 for ch in s:     key=random.randint(1,3)     if 'A'<=ch<='Z':         ans+=chr((ord(ch)+k*key-65)%26+65)     elif '0'<=ch<='9':         ans+= chr((ord(ch)+k*key-48)%10+48)     else:         ans+=ch print(ans) 执行该段程序后,输出的结果可能是(   ) A.Python2024 B.Qython3111 C.Oython3935 D.Sython5145 2.有如下 Python程序段: import random s="abcd"*2 k=random. randint(1,3) for i in range(k): s=s[1:]+s[0] s=s[3:3+k]+s[:3]+s[3+k:] 该程序段执行后,变量s的值不可能的是(   ) A.cdababcd B.cdadabbc C.abcdbcda D.bccdadab 3.用Python程序处理字符串,程序如下: s="b2-c1-2" t=0;sum=0 for ch in s:     if "0"<=ch<="9":         t=t*10+int(ch)     elif "a"<=ch<="z":         t=ord(ch)-ord("a")#函数ord计算字符的ASCII值     else:         sum+=t         t=0 执行该程序段后,sum的值是(   ) A.12 B.35 C.33 D.21 4.某算法的流程图如图所示,执行该流程后,输出sum,n的值分别是(   ) A.28,10 B.280,10 C.280,13 D.28,13 5.某算法的部分流程图如下图所示,执行这部分程序后,下列说法不正确的是(    ) A.m的值为9 B.n的值为17 C.循环条件n<=15?共判断4次 D.当第4次判断循环条件n<=15?时,m的值为9 6.某算法的部分流程图如下图所示,执行这部分流程,则输出s的值是(   ) A.6 B.10 C.15 D.21 7.有如下 Python 程序段: a=[2,2,6,1,8,5,3,6,4,3,6,4,9,5,3] dic={} for i in a: if i not in dic: dic[i]=0 else: dic[i]+=1 执行该程序段后,dic[3]的值为(   ) A.1 B.2 C.3 D.4 8.下面程序代码中n的值为(   ) s=0 n=1 while s<15: s=s+n n=n+1 A.4 B.5 C.6 D.7 9.以下对循环结构及其语句的叙述,错误的是(    ) A.程序中某些代码的反复执行称为循环 B.循环结构容易引起系统死机 C.循环结构可以减少源程序重复书写的工作量 D.循环结构的3个要素分别是循环变量、循环体和循环终止条件 10.字符串s由数字字符组成,且首位不为"0"。现需要在s中某一位置插入1位数字字符,得到新s,使新s的值最大。例如s串为"975463",插入字符"8"后,得到最大值"9875463"。实现该功能的程序段如下,方框中应填入的正确代码为(   ) #输入字符串s,长度为n;输入字符串ch,长度为1,代码略。 i=0 while i<n: st=s[0:i]+ch+s[i:n] A. if ch>=s[i]:     i+=1 else:     break B. if ch>=s[i]:     break else:     i+=1 C. if ch<s[i]:     break else:     i+=1 D. if ch>s[i]:     break else:     i+=1 A.A B.B C.C D.D 11.某两段Python程序分别如图所示: n=int(input("n=")) s=0 for i in range(1,n+1,2):     s+=i print(s) n=int(input("n=")) s,i=0,1 while i<=n:     s+=i     i+=2 print(s) 当n的值为10时,关于该两段程序,下列说法不正确的是 (   ) A.两段程序中i的初值相同 B.两段程序都采用了循环结构 C.两段程序的运算结果不相同 D.左边程序实现了“1+3+5+7+9”和的运算 12.有如下Python程序: import random a=[0,0,0,0,0,0] for i in range(6):   a[i]=random.randint(1,10) for i in range(0,6):   if i%2==0 and a[i]%2==0:     a[i]//=2   else:       a[i]+=1 print(a) 执行程序后,列表a各元素可能是(   ) A.1,5,1,11,2,11 B.7,2,8,10,5,9 C.6,9,3,7,8,12 D.3,9,0,8,2,7 13.已知列表a的长度为6,a[0]至a[5]的值依次为18,12,24,15,21,0,某程序如下所示: head, tail=0, 5 x=a[head] head+=1 while(head+1) % len(a)! =tail: t=y=a[head] head=(head+1)%len(a) if x<y: x, y=y, x if x%y!=0: a[tail]=x%y tail=(tail+1)%len(a) x=t print(a[head]) 程序运行后,输出的结果是(   ) A.24 B.12 C.3 D.0 14.如下图,要使该段程序重复执行3次,则在①处应该填什么?(    ) A.i=3 B.i<2 C.i<=3 D.i<3 15.使用链表结构模拟某景区游玩路线,链表a中每一个节点包含三个数据,第1个为景点名称,第2个为预计游玩时间(单位:分钟),第3个为下一个景点指针。景区可以从多个景点的大门进入,但只能从"天梯"离开,输出显示各大门进入路线及预计总时间的代码如下。 a=[["迎客松",21,2],["激流勇进",40,2],["天空栈道",50,5],["一线天",30,4],["飞来峰",60,5],["天梯",20,-1] head=[0,1,3] for i in range(len(head)): (1)     s=a[p][1]     while a[p][2]! =-1:         print(a[p][0],end="-->")         (2)         (3)     print(a[p][0])     print("预计时间:",s,"分钟") 上述程序划线处的可选代码有: ①p=head    ②p=head[i]    ③s=s+a[p][1]    ④p=a[p][2] 则(1),(2),(3)处代码依次为(   ) A.①③④ B.①④③ C.②③④ D.②④③ 16.有如下python程序段: s = input("请输入字符串:") i = 0;j = 1;t = 0;s1="";maxs = "" while i < len(s) - 1:     if s[i] <= s[i + 1]:         j += 1         s1 = s[t : t + j]         if len(maxs) <= len(s1):              maxs = s1     else:         s1 = ""           t = i + 1         j = 1     i += 1 print(maxs) 执行该程序,当输入“p8579yt559h6”时,输出的结果为(   ) A.579 B.579y C.559h D.t559h 二、填空题 17.编程计算s=2+4+6+……+100。 s=0 for i in range(2,102, ):     s=s+i print(s) 18.下面代码的运行结果为 。 a=[5,2,8,7,3]   a[0]=6            del a[1 ]       a.append(9)   print (a) 19.某 Python 程序如下: n = int (input ()) sum = a = 3 res = 0 i=1 while i <= n:     res = res  + sum     sum = sum * 10 + a     i = i + 1 print (res) 当输入n值为3时,程序输出结果是 。 20.在 IDLE 编辑器中运行以下程序,依次输出的数字是 。 for i in range(1,5):    print(i,end="," ) 21.在循环结构中,break语句的作用是 。 三、判断题 22.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( ) 23.循环语句可以嵌套使用。( ) 24.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( ) 25.for循环与while循环任何时候都不可以相互替换。( ) 四、操作题 26.有时候人们会重复写一些字母来表示额外的感受,比如"hello" -> "heeellooo", "hi" -> "hiii"。我们将相邻字母都相同的一串字符定义为字母组,例如:"h", "eee", "ll", "ooo"。已知单词s,如果存在另一个单词word,在单词word的若干个字母组中添加相同的字母,最终能使单词word与单词s相同,就可以判定单词word能扩张成单词s。现有一程序:输入单词s与一组单词words,输出words可扩张为s的单词数量以及扩张需要添加的字母。已知s="heeellooo",words=["hello","hi","helo"],程序运行结果如图所示: (1)已知s="amazzzzinggg",words=["amazing","amazed","amazzzzzingggg","amaazzzingg"],其中可扩张为s的单词数量为 。 (2)实现上述功能的Python程序如下,请在划线处填入合适的代码。 def expend(s,word): if s==word: return False i=j=0 while i<len(s) and j<len(word): if s[i]!=word[j]: return False cnti=0 while i<len(s) and s[i]==ch: cnti+=1;i+=1 cntj=0 while : cntj+=1;j+=1 if cnti>cntj: res.append(( )) # res中存储需添加字母的字母组[最后一个字母的索引位置,添加的字母个数] #例'okk'扩张成'ookkk',最终res为[[0,1], [2,1]] elif cnti<cntj: return False return i==len(s) and j==len(word) s=input('请输入单词s:') words=input('请输入一组单词(用逗号分隔):').strip().split(',') #strip()去除字符串两端的指定字符    split(',')以逗号为分隔符,返回列表 count=0;exps={} for word in words: res=[] if : count+=1 exps[word]=res print('这组单词中可扩张为 s 的单词数量为:',count) for key in exps: print("单词"+key+"可以在",end="") for exp in exps[key]: print("索引为"+str(exp[0])+"处添加"+str(exp[1])+"个字母"+key[exp[0]],end=" ") print("实现扩张") 27.猜数游戏:由计算机随机生成一个100以内的正整数,用户有5次猜数机会,如果猜中则提示“猜中了!”并退出程序;否则经比较给出相应的提示,然后继续猜数。如果5次均未猜中,输出提示信息后结束游戏。 import    #导入随机模块 m = random.randint(1,100)  # 产生一个1~100的正整数 for i in range(5):     t = int(input("请输入你猜的数:"))     if t > m:         print("数偏大") t < m:         print("数偏小")     else:         print("猜中了!")            # 退出循环 if t!= m:     print("这个数是:", m) print("5次没有猜中,很遗憾,游戏结束") 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.D 【详解】本题考查的是Python随机函数及循环语句。程序的功能是将大写字母统一前移或后移key(1~3)位,数字统一前移或后移key(1~3)位。选项A,大写字母没有移位,不可能;选项B,字符"20"变为"31"是前移,字符"4"变为"1"是后移,不可能一下前移一下后移;选项C,字符"P"变"O"是后移,但字符"2024"后移1~3位不可能是"3935";选项D,字符"P"变"S"是后移3位,字符"2024",分别后移3、1、2、1位变成"5145",符合程序功能。故选D。 2.A 【详解】本题考查的是随机函数及循环语句。初始s="abcdabcd",k取值为1或2或3。 若k为1,循环执行一次后,s="bcdabcda",s=s[3:3+k]+s[:3]+s[3+k:]="a"+"bcd"+"bcda"="abcdbcda",对应选项C; 若k为2,循环执行一次后,s="cdabcdab",s=s[3:3+k]+s[:3]+s[3+k:]="bc"+"cda"+"dab"="bccdadab",对应选项D; 若k为3,循环执行一次后,s="dabcdabc",s=s[3:3+k]+s[:3]+s[3+k:]="cda"+"dab"+"bc"="cdadabbc",对应选项B。 故选A。 3.C 【详解】本题考查字符串的应用,根据代码,运行如下表,最后各部分逆序连接。 分组字符 t sum “b2” 12 12 “cl” 21 33 “2” 2 不参加运算 故选择C。 4.C 【详解】本题考查程序分析。该程序运行过程: 初始:sum=1,n=1 1<100成立,执行sum=sum*n=1*1=1,n=n+3=1+3=4; 1<100成立,执行sum=sum*n=1*4=4,n=n+3=4+3=7; 4<100成立,执行sum=sum*n=4*7=28,n=n+3=7+3=10; 28<100成立,执行sum=sum*n=28*10=280,n=n+3=710+3=13; 280<100不成立,输出sum为280,n为13 故正确答案为选项C。 5.C 【详解】本题考查流程图分析。A选项正确,根据流程图分析,当循环结束后m值为9。B选项正确,当m=9时候,n的值为17。D选项正确,第四次循环执行时m=m+2,故m的值为9。C选项错误,循环条件判断了5次,第五次判断没有满足条件,退出循环,故正确答案C选项。 6.B 【详解】本题考查算法流程图知识,该流程图实质是计算“1+2+3+4”的值。故选B。 7.B 【详解】本题考查的是Python字典及循环语句。阅读程序可知,依次读取列表a中的值,如果读取的值是第一次出现,则创建以该值为键,值为0的字典,否则以该值为键的值加1。3在列表中出现3次,第一次出现字典中值为0,执行两次加1,故最后值为2。选B。 8.C 【详解】本题考查Python程序设计相关内容。该程序段通过累加的方式计算1+2+3+...的和,若和大于等于15则结束循环。循环体共执行5次,第5次时,s值为15,执行n=n+1后,n值为6,s<15不成立,结束循环。故本题答案是C选项。 9.B 【详解】本题考查的是循环结构。循环结构表示程序反复执行某个或某些操作,直到判断条件为假时才可以终止循环,并不容易引起系统死机。故本题应选B。 10.D 【详解】本题考查的是Python综合应用。要使新s的值最大,则要依次从高位往低位比较,如果找到一位比要插入的字符小,跳出循环,则插入在该位的前面。不能找相等,如果相等的话,后续有字符比要插入的字符大,则插入后组成的字符不会最大,例s串为"975463",插入字符"4",如果找到相等的话,插入则新字符为:"9754463",不是最大,选项A逻辑不对,应改为:ch<=s[i];选项B不能找相等,选项C逻辑不对。故本题应选D。 11.C 【详解】本题考查的是Python循环语句。图中可以看出i的初始值都为1;右边采用了while循环,左边采用了for循环;两段程序都实现了1+3+5+7+9的操作。故本题应选C。 12.A 【详解】本题考查的是Python循环语句。random.randint(1,10)生成1~10的随机整数。经 a[i]//=2或 a[i]+=1不可能为0、12,故选项C、D不可能;选项A中,a[0]=7,只能由a[i]+=1得到结果(如果由a[i]//=2得到,则初始a[0]=14,超出1~10),故初始a[0]=6,初始a[0]=6满足if条件,应执行a[i]//=2,与执行a[i]+=1矛盾了,故选项B不可能。本题应选A。 13.C 【详解】本题考查的是Python循环语句。阅读程序段代码,分析可知将队列队首两个元素进行比较,拿大数除小数;若不能整除,则将余数重新入队;队首元素出队后,重复上述操作,直到队列中只剩一个元素为止。18,12,24,15,21,6,9,6,3,3,3。最后剩一个元素为3,故选项C正确。 14.D 【详解】本题考查循环结构。在这段程序中,我们想要循环执行3次。循环的条件应该是控制变量 i 小于3,因为我们想要执行3次,当 i 达到3时就不再满足循环条件,循环会停止。所以正确的选项是 i<3,即在①处填写 i<3。这样程序会重复执行,直到 i 不再小于3。故答案为D选项。 15.D 【详解】本题考查链表结构。链表结构模拟景区游玩路线的程序中,需要注意如下的逻辑:(1)处:应该设置当前节点的指针p为head[i],表示第i个大门的开始路线,即p=head[i]。(2)(3)处注意s的初值为a[p][1],同时最后一个节点取不到,所以应先跳入下一节点再统计当前时间的和,所以答案为②④③,故答案为D选项。 16.C 【详解】本题考查Python程序。 这个程序的目标是找到输入字符串s中的连续非降序子串,然后找到最长的一个。让我们逐步分析程序:初始化 s = input("请输入字符串:"),并要求用户输入字符串。初始化 i = 0,j = 1,t = 0,s1 = "",maxs = "",这些变量用于跟踪当前正在检查的子串和找到的最长子串。使用 while i < len(s) - 1: 开始循环遍历字符串s。在每次循环中,检查s[i]是否小于或等于s[i + 1](即,字符是否升序排列):如果是升序,增加j,并使用 s1 = s[t : t + j] 提取当前的升序子串。如果maxs的长度小于或等于s1的长度,则将maxs设置为s1,以保持跟踪最长的升序子串。否则,将s1重置为空字符串,以查找下一个升序子串。增加i的值,继续循环。在给定输入字符串 "p8579yt559h6" 的情况下,程序的输出是最长的连续升序子串,即 "559h"。故答案为:C。 17.2 【详解】本题考查Python程序。题目要求计算2到100之间的偶数之和。在range函数中,第一个参数表示起始值,第二个参数表示终止值(不包含),第三个参数表示步长。这里要计算偶数之和,所以步长应设为2,从2开始每次增加2,依次相加,从而得到2+4+6+……+100的和。故答案为:2。 18.[6,8,7,3,9] 【详解】本题考查Python程序设计相关内容。分析程序段,a为列表,初始值为[5,2,8,7,3],执行a[0]=6,a值为[6,2,8,7,3];执行del a[1](删除a[1]),a值为[6,8,7,3];执行a.append(9)(在列表末尾添加元素值9),a值为[6,8,7,3,9]。故本题答案是:[6,8,7,3,9]。 19.369 【详解】本题考查的是Python循环语句。初始i=1,sum = a = 3,当输入n值为3时。 i<=3成立,res = res+sum=3, sum=sum*10+a=30+3=33,i=i+1=2; i<=3成立,res = res+sum=36, sum=sum*10+a=330+3=333,i=i+1=3; i<=3成立,res = res+sum=369, sum=sum*10+a=3330+3=3333,i=i+1=4; i<=3不成立,故输出res为369。 20.1,2,3,4 【详解】本题考查Python循环结构的应用。range(start, stop, [step]),start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)。因此依次输出的数字是:1,2,3,4。 21.结束当前循环/终止当前循环 【详解】本题考查break的作用。在循环结构中,break、continue为转向语句。break是跳出循环的执行,不再进入循环;continue是用于终止本次循环,是否再次循环由判断条件决定。故答案是:终止当前循环/结束当前循环。 22.正确 【详解】本题考查的是Python循环与选择语句。range(1,20)生成1~19的整数,阅读程序可知,只有i为1~19的偶数,才执行赋值语句sum=sum+i。故一共被执行了9次。题干中说法正确。 【点睛】 23.正确 【详解】本题考查的知识点是循环结构应用。循环语句可以嵌套使用。在一个循环的内部再使用另一个循环,这就是循环的嵌套。在大多数编程语言中,如Python,Java,C++等,都支持循环的嵌套。故答案为正确。 24.正确 【详解】本题考查Python循环结构的描述。如果循环以“while 1:”开头,while的条件是1,非零即为真,在不加干预的情况下,程序会一直运行下去,陷入死循环。表述正确。 25.错误 【详解】本题考查循环。for 循环和 while 循环是两种不同类型的循环结构,它们用于不同的情况,但它们通常可以相互替换。for 循环通常用于已知循环次数的情况,例如遍历一个列表或迭代器中的元素。while 循环通常用于未知循环次数的情况,即当某个条件为真时继续执行循环。在某些情况下,可以使用 for 循环来模拟 while 循环,反之亦然,但这通常需要额外的控制语句。故说法错误。 26. 1 ch=s[i]或ch= word[j] j<len(word) and word[j]==ch [j-1,cnti-cntj] expend(s,word) 【详解】本题考查的是Python综合应用。 (1)依据题干原则,["amazing","amazed","amazzzzzingggg","amaazzzingg"]中只有amazing可以,故填1。 (2)逐个字符比对,如果s[i]与word[j]相同,记录下字符存储在ch,故第一空应为:ch=s[i]或ch= word[j];如果word字符还没判断完同时当前字符与ch相同,则继续统计word中与ch相同的个数cntj,故第二空应为:j<len(word) and word[j]==ch;res中存储需添加字母的字母组[最后一个字母的索引位置,添加的字母个数],cnti表示s中相邻字母相同的个数,cntj表示word中相邻字母相同的个数,故添加的字母个数为:cnti-cntj。由于统计时执行了j+=1,故最后一个字母的索引位置为:j-1。故第三空应为:[j-1,cnti-cntj];函数expend(s,word)是判断word能否扩张为s,故第四空应为:expend(s,word)。 27. random elif break 【详解】本题考查的是Python循环语句应用。 随机模块是random,故第一空应为:random;多分支语句格式:if……elif……else……,故第二空应为:elif;break是跳出循环,continue是跳过当前循环,故第三空应为:break。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

高中信息技术教科版(2019)2.3 周而复始的循环
1
高中信息技术教科版(2019)2.3 周而复始的循环
2
高中信息技术教科版(2019)2.3 周而复始的循环
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。