2.3周而复始的循环

2024-05-31
| 12页
| 84人阅读
| 0人下载

内容正文:

2.3 周而复始的循环 一、选择题 1.有如下Python程序段: ma=a[0];mb=a[0];pa=0;pb=0 for i in range(1,10):     if ma < a[i]:ma = a[i];pa=i     if mb > a[i]:mb = a[i];pb=i 下列关于该程序段功能描述正确的是( ) A.变量pa存储a[0]至a[9]中的最大值 B.变量ma存储a[0]至a[9]中的最小值 C.变量pb存储a[0]至a[9]中的最大值 D.变量mb存储a[0]至a[9]中的最小值 2.有如下 Python 程序段: import random a=[0,0,0,0,0] flag= 1 i=0 while i<5: b=random.randint(1, 100) if flag>0 or b>50: a[i]=flag*b i+=1 flag=-flag print(a) 执行程序后,输出的列表 a 可能是(   ) A.[5, -53, 23, -65, 38] B.[-67, 64, -91, 78, -31] C.[4, -69, 0, -84, 34] D.[60, -30, 71, -29, 88] 3.求列表第 3 项至第 7 项元素的和,划线处正确的Python表达式是() lis=[6,3,-2,5,19,21,-9,22,14,25] he=[0]*10 he[0]=lis[0] for i in range(1,len(lis)): he[i]= he[i-1]+lis[i] print( ) A.he[7]-he[3] B.he[6]-he[2] C.he[7]-he[2] D.he[6]-he[1] 4.在Python语言中,下列关于while循环语句的叙述错误的是(   ) A.可以将while循环的条件表达式写成:while False: B.可以将while循环的条件表达式写成:while 1: C.如果while的条件表达式写成;while True,则while循环体在不加干预的情况下会一直执行下去 D.while循环和for循环在任何情况下都是可以互换实现的 5.下列程序段不可以实现创建整数n以内的完全平方数列表功能的是(   ) A. B. C. D. 6.有如下程序段: import random a=[0]*6 for i in range(6): a[i]=random. randint(1,5)*2+1 i=0 while i<5: if a[i]>a[i+1]: a[i],a[i+1]=a[i+1],a[i] else: a[i]+=1 i+=1 print(a) 以上程序运行后,列表a的值可能是:(    ) A.[2,5,10,10,10,9] B.[3,8,7,13,3,9] C.[8,12,3,5,3,11] D.[6,10,9,7,10,8] 7.下面代码运行结果是()。 a, b=2,1 while a>=b:    b=a*b    a=2*a print(a, b) A.4 2 B.16 64 C.8 8 D.2 1 8.以下程序共执行了(   )次循环。 for i in range(2,10,2):    print(i) A.5 B.10 C.4 D.0 9.有如下Python程序段: s="abcdddbha" que=[""]*10 head=tail=0 for i in range(len(s)):    if s[i] not in que[head:tail]:      que[tail]=s[i]      tail+=1    else:      head+=1 print(que[head:tail]) 程序运行后,输出的结果是(    ) A.['a','b','c','d','h'] B.['a','b','c','d','d'] C.['c','d','b','h','a'] D.['a','d','d','d','a'] 10.用Python程序随机生成100个[0,20]之间的随机数,统计0~9及9以上每个数字出现的次数并输出结果: import random 1ist=[0]*100 count=[0]*11 for i in range(0,100): num=random. randint(0,20) list[i]=num if __________: num=10 count [num]+=1 print('0~9及9以上依次出现的次数为:',count) 程序某次运行的结果如下: 0~9及9以上依次出现的次数为:[3,5,4,6,5,5,2,5,9,4,52] 则划线处的代码为:(    ) A.num>i B.list[i]>num C.num>9 D.count[i]>9 11.有如下Python程序段: s="VictoryOnTheWay"#'A'的ASCII值为65,"a"的ASCII码值为97 mx="" pre=0 for i in range(1,len(s)):     if ord(s[i]) < 97:         if mx<s[pre:i]:             mx=s[pre:i]         pre=i print(mx) A.Victory B.On C.The D.Way 12.对文本框输入的字符串进行去重,并保持原顺序不变,例如,在文本框Text中输入"aldajbnjndalldfj j",执行程序后文本框Text2中输出“aldjbnf”。实现该算法的VB程序如下: s1 = Text1.Text : n = Len(s1) For i= 1 To n a(i) = Mid(s1, i, 1) Next i For i= 1 To n j=i+1 Do While j <=n If a(i) = a(j) Then For k =①___________ ②____________ Next k n= n- 1:j=j-1 End If j=j+1 Loop Next i For i= 1 To n s=s + a(i) Next i Text2.Text =s 上述程序中2处下划线应填入的程序代码是(   ) A.①j+1 To n  ②a(k+1)=a(k) B.①j+1 To n  ②a(k)=a(k-1) C.①j To n-1  ②a(k-1)=a(k) D.①j To n-1  ②a(k)=a(k+1) 13.有如下VB程序段: Fori=1To1000 a=Int(Rnd*100+1) b=Int(Rnd*100+1) x=a+b y=a-b c=Sqr(x) d=Sqr(y) Nexti 调试时出现如图所示的错误提示,产生此错误的语句是(  ) A.a=Int(Rnd*100+1) B.y=a–b C.c=Sqr(x) D.d=Sqr(y) 14.在Python中运行下列程序,输出结果为(  ) for i in range (1,6):    print(‘*’ ) print(‘-’ ) A.*****- B.*-*-*-*-*- C.******- D.*-*-*-*-*-*- 15.有如下VB程序段: Dim d(1 to 5)as integer,i as integer Dim flag as Boolean,j as integer ‘给数组元素d(1)至d(5)赋初值为1,代码略 Randomize For i=1 to 5 J = l:flag = True d(i) = int(Rnd*9) Do while j< =i-1 and flag = True d(i) = int(Rnd*5+1) If d(i) = d(j) then i=i-l:flag = False j = j+1 Loop Next i 运行程序后,数组中的数据值可能是(    ) A.1 3 4 5 6 B.3 5 4 1 1 C.8 3 1 2 5 D.1 2 6 2 1 16.下面程序运行结果是(   ) sum=0 for i in range(1,11):      sum+=i print(sum) A.53 B.54 C.55 D.56 17.在Python 语言中,如果要程序一直循环下去, 则循环的“条件”要一直为“True”,因此在程序循环开始的地方写上语句(  ) A.while True: B.while 2>1: C.while 2<3: D.以上选项都对 18.阅读下面四段代码,判断哪个选项正确(     ) ①     ②     ③     ④     A.①②运行结果均输出9 B.①③运行结果相同,②④运行结果相同 C.②③运行结果均为换行输出1 4 9 D.①④运行结果相同,②③运行结果相同 19.有如下VB程序段: Dim a(1 To 6) As Integer For i = 1 To 6    a(i) = i Next i s = 0: j = 1 For i = 1 To 6    s = s + a(i) * j    If i Mod 2 = 0 Then j = -j Next i Text1.Text = Str(s) 该程序段运行后,文本框Text1中显示的内容是( ) A.-3 B.-1 C.5 D.7 20.有如下Python段:    程序段执行后,输出的结果为(  ) A.1 B.2 C.3 D.4 试卷第1页,共3页 试卷第1页,共3页 学科网(北京)股份有限公司 参考答案: 1.D 【详解】本题考查的是Python循环语句。由 if ma < a[i]:ma = a[i];pa=i可知变量pa存储a[0]至a[9]中的最大值的索引,变量ma存储a[0]至a[9]中的最大值;由if mb > a[i]:mb = a[i];pb=i可知变量pb存储a[0]至a[9]中的最小值的索引,变量mb存储a[0]至a[9]中的最小值。故本题应选D。 2.A 【详解】本题主要考查Python程序的执行与调试。random.randint(a,b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b。b=random.randint(1, 100),即b是随机生成[1,100]之间的整数,a[i]=flag*b,每次循环后flag取相反数,flag初值为1,故列表a索引为偶数项的值为正数,索引为奇数项的数为负数,排除B、C选项。由if判断条件可知当flag为-1时,b必须大于50才能进入if结构否则重新生成b,排除选项D,故执行程序后,输出的列表 a 可能是[5, -53, 23, -65, 38],选A选项。 3.D 【详解】本题考查Python程序调试。列表的下标从0开始,求列表第 3 项至第 7 项元素的和,可以用前7项和减去前2项和,he[i]保存前i+1项和,因此正确的表达式是he[6]-he[1]。故选D。 4.D 【详解】本题主要考查Python循环语句。可以将while循环的条件表达式写成:while False:;可以将while循环的条件表达式写成:while 1:;如果while的条件表达式写成;while True,则while循环体在不加干预的情况下会一直执行下去;while循环和for循环并非在任何情况下都是可以互换实现的,无法预先判断循环执行的次数时,就只能使用while循环,故本题选D选项。 5.C 【详解】本题主要考查Python程序的调试。分析程序,显然选项C中,只有当i*i=n时,才将i*i加到列表中,因此不可以实现创建整数n以内的完全平方数列表,故本题选C选项。 6.C 【详解】本题主要考查Python程序的执行与调试。分析程序,a[i]=random. randint(1,5)*2+1,第一个for循环执行完a[0]~a[6]随机生成3、5、7、9、11之间的数,第二个while循环中,前5个元素参与运算,如果相邻元素呈降序,则交换,否则a[i]递增1。选项A中a[0]不可能为2,选项B中a[3]不可能为13,选项D中a[0]不可能为6,故以上程序运行后,列表a的值可能是:[8,12,3,5,3,11],故本题选C选项。 7.B 【详解】本题主要考查Python循环结构。a=2,b=1,第一遍循环,满足a>=b,执行b=a*b=2,a=2*a=4;第二遍循环,满足a>=b,执行b=a*b=8,a=2*a=8;第三遍循环,满足a>=b,执行b=a*b=64,a=2*a=16;第四遍循环,不满足a>=b,输出a、b的值分别是16、64,故本题选B选项。 8.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)。i依次取2、4、6、8,因此一共执行4次循环,故本题选C选项。 9.C 【详解】本题考查的是Python循环语句。阅读程序可知程序功能:依次从字符串s中取字符,如果字符不在que[head:tail]范围内,则加入列表que后面,并把tail指针后移一位,否则,将head指针后移一位。s="abcdddbha",故先将"abcd"插入列表que,碰到后面"dd",head指针后移两位,这时que[head:tail]为:['c','d'],字符串s剩余字符为"bha"不重复,同时与que[head:tail]也不重复,故全部插入到列表que中,执行后que[head:tail]的值为:['c','d','b','h','a'],选项C正确。 10.C 【详解】本题考查的是Python循环语句。阅读程序,可知count是用来统计0~9及9以上每个数字出现的次数,索引为0则统计0的个数,索引为10则统计9以上的个数,生成的随机数存放在num(同时也当做count的索引)中,如果生成的随机数大于9,则把索引置为10。故划线处的代码为:num>9。选项C正确。 11.A 【详解】本题考查的是Python应用。阅读程序可知,从字符串s的i字母开始,如果是大写字母,并且mx<s[pre:i],则mx=s[pre:i],直到字符串s结束。s="VictoryOnTheWay",第一次碰到大写字母O,mx<s[pre:i]成立,mx=s[pre:i]="Victory";第二次大写字母W,"W">"Victory",不执行mx=s[pre:i],故最后输出:Victory。选项A正确。 12.D 【详解】本题考查的是数组元素删除。由a(i) = a(j) 可知,有相同字符,则删除第j个元素,从第j+1个到第n个元素,依次往前移动一位。故①处为:j To n-1 ,②处为:a(k)=a(k+1)。选项D正确。 【点睛】 13.D 【详解】本题考查VB相关知识。无效的过程调用或参数是指函数或者过程的参数有误,代码中涉及函数sqr和Int,a=Int(Rnd*100+1),b=Int(Rnd*100+1),这两条代码没有问题,y=a-b,会出现y<0,导致Sqr(y)参数有误,sqr为平方根函数,参数必须大于0,小于0则代码会出错。故产生错误语句是d=Sqr(y),本题选D。 14.A 【详解】本题主要考查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)。for循环执行完,输出“*****”,print(‘-’ )执行完,输出结果是*****-,故本题选A选项。 15.C 【详解】本题考查的是VB综合应用。For循环的作用控制产生d(i)的次数,由d(i) = int(Rnd*9)及while j< =i-1,可知第一个元素的取值范围是[0,8],每次Do循环j的值从1到i-1,每次随机产生一个整数d(i),一方面d(i)的范围是[1,5],另一方面,每次产生的随机数与前面一个不重复,否则重新产生。故可以排除选项ABD,选项C正确。 16.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)。变量i依次取1~10,sum=0+1+2+3+4+5+6+7+8+9+10=55,故本题选C选项。 17.D 【详解】本题考查的是while循序。2>1、 2<3表达式值为True,故本题应选D。 18.D 【详解】本题主要考查Python程序。分析程序可知,①④运行结果相同,每循环一次并输出s的值,即分别输出1、4、9;②③运行结果相同,循环结束后,输出s的值为9,故本题选D选项。 19.D 【详解】本题考查VB程序。这段VB程序的目标是计算一个数列的累加和,并将结果显示在Text1文本框中。首先,它创建了一个整数数组a,然后用一个循环为数组元素赋值,使得a(1) = 1,a(2) = 2,a(3) = 3,以此类推,直到a(6) = 6。接下来,它初始化了两个变量s和j,s用来存储累加和,j用来控制每个元素的正负号,初始时j=1。然后,它进入了第二个循环,这个循环从1到6遍历数组a。在每次循环中,它将当前元素a(i)乘以j并加到s上,然后检查i是否为偶数,如果是,就将j变为-j。这个操作使得奇数项为正,偶数项为负。最后,它将累加和s的值转换为字符串并显示在Text1文本框中。计算过程如下:s = 1 * 1 + 2 * 1 + 3 * (-1) + 4 * (-1) + 5 * 1 + 6 * 1 = 1 + 2 - 3 - 4 + 5 + 6 = 7。故答案为D选项。 20.B 【详解】本题考查的是程序运行。本题程序段的功能是,求列表list1中首尾两数之和大于key(值为30)的对数,列表中list1[0]+list1[9]=31,list1[3]+list1[6]=45,共有2对,故选项B正确。 答案第1页,共2页 答案第1页,共2页 学科网(北京)股份有限公司 $$

资源预览图

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