内容正文:
2.3 周而复始的循环
一、选择题
1.下面是一段循环结构的程序段,该程序段运行以后,循环体的执行次数是( )
s=0
x=2
while x<=12:
s=s+1
x=x+3
A.3 B.4 C.10 D.12
2.某Python程序如下:
s='A3B57e';sl=";i=0
while i<len(s):
if'A'<=s[i]<='Z':
sl=s1+chr(ord(s[i])+32)
elif'0'<=s[i]<='9':
sl=s[i]+s1
i=i+1
print(s1)
运行后输出的结果是( )
A.753abe B.a3b57 C.753AB D.753ab
3.有如下 Python程序,实现求字符串中的最长连续上升子串的长度。例如:字符串“hellopython”中的最长连续上升子串是“lopy”,长度为 4。
s=input()
n=len(s);c=1;max=1
for i in range(1,n):
if (1) :
c=c+1
if c>max:
max=c
else:
(2)
print(max)
划线处可选代码为①c=1 ②c=0 ③s[i]<s[i+1] ④s[i]>s[i-1]
划线处正确的语句依次为( )
A.③① B.③② C.④① D.④②
4.如下图所示的流程图:
算法执行时,若输入n的值为3,则输出s的值是( )
A.6 B.8 C.9 D.15
5.有如下Python程序段:
s="abaabcaab"
st=s [0]
i=1
while i<len (s):
if len (st)==0 or s[i] !=st [-1]:
st=s [i]+st
else:
st=st[0:len(st)-1]
i+=1
执行该段代码后,st的值为( )
A.bca B.acb C.bac D.cab
6.某投资者购买了10万元一年期收益率3.7%的银行保证收益型理财产品。每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。3年后还剩多少存款?用for循环计算收益,money=100000, rate=0.037,下列选择正确的是( )
A、
for year in [3]:
money=money*(1+rate)-20000
B、
for year in range(3):
money=money*(1+rate) -20000
C、
for year in range(1,3):
money=money*(1+rate) -20000
D、
以上都对
A.A B.B C.C D.D
7.字符串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
8.有下列Python程序段:
s1="pytorch'';s2="python";s=""
i=0;j=0
while i<len(s1)and j<len(s2):
if s1[i]>s2[j]:
s=s+s1[i]
else:
j+=1
i+=1
执行以上程序段后,s中的值是( )
A."or" B."ch" C."on" D."to"
9.有如下Python程序段:
s="第19届亚运会举办地:中国杭州,日期:2023.9.23-10.8"
s1="";s2=""
for i in range(len(s)):
if "0"<=s[i]<="9":
s1=s1+s[i]
else:
if s1>"20":
s2=s1+s2
s1=""
print(s2)
程序段运行完成后,显示的内容为( )
A.2392023 B.20239 C.2592023 D.2047
10.以下Python程序段中循环体执行的次数是 ( )
s=i=0
while s<10:
i+=1
s+=i*i
A.1 B.3 C.2 D.4
11.下列关于Python循环语句的说法错误的是( )
A.for循环和while循环不能相互嵌套 B.所有的for循环都可以用while循环改写
C.for循环一般用于循环次数已知的情况 D.循环语句的结束条件设置不合理会造成无限循环
12.下列Python程序段中,循环体执行了( )。
i=5
while i==0:
i=i-1
A.0次 B.1次 C.21次 D.无数次
13.在Python语言 中,下面程序的屏幕输出结果是( )
s=1
for i in range(1, 9,2):
s=s*2
print (s)
A.2 B.8 C.16 D.32
14.下列程序运行后结果是( )
sum=0
for i in range(1,7,2):
sum = sum+i
print(sum)
A.4 B.7 C.9 D.16
15.有如下python 程序段:
s = "1010/1100/1111"
ans,t = 0,0
for i in s:
if "0" <= i <= "1":
t = t * 2 + int(i)
else:
ans += t
t = 0
print(ans)
运行该程序段,输出结果是( )
A.12 B.15 C.22 D.37
16.在 Python语言中,运行以下代码后,变量i的值是( )
i=0
while i<=6:
print(i)
i=i+3
A.9 B.6 C.3 D.0
二、填空题
17.用Python表达式补充完成如下程序,统计四位奇数中满足能被23和19整除的总数。
s=0
for i in range(1001,10000,2):
:
s=s+1
print(s)
18.有以下程序段:
sum=0
for i in range(1,10):
if i%2==0:
sum=sum+i
print(sum)
程序运行后,其输出结果为( )。
19.在 IDLE 编辑器中运行以下程序,依次输出的数字是 。
for i in range(1,5):
print(i,end="," )
20.在 IDLE 编辑器中运行以下程序,屏幕打印 颗*。
for i in range(0,10,2):
print(" *" )
21.下列程序的作用是 。
sum=0
for i in range( 2,101,2):
sum +=i
print( sum)
三、判断题
22.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( )
23.循环语句可以嵌套使用。( )
24.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( )
25.for循环与while循环任何时候都不可以相互替换。( )
四、操作题
26.用Python编辑器打开“439”下的文件“因子个数.py”,进行以下操作并保存结果。
(1)编写程序实现以下功能∶输入一个正整数,统计该数因子的个数。
(2)编写完成后原名保存并关闭应用软件。
x=int(input("请输入一个正整数:"))
s= #存放因子的变量初始化
for i in range(1, ):
if( ): #判断是否是因子
s=
print( )
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.B
【详解】本题考查循环结构。初始时s=0,x=2。进入循环,第一次循环:s=0+1=1,x=2+3=5;第二次循环:s=1+1=2,x=5+3=8;第三次循环:s=2+1=3,x=8+3=11;第四次循环:s=3+1=4,x=11+3=14,此时x>12,循环条件不满足,循环结束。所以循环体共执行了4次。故答案为:B。
2.D
【详解】本题考查程序分析。根据代码if'A'<=s[i]<='Z':和'0'<=s[i]<='9':可知,该程序遍历字符串s,取出字母和数字,将大写字符转换成小写,将数字直接加到字符前面,存储在变量s1中,输出s1。故正确答案为选项D。
3.C
【详解】本题考查的是Python循环和选择语句应用。由 range(1,n),可知依次比较i处与i-1处的字符,若大于则c递增,如果c大于max,则更新max的值,如果i处字符不小于i-1处的字符,则c初始化为1,继续新一轮的查找,故(1)、(2)、处语句依次为 s[i]>s[i-1]、c=1,故本题选C选项。
4.C
【详解】本题考查流程图分析。
由下表可知,循环结束后,s的值为9。
m<n(n的值为3)?
s=0
m=0
是
1
1
是
4
2
是
9
3
否
—
—
故选择C。
5.C
【详解】本题考查Python程序设计相关内容。分析程序段,可知其功能是将字符串s中的字符逆序拼接在st中。拼接过程为:若字符串中当前字符s[i]与st中最后一个字符相同时,则将删除st中最后一个字符,否则将s[i]拼接在st最前面。根据拼接方法模拟可知,最终st中的内容为"bac"。故本题答案为C选项。
6.B
【详解】本题考查的是Python循环应用。每年理财赎回后,他会提取2万元用作生活所需,故循环体应为: money=money*(1+rate) -20000,求的是3年后还剩多少存款,故循环次数应为3次,选项A, [3]列表只有一个元素,循环次数只有一次;选项B, range(3)生成的是0、1、2序列数,循环次数3次;选项C,range(1,3)生成的是1、2序列数,循环次数2次。故本题应选B。
7.D
【详解】本题考查的是Python综合应用。要使新s的值最大,则要依次从高位往低位比较,如果找到一位比要插入的字符小,跳出循环,则插入在该位的前面。不能找相等,如果相等的话,后续有字符比要插入的字符大,则插入后组成的字符不会最大,例s串为"975463",插入字符"4",如果找到相等的话,插入则新字符为:"9754463",不是最大,选项A逻辑不对,应改为:ch<=s[i];选项B不能找相等,选项C逻辑不对。故本题应选D。
8.A
【详解】本题考查的是Python循环语句。阅读程序可知,将s1中字符与s2中字符逐个比较,如果s1中字符
比s2中字符大,将s1中字符拼接在字符串s后面,否则下个循环s1中下一字符与s2中下一字符比较,直到s1或s2所有字符比较完。
"p"="p";
"y"="y";
"t"="t";
"o">"h",将"o"字符拼接在字符串s后面,s="o"
"r">"h",将"r"字符拼接在字符串s后面,s="or"
"c"<"h";
"h"<"o";
循环结束,故本题应选A。
9.A
【详解】本题考查的是Python循环语句。程序遍历数字字符串s,当s[i]是数字字符时连接到s1上,遇到非数字字符时将s1与“20”比较,s1比字符串“20”大则逆拼到字符串s2,随后s1清空准备下一段数字的连接。s中大于“20”的是“2023”“9”“23”“8”,但是最后一个字符串“8”取不到,因为没有结束字符。故最后s2=2392023,选项A正确。
10.B
【详解】本题考查的是Python循环语句。程序实现自然数平方的累加。s =1*1+2*2+3*3+……。 While循环在s大于等于10时结束,i=2时,s =1*1+2*2=5<10;i=3时,s =1*1+2*2+3*3=14>10,所以程序共循环了三次。故正确答案为B选项。
11.A
【详解】本题考查Python循环结构的描述。for循环和while循环可以相互嵌套。故选A。
12.A
【详解】本题考查Python循环。给定的代码段是一个while循环,其中的条件是 i == 0。然而,初始时 i 的值是5。由于条件不满足,循环体不会执行。故答案为:A。
13.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, 9,2)生成的序列数是:1,3,5,7,故s=1*2*2*2*2=16,选项C正确。
14.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、3、5,因此sum=sum+i=0+1+3+5=9。故选C。
15.C
【详解】本题考查Python程序。这段 Python 程序的目标是将给定的字符串 s 中的二进制数值转换为十进制并将它们相加。让我们逐步分析程序:s = "1010/1100/1111" 定义了一个包含多个二进制数的字符串。ans,t = 0,0 初始化两个变量 ans 和 t,它们分别用于存储累加的结果和当前正在处理的二进制数。for i in s: 开始遍历字符串 s 中的每个字符。if "0" <= i <= "1": 检查当前字符是否是 '0' 或 '1'。如果是,执行 t = t * 2 + int(i) 将当前字符转换为整数并加到 t 上,模拟二进制数值的累积。如果不是,执行 ans += t 将累积的二进制数值添加到 ans 上,并将 t 重置为 0,以开始处理下一个二进制数。最后,程序输出 ans 的值。现在让我们按照程序的逻辑来计算结果:第一个二进制数是 "1010",其十进制值为 10。第二个二进制数是 "1100",其十进制值为 12。第三个二进制数是 "1111",其十进制值为 15,但最后并无/使其进入else分支,因此最后的结果为前两个数相加:10 + 12 = 22。故答案为:C。
16.A
【详解】本题考查的是Python循环语句。初始i=0。
i=0,满足i<=6,执行print(i), i=i+3=3;
i=3,满足i<=6,执行print(i), i=i+3=6;
i=6,满足i<=6,执行print(i), i=i+3=9;
i=9,不满足i<=6,循环结束。
故代码执行完后,变量i的值为9,选项A正确。
17.if i %23==0 and i %19 ==0
【详解】本题考查的是Python循环与选择语句。通过循环变量i遍历所有四位数的奇数,判断能否被23和19整除,只要看除完后的余数是否为0,故画线处代码为:if i %23 == 0 and i %19== 0。
18.20
【详解】本题考查的是Python循环语句。sum=0,变量i的范围是1~9,如果是偶数,则执行sum=sum+i,故程序执行完,sum=sum+i=0+2+4+6+8=20。
19.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。
20.5
【详解】本题考查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依次取0、2、4、6、8,因此循环5次,即屏幕打印5颗*。
21.求1~100(含100)的偶数之和
【详解】本题考查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~100(含100)的偶数之和。
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. 0 x+1 x%i==0 s+1 s
【详解】本题考查的是Python循环语句。s存储因子个数,初始化为0,故①处应为:0。range(start, stop, [step]),stop:计数到stop 结束,但不包括stop,故②处应为:x+1。判断是否是因子,即判断能否被整除(可以通过余数来判断),故③处应为:x%i==0。找到因数,则个数加1,故④处应为:s+1。最后输出因子个数,故⑤处应为:s。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$