4.4 运用循环结构描述问题求解过程 2024-2025学年高中信息技术粤教版(2019) 必修1

2024-08-02
| 16页
| 54人阅读
| 0人下载

内容正文:

4.4 运用循环结构描述问题求解过程 一、选择题 1.在Python编程中,以下哪个关键字用于实现循环结构(   ) A.if B.while C.for D.loop 2.若要使语句s=s+i执行6次,则程序画线处的语句为(   ) s=1 for i in :     s+=i A.range(1,6) B.range(10,5,-1) C.range(6) D.range(1,9,2) 3.有如下 python程序段: n=int(input()) s=0 i=1 while i*i<=n : if n%i==0: s=s+1 else: s=s+2 i=i+1 print(s) 若输入“26”,程序运行后输出的结果是(    ) A.6 B.7 C.8 D.9 4.某Python程序如下: from random import randint a=[0]*6 flag=True i=0 while i<=5:     x=randint(1,50)  #randint(a,b)用来随机生成[a,b]之间正整数     if flag or x>25:         a[i]=x         flag=not flag         i+=1 print(a) 执行该程序段后,在下列选项中,列表a中元素值不可能的是(   ) A.[8,39,30,39,37,45] B.[7,35,12,28,25,23] C.[18,44,46,34,1,40] D.[20,33,16,50,47,39] 5.以下Python程序段用于求100以内所有奇数之和,其中无法实现该功能的是(   ) A. s=0 for i in range(1,100):     s+=i     i=i+2 print(s) B. s=0 for i in range(1,101,2):     s+=i print(s) C. s=0;i=1 while i<100:     s=s+i     i=i+2 print(s) D. s=1;i=1 while i<99:     i=i+2     s=s+i print(s) A.-1 B.0 C.1 D.2 6.有5万元资金存入银行,由于银行利率是不断变化的,这5年利率分别是3.25%、3%、3%、2%、1.75%。5年后会有多少收益呢?(money=50000,rate表示年利率),用for循环计算收益,下列选择正确的是(   ) A、 for rate in [0.0325,0.03,0.03,0.02,0.0175]: money=money*(1+rate) B、 for year in range(0.0325,0.03,0.03,0.02,0.0175): money=money*(1+rate) C、 for year in (0.0325,0.03,0.03,0.02,0.0175): money=money*(1+rate) D、 for rate in range[0.0325,0.03,0.03,0.02,0.0175]:    money=money*(1+rate) A.A B.B C.C D.D 7.在 Python 语言中,在 while 语句后面的条件不满足时就退出循环,但是,如果我们想在循环的过程中直接退出循环体,使用的命令是(  ) A.len B.end C.break D.del 8.一个3位正整数,每位上的数字的3次幂之和等于它本身,这类数称为水仙花数。小芸编写Python程序输出100至999之间的所有水仙花数,代码如下 1  for i in range(100,1000): 2      s=str(i) 3      bai=s[0] 4      shi=s[1] 5      ge=s[2] 6      if int(s)==bai**3+shi**3+ge**3: 7          print(i,"是水仙花数") 程序调试时报错,请分析程序出错的原因(   ) >>>%Run‘水仙花数.py' Traceback(most recent call last): File"D:\KINGSTON\123\水仙花数.py",line 6,in<module> If int(s)==bai**3+shi**3+ge**3: TypeError:unsupported operand type(s) for** or pow():'str' and 'int’ A.第2行不能使用str()函数把变量i的值转换为字符串类型 B.第6行的幂运算不能使用**运算符,应该使用*运算符 C.第6行的bai、shi、ge三个变量是字符串类型,不能进行幂运算 D.第7行输出格式错误,应该使用双引号 9.有如下Python程序段: a=[2,1,3,4,5] c=0 for i in range(2,5):     if a[i-2]+a[i-1]==a[i]:            c+=1 print(c) 该程序段运行后,显示的c的值是 (   ) A.1 B.2 C.3 D.4 10.某Python程序如下: a=[0]*4 for i in range(7): j=0 a [j]+=1 while a[j]= =2:     a [j]=0     j+=1     a [j]+=1 print(a[::-1]) 程序运行后输出的结果为(    ) A.[1,1,1,0] B.[0,1,0,1] C.[0,1,1,1] D.[1,0,1,0] 11.有如下Python程序段: s=input("请输入待处理字符串:") st=" " for i in range(len(s)): ch=s[i] if "0" <=ch<="9": st=ch+st else: if "A"<=ch<="Z": ch=ch. Lower( )       #函数lower( )的作用是将大写字母转换成小写。 st=st+ch print(st) 执行程序后,输入字符串"Lucky2023!",输出的结果(    ) A.3202lucky! B.lucky2023! C.!3202ykcul D.!ykcul2023 12.在程序设计当中,面对大量重复的问题,宜使用(   )来提高效率 A.顺序结构 B.选择结构 C.循环结构 D.重复结构 13.如下Python程序运行结束时,变量i和s的值分别是(   ) i=0 s=0 while i<5:     i+=1     s=s+i print("i=",i,"s=",s) A.i=5 s=10 B.i=4 s=10 C.i=5 s=15 D.i=4 s=15 14.编程求所输入数n的阶乘(0!=1),即s=n*(n-1)*(n-2)*…*2*1,下面横线填什么(   ) A.s=n*n B.s=s*s C.s=s*n D.s=s*i 15.有如下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 16.有如下Python程序段: tmps=[32,28,26,29] n=len(tmps);top=-1 ans=[0]*n stk=[-1]*n for i in range(n): t=tmps[i] while top>-1 and t>tmps[stk[top]]:    d=stk[top]    top-=1    ans[d]=i-d top+=1 stk[top]=i print(ans) 执行该程序段后,输出的结果是(    ) A.[1,0,0,1] B.[1,1,0,0] C.[0,2,1,0] D.[0,1,2,0] 二、填空题 17.有如下 Python 程序段: li=[["a",10],["b",20],["c",30]] dic={} for i in range(len(li)):     dic[li[i][0]]=li[i][1] print(dic) 运行该段程序后,输出内容为 18.阅读下列程序,写出运行结果。 19.已知a=2,b=1,以下Python程序段运行结束后,b的值是 。 20.实现循环控制的三要素是 、 和 。 21.写出运行结果。 s=0 while s<=30:     s=s+10 print(s) 结果: 三、判断题 22.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( ) 23.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( ) 24.for循环与while循环任何时候都不可以相互替换。( ) 四、操作题 25.根据AQI值判断城市的空气质量。若城市的AQI值(整数)不超过100则空气质量优良,否则空气质量有污染。当输入的AQI值为-1时则退出程序。 city = input("请输入城市名:") AQI = int(input("请输入空气质量指数AQI的值:"))   AQI != -1:     if   :         print(city,"的空气质量优良。")      :         print(city,"的空气质量有污染。")     city=input("请输入城市名:")     AQI=int(input("请输入空气质量指数AQI的值:")) 26.某电商超市开展满减活动,每个账户赠送了多张优惠券,购物满一定额度可减免相应金额。例:小华账户中有 “满100减30”“满40减12”“满20减5”3张优惠券,小华购买了100元商品,使用满额最大的优惠券(“满100减30”)后实付金额70元。 设计Python程序:运行程序时,显示已有的优惠券,输入多种商品数量及单价,用“*”分隔数量和单价(商品数量为1可省略数量及“*”),多种商品间用“,”分隔,以“,”结束。例如输入“10,3*20,2*15,”表示: 1件10元商品,3件20元商品,2件15元商品,程序输出使用优惠券后的订单信息。程序界面及程序如下: (1)输入购买商品数量及单价,计算商品原价及商品总数量,请在划线处填入合适的代码。 coupon=[[100,30,True],[40,12,True],[20,5,True]]  #优惠券按满额值降序排序,True代表可用 print("可用优惠券:",coupon) a=input('请输入商品数量及单价:') pcs=①       t=0 total=0 sumpcs=0 for i in range(0,len(a),1):     ___②     if c=='*':         pcs=t         t=0     elif c==',':         total+=t*pcs         sumpcs+=pcs         t=0         pcs=1     else:       _③        (2)根据商品原价使用满额最优的优惠券,计算实付金额,请在划线处填入合适的代码。 amount=total for i in range(len(coupon)):     if amount>=coupon[i][0] and coupon[i][2]==True:        ④                  coupon[i][2]=False         break print("商品原价:",total,"元") print("实付金额:",amount,"元") print("优惠金额:",total-amount,"元") print("商品总数量:",sumpcs,"件") print("优惠券状态:" ,coupon) (3)运行该程序,若输入商品数量及单价为“3*20,10,”则输出实付金额为 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.BC 【详解】本题考查Python循环结构。在Python编程中,while和for关键字用于实现循环结构。if关键字用于条件判断,而非循环。loop不是Python中的关键字。for循环通常用于遍历一个序列或可迭代对象,例如for i in range(5):。while循环则是在条件为真时持续执行循环体,例如while i<5:。故答案为:BC。 2.C 【详解】本题考查的是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)。range(1,6)生成1~5共5个序列数,range(10,5,-1)生成10~6共5个序列数,range(6)生成0~5共6个序列数,range(1,9,2)生成1、3、5、7共4个序列数。若要使语句s=s+i执行6次,序列数应为6个,故选C。 3.C 【详解】本题考查的是Python循环与选择。输入26,由 i*i<=n可知i取到5,26能被1~5中的1、2整除,故s+1执行两次;不能被3、4、5整除,故s+2执行三次,故s的值为:1*2+2*3=8。选项C正确。 4.B 【详解】本题考查程序分析能力。根据程序分析可知代码随机生成大于25的正整数,要存放到列表a中。每次if语句判断可知,flag和x>25满足一个可以存放到a中。故可判断出当flag为假时,x>25为真,那么存放到a中的值必然大于25。可知flag值真假交替出现,所以B选项中的23不可能出现在第6项,这一项的值必然大于25,故正确答案为选项B。 5.A 【详解】本题考查Python程序编写。选项A中range(1,1000)生成1到99数字,依次赋值给i。程序中i=i+2试图改变i的取值,但是for循环时,将i的值又改回到遍历中的数字,故该程序功能计算1累加到99的结果,故无法实现功能,正确答案为A选项。 6.A 【详解】本题考查的是循环语句的应用。由循环体money=money*(1+rate)可知利率存储在rate中,故循环变量应为rate而不是year,选项B、C错误;range()是函数,故选项D错误。本题应选A。 7.C 【详解】本题考查的知识点是Python循环语句。在Python中,可以使用break语句退出循环。continue语句用于跳过当前循环的剩余部分并进入下一次循环,故本题应选C。 8.C 【详解】本题考查的是Python程序调试与运行。应为 s=str(i),s是字符串,故bai、shi、ge三个变量是字符串类型,不能进行幂运算。故本题应选C。 9.B 【详解】本题主要考查Python程序的执行。分析程序可知,变量c用于统计列表a中前两项之和等于第三项的个数,a[0]+a[1]=a[2],a[1]+a[2]=a[3],故c的值为2,故本题选B选项。 10.C 【详解】本题考查的是Python循环嵌套。 当i取值为0时,a[0]=1,不满足while循环条件,结束第一次外循序,列表a为[1,0,0,0]; 当i取值为1时,a[0]=2,满足while循环条件进入内循环,a[0]=0,j=1,a[1]=1,结束第二次外循序,列表a为[0,1,0,0]; 当i取值为2时,a[0]=1,不满足while循环条件,结束第三次外循序,列表a为[1,1,0,0]; 当i取值为3时,a[0]=2,满足while循环条件进入内循环,a[0]=0,j=1,a[1]=2,满足while循环条件进入内循环,a[1]=0,j=2,a[2]=1,结束第四次外循序,列表a为[0,0,1,0]; 当i取值为4时,a[0]=1,不满足while循环条件,结束第五次外循序,列表a为[1,0,1,0]; 当i取值为5时,a[0]=2,满足while循环条件进入内循环,a[0]=0,j=1,a[1]=1,结束第六次外循序,列表a为[0,1,1,0]; 当i取值为4时,a[0]=1,不满足while循环条件,结束第七次外循序,列表a为[1,1,1,0]; 最后逆序输出列表a,故为:[0,1,1,1],选项C正确。 11.A 【详解】本题考查的是Python循环及选择语句。阅读程序可知,程序功能是:对输入的字符串逐个处理,如果是数字,则提到字符串st前头,否则如果是大写字母则转换为小写字母后拼接在st后,其他字符直接拼接在st后。故输入字符串"Lucky2023!",输出的结果:3202lucky!,选项A正确。 12.C 【详解】本题考查程序结构相关内容。程序设计由三大基本结构:顺序结构、选择结构、循环结构。面对大量重复的问题,使用循环结构能提高效率。故本题答案是C选项。 【点睛】 13.C 【详解】本题考查Python循环程序设计相关内容。分析代码段可知,其功能是计算1-5的和。s初值为0,i初值为0,小于5, 第一次进入循环:i+=1,i值变为1;s=s+i-->s=0+1,s值为1;i值为1,小于5; 第二次进入循环:i+=1,i值变为2;s=s+i-->s=1+2,s值为3;i值为2,小于5; 第三次进入循环:i+=1,i值变为3;s=s+i-->s=3+3,s值为6;i值为3,小于5; 第四次进入循环:i+=1,i值变为4;s=s+i-->s=6+4,s值为10;i值为4,小于5; 第五次进入循环:i+=1,i值变为5;s=s+i-->s=10+5,s值为15;i值为5,不小于5,不再进入循环,此时,i=5,s=15,输出i、s的值。 故本题答案是C选项。 14.D 【详解】本题考查循环结构。阶乘的计算需要从n开始,依次乘以n-1、n-2,一直乘到1为止。在程序中,可以使用循环来实现这一逻辑。在每一轮循环中,我们将s乘以当前的i,以计算阶乘。我们在循环中递减i的值,以便逐步计算阶乘。最后,输出计算得到的阶乘值s。故答案为D选项。 15.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。 16.C 【详解】本题主要考查Python程序的执行与调试。分析程序可知,当i=0、1、2时,均不满足while循环条件,此时top=2,stk=[0,1,2,-1]。当i=3时,第一次while循环结束,top=1,d=stk[2]=2,ans[2]=3-2=1;第二次while循环结束,top=0,d=stk[1]=1,ans[1]=3-1=2,while循环结束,for循环也结束,因此,执行该程序段后,输出ans的结果是[0,2,1,0],故本题选C选项。 17. {'a': 10, 'b': 20, 'c': 30} 【详解】本题考查的是字典及循环语句。由dic[li[i][0]]=li[i][1]可知,程序的功能是将嵌套列表中,列表的第一个元素作为字典的键,第二个元素作为字典的值,li=[["a",10],["b",20],["c",30]],运行该段程序后,输出内容为: {'a': 10, 'b': 20, 'c': 30}。 18.90 【详解】本题考查程序分析。 第一步,根据确定层次关系 运行顺序: 先运行第1行,跳过红框自定义函数到第7行,然后执行绿框代码。当运行到绿框内is_prime(x)时,调用红框自定义函数。 第一步,自定义函数的意义 红框内为自定义函数,遍历“2”-“n-1”所有数字,如果n能被其中任何一个数整除,就返回False,否则就返回True,所以红框是在判断n是否是质数,如果该数是质数,则返回True,否则返回False。(质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数)。 第二步模拟运行 ①初始值:1s=[23,45,67,87],sum=0 ②进入绿框,x遍历列表ls x=23时,是质数,执行第10行,sum=sum+x=0+23=23 x=45时,不是质数,可以被3整除,不执行第10行 x=67时,是质数,执行第10行,sum=23+67=90 x=87时,不是质数,可以被3整除,不执行第10行 ③绿框循环完毕,执行第11行,输出sum,故运行结果为90 19.4 【详解】本题考查的是Python循环语句。初始a=2,b=1。 a>=b成立,第一次循环,执行b=a*b=2*1=2; a>=b成立,第二次循环,执行b=a*b=2*2=4; a>=b不成立,跳出循环,故b的值是4。 20. 初值 终值 循环体 【详解】本题考查循环结构的描述。实现循环控制的三要素是:初值、终值和循环体。 21.40 【详解】本题考查循环结构。这段代码使用了一个while循环。循环开始时,s的值为0。然后,循环检查s是否小于或等于30。如果条件成立,循环体内的代码将被执行。在循环体内,s的值增加10,然后再次检查循环条件。这个过程会一直重复,直到s的值大于30。循环结束后,最后一次s增加10的操作也会执行,将s的值增加到40。所以,打印出的结果是40。故答案为:40。 22.正确 【详解】本题考查的是Python循环与选择语句。range(1,20)生成1~19的整数,阅读程序可知,只有i为1~19的偶数,才执行赋值语句sum=sum+i。故一共被执行了9次。题干中说法正确。 【点睛】 23.正确 【详解】本题考查Python循环结构的描述。如果循环以“while 1:”开头,while的条件是1,非零即为真,在不加干预的情况下,程序会一直运行下去,陷入死循环。表述正确。 24.错误 【详解】本题考查循环。for 循环和 while 循环是两种不同类型的循环结构,它们用于不同的情况,但它们通常可以相互替换。for 循环通常用于已知循环次数的情况,例如遍历一个列表或迭代器中的元素。while 循环通常用于未知循环次数的情况,即当某个条件为真时继续执行循环。在某些情况下,可以使用 for 循环来模拟 while 循环,反之亦然,但这通常需要额外的控制语句。故说法错误。 25. while AQI<=100 else 【详解】本题考查的是Python条件循环及选择语句。①当输入的AQI值为-1时则退出程序。故此处应为:while;②由print(city,"的空气质量优良。")可知if条件是AQI值(整数)不超过100,故此处应为:AQI<=100;③双分支结构格式if……else……故此处应为:else。 26. 1 c=a[i] t=t*10+int(c)   或 t=int(str(t)+c) amount=amount-coupon[i][1]  或 amount-=coupon[i][1] 58 【详解】本题考查Python程序。 (1)这里初始化了商品数量pcs为1,因为在输入中,如果数量为1,可以省略数量和"*",故答案为:1。c = a[i],这里将输入字符串中的每个字符依次赋值给变量c,以便处理商品数量和单价,故答案为:c=a[i]。t = t * 10 + int(c) ,这里是将字符转换为整数并累积到商品单价t中,以构建商品的单价,故答案为:t=t*10+int(c) 或 t=int(str(t)+c)。 (2)这段代码会循环检查可用的优惠券列表,找到第一个满足条件的优惠券(金额达到要求且可用),然后将其金额从总金额中减去,并标记为已使用。这样,实际付款金额就是减去了优惠券金额的总金额。amount = amount - coupon[i][1] ,这里减去使用的优惠券金额来计算实际付款金额,然后将相应的优惠券标记为已使用。故答案为:amount=amount-coupon[i][1] 或 amount-=coupon[i][1]。 (3)这是通过计算商品原价,使用优惠券的逻辑来得出的。首先,总原价为 3*20 + 10 = 70,然后根据可用的优惠券列表,最优惠的是 "满40减12" 优惠券,因此减去12元,得到实付金额为58元。故答案为58元。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

4.4 运用循环结构描述问题求解过程 2024-2025学年高中信息技术粤教版(2019) 必修1
1
4.4 运用循环结构描述问题求解过程 2024-2025学年高中信息技术粤教版(2019) 必修1
2
4.4 运用循环结构描述问题求解过程 2024-2025学年高中信息技术粤教版(2019) 必修1
3
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。