内容正文:
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页
学科网(北京)股份有限公司
$$