内容正文:
2.3 周而复始的循环
一、选择题
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.数组元素a[0]至a[n-1]依次存放着n个数据,现需要将元素a[0]插入在下标为:x(0<x≤n-1)的位置,例如:n为5,数组a为[0,3,4,6,7],x为2,插入操作后a为[3,4,0,6,7]。实现该功能的部分程序段如下:
i=0;temp=a[0]
while i<x:
i+=1
a[x]=temp
则方框中应填入的正确代码为( )
A.a[i+1]=a[i] B.a[i-1]=a[i] C.a[i]=a[i-1] D.a[i]=a[i+1]
4.某Python程序如下:
s=input("请输入字符串:")
ans=0
for i in s:
if "a"<=i<="z":
ans+=2
elif "A"<=i<="Z":
ans+=1
print(ans)
程序运行后,输入“P3fhYT8X”,输出的结果是( )
A.3 B.7 C.11 D.8
5.在Python中,运行以下程序后,变量i的值是( )
i=0
while i<=40:
print(i)
i=i+8
A.40 B.48 C.32 D.56
6.如下Python程序段:
s=input(a)
p="";key=3
for ch in s:
if "0"<=ch and ch<="9":
p+=srt((int(ch)+key)%10)
else:
p=ch+p
print(p)
若输入a的值为“GK2023”,则输出p为( )
A.GK3202 B.KG5356 C.GK5356 D.KG2023
7.有如下Python程序段:
import random
q=[0]*8;head,tail=0,4
for i in range(4):
k=random.randint(0,10)
if k%2==0:
q[tail]=k%5
tail+=1
else:
head+=1
while head<tail:
print(q[head],end="")
head+=1
程序执行后,输出的结果可能为:( )
A.0 0 0 0 2 3 0 9 B.0 0 0 0 C.0 1 2 3 4 D.2 3
8.有如下程序段
a=[1,3,5,7,9]
x=6
for i in range(3,1,-1):
a[i+1]=a[i]
a[3]=x
#则程序执行后,a 的值为( ):
A.[1,3,5,7,7] B.[1,3,5,5,7] C.[1,3,5,6,7] D.[1,3,5,6,9]
9.有如下Python程序段:
s = 0 ; i = 1
while :
s = s + i
i = i + 2
该程序段运行后,变量s的值等于9,则程序划线处的语句不可能的是( )
A.i < 5 B.i <= 5 C.i < 6 D.i <= 6
10.有如下Python程序段:
s=0
for i in range(1,10,1):
s=s+i
print(s)
执行该程序段后,变量s的值是( )
A.45 B.55 C.11 D.9
11.某投资者购买了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
12.运行以下Python程序段后,变量b的值为( )
a,b=6,2
while a!=b:
b=a//b
a=a-b
A.0 B.2 C.1 D.3
13.某两段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”和的运算
14.在Python中,以下代码执行后输出的结果是( )
s=5
i=1
while s>0:
s=s-i
i=i+1
print(s)
A.0 B.-1 C.2 D.1
15.有程序段如下:
s=[0]*10;a=[6,3,2,4,2,1,5]
n=len(a);top=0;s[top]=a[0]
for i in range(1,n):
while top!=-1 and a[i]%2==s[top]%2:
top-=1
top+=1
s[top]=a[i]
while top!=-1:
print(s[top],end=' ')
top-=1
程序运行后,输出结果是( )
A.2 4 2 6 B.5 1 3 C.1 2 3 6 D.5 2 3 6
16.下列程序段执行后,结果与其他三项不同的是( )
A. B. C. D.
17.在Python中,下列程序段执行后,输出的结果是( )
s=1
n=4
for i in range(1,n):
s=s*i
print(s)
A.2 B.4 C.6 D.8
二、填空题
18.下面代码段的运行结果为 。
for i in range(2,20,2):
print i
19.有以下程序段:
sum=0
for i in range(1,10):
if i%2==0:
sum=sum+i
print(sum)
程序运行后,其输出结果为( )。
20.已知a=2,b=1,以下Python程序段运行结束后,b的值是 。
21.在 IDLE 编辑器中运行以下程序,屏幕打印 颗*。
for i in range(0,10,2):
print(" *" )
22.以下Python程序运行结束后,循环变量i的值是 。
23.def fun(n, k):
arr = list(range(1, n+1))
index = 0
while arr:
temp = arr. pop(0)
index += 1
if index == k:
#print(temp)
index = 0
continue
arr.append(temp)
if len(arr) == 1:
print(arr[0])
break
fun(41,3)
输出:
三、判断题
24.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( )
25.循环语句可以嵌套使用。( )
26.如果循环以“while 1:”开头,在不加干预的情况下,程序会一直运行下去。( )
27.for循环与while循环任何时候都不可以相互替换。( )
四、操作题
28.日本数学家角谷静夫在研究自然数时发现这样一个规律:对于任意一个正整数n,若n为偶数,则将其除以2;若n为奇数,则将其乘以3,然后再加1。按此做法,经过有限次的运算后,总可以得到自然数1。人们把角谷静夫的这一发现叫做“角谷猜想”。小敏在学习了程序设计后,通过Python编程对“角谷猜想”进行验证。小敏采用流程图描述验证“角谷猜想”的算法和Python程序如下所示:
(1)程序中第3行下划线处应填入 。
(2)程序中第6行下划线处应填入 。
(3)根据“角谷猜想”,当输入任意一个正整数 n,最终输出 n的值为 。
(4)该程序用到的算法思想是 。(选填:解析算法/枚举算法/递归算法)
29.编写一个“计算多边形周长”的程序。功能如下:输入多边形的边的数量和顶点的坐标值,程序计算各条边的长度,并输出该多边形的周长。例如,输入多边形的边的数量为4,各顶点的坐标分别为(0,0)、(2,4)、(3,5)、(6,6),运行结果如下图所示。
请输入多边形的边的数量:4
请输入多边形顶点的横坐标:0
请输入多边形顶点的纵坐标:0
请输入多边形顶点的横坐标:2
请输入多边形顶点的纵坐标:4
请输入多边形顶点的横坐标:3
请输入多边形顶点的纵坐标:5
请输入多边形顶点的横坐标:6
请输入多边形顶点的纵坐标:6
{1:[0,0],2:[2,4],3:[3,5],4:[6,6]}
多边形的周长为:17.533908551779625
d={}
s=0
n=int(input("请输入多边形的边的数量:"))
for i in range(1,① ):
x=int(input("请输入多边形顶点的横坐标:"))
y=int(input("请输入多边形顶点的纵坐标:"))
d[i]=[x,y]
print(d)
j=n
while j>1:
x1=d[j][0]-d[j-1][0]
y1=②
s=s+(x1**2+y1**2)**0.5
③
s=s+((d[n][0]-d[1][0])**2+(d[n][1]-d[1][1])**2)**0.5
print("多边形的周长为:",s)
(1) 请在划线处填入合适的代码。
(2) 该算法是否可以运用到计算圆周长的场景中 (选填:是/否)。
试卷第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.D
【详解】本题考查的是列表插入操作。先将a[0]存储到temp,然后依次将下标为x的之前元素往前移动,最后将temp存储到a[x]中,故方框中应填入的正确代码为:a[i]=a[i+1],选D。
4.D
【详解】本题考查程序分析。程序功能读取字母,小写字母ans+=2。大写字母ans+=1。读取P,ans值为1,读取f、h,ans值为5,读取Y、T,ans值为7,读取X,ans值为8。故正确答案为选项D。
5.B
【详解】本题考查Python编程基础。分析程序段,其功能是在i<=40的条件下循环输出i的值,i的初始值是0,步长为8,即:0、8、16...,当i=48时,结束循环。故本题答案是B选项。
6.B
【详解】本题考查Python程序分析。这段代码的功能是对输入的字符串进行处理。如果字符是数字,则将其加密(通过加上一个密钥然后取模10),如果字符不是数字,则将其放在结果字符串的前面。依次输入遍历GK2023,处理字母结果为KG,数字2,0,2,3依次加3取余10,结果为5,3,5,6。故正确答案为选项B。
7.B
【详解】本题考查Python程序的分析。k=random. randint (0, 10),k随机生成0~10, 由q[tail]=k%5可知,q列表中不可能出现9,排除A选项;for循环一共循环4次,若q中有1、2、3、4,说明没有执行head+=1,则C应是00001234,排除C选项;如果k是连续生成0或10两个再生成两个奇数,选项B可能;选项D有2、3,则说明head+=1至多执行2次,因此输出结果一定有0,排除D选项。故正确答案选B。
8.C
【详解】本题考查的是Python循环语句。a=[1,3,5,7,9],x=6。range(3,1,-1)生成3、2系列数,故循环执行两次,a[4]=a[3]=7,a[3]=a[2]=5;跳出循环后,a[3]=x=6。故程序执行后,a的值为[1,3,5,6,7],故选C。
9.A
【详解】本题考查的是循环语句。由循环体可知s=1+3+5+……,要使变量s=9,则s=1+3+5,即i的值不超过6且要取到5,故循环条件为:i<=5或i<6或i <= 6,选项A正确。
10.A
【详解】本题主要考查Python程序的执行。分析程序,range(1,10,1)会产生1、2、……9这些数字,s=s+i的作用是把这些数字累加起来,1+2+3+……+9=45,故本题选A选项。
11.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。
12.D
【详解】本题考查的是Python条件循环。a=6,b=2,第一次循环,b=a//b=3,a=a-b=3-2=1;第二遍循环,b=a//b=0,a=a-b=1-1=0,循环结束,输出b的值是3,故本题选D选项。
13.C
【详解】本题考查的是Python循环语句。图中可以看出i的初始值都为1;右边采用了while循环,左边采用了for循环;两段程序都实现了1+3+5+7+9的操作。故本题应选C。
14.B
【详解】本题考查的是Python的while循环。阅读程序可知,计算的是s=5-1-2-3-……直到第一次s小于等于0时输出s。故s=5-1-2-3=-1。选项B正确。
15.D
【详解】本题考查Python程序运行。初始化一个长度为10的列表s,元素全部为0,用于存储结果。定义列表a为 6 , 3 , 2 , 4 , 2 , 1 , 5 。使用一个栈(用列表s来模拟)来存储满足条件的相邻奇偶数。遍历列表a,如果当前元素与栈顶元素的奇偶性相同,则弹出栈顶元素,直到栈为空或者奇偶性不相同。将当前元素入栈。最后,输出栈中的元素。程序输出为5 2 3 6。故答案为:D。
16.C
【详解】本题考查Python程序执行与调试。分析程序,可知A、B、D实现求sum=a[0]+a[2]+a[4]=1+3+5=9。选项C,只有满足if判断条件,i才递增1,因此当i=1时,会陷入死循环。故选C。
17.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)。故程序输出的结果是:s=1*1*2*3=6。选项C正确。
18.2,4,6,8,10,12,14,16,18
【详解】本题考查Python程序设计相关内容。range函数用于生成一个整数序列,其语法是range(start, stop[, step])。其中start是序列的起始值,stop是序列的结束值(不包括),step是步长,默认为1,即序列中相邻两个数的差。分析程序段,i初始值为2,步长为2,20是序列的结束值(不包括),则输出结果为:2,4,6,8,10,12,14,16,18。
19.20
【详解】本题考查的是Python循环语句。sum=0,变量i的范围是1~9,如果是偶数,则执行sum=sum+i,故程序执行完,sum=sum+i=0+2+4+6+8=20。
20.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。
21.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颗*。
22.3 6 9
【详解】本题主要考查Python循环结构的应用。
这段代码遍历从1到9的整数,并打印出其中可以被3整除的数。
for i in range(1,10):这行代码创建了一个循环,从1开始到9结束(range()函数的上限是不包含的)。在每次循环中,i的值都会变成下一个数。
if i%3==0:这行代码检查i除以3的余数是否为0。如果为0,那么这个数就是3的倍数。
print(i):如果i是3的倍数,这行代码就会打印出这个数。所以,这段代码会打印出数字3,6和9。
23.31
【详解】本题考查的是自定义函数。阅读程序可知,程序功能是循环对1~n的数字进行报数,报到k出列,直到最后只剩下一个数。fun(41,3)是对1~41的数字进行报数,报到3出列。最后剩下的数字是31。
24.正确
【详解】本题考查的是Python循环与选择语句。range(1,20)生成1~19的整数,阅读程序可知,只有i为1~19的偶数,才执行赋值语句sum=sum+i。故一共被执行了9次。题干中说法正确。
【点睛】
25.正确
【详解】本题考查的知识点是循环结构应用。循环语句可以嵌套使用。在一个循环的内部再使用另一个循环,这就是循环的嵌套。在大多数编程语言中,如Python,Java,C++等,都支持循环的嵌套。故答案为正确。
26.正确
【详解】本题考查Python循环结构的描述。如果循环以“while 1:”开头,while的条件是1,非零即为真,在不加干预的情况下,程序会一直运行下去,陷入死循环。表述正确。
27.错误
【详解】本题考查循环。for 循环和 while 循环是两种不同类型的循环结构,它们用于不同的情况,但它们通常可以相互替换。for 循环通常用于已知循环次数的情况,例如遍历一个列表或迭代器中的元素。while 循环通常用于未知循环次数的情况,即当某个条件为真时继续执行循环。在某些情况下,可以使用 for 循环来模拟 while 循环,反之亦然,但这通常需要额外的控制语句。故说法错误。
28. n%2==0 3*n+1 1 解析算法
【详解】本题主要考查Python程序的综合应用。①对于任意一个正整数n,若n为偶数,则将其除以2;若n为奇数,则将其乘以3,然后再加1。故此处if判断条件是n%2==0。②若n为奇数,则将其乘以3,然后再加1,故此处填3*n+1。③按此做法,经过有限次的运算后,总可以得到自然数1。因此根据“角谷猜想”,当输入任意一个正整数n,最终输出n的值为1。④解析算法是指能够找出表示问题的前提条件和结果之间的关系的数学表达式,并通过表达式的计算来实现问题的求解。枚举算法是指在算法中采用搜索的方法,把各种可能的情况都考虑到,并对所得的结果逐一进行判断,过滤掉那些不符合要求的结果,保留那些符合要求的结果。依据算法,该程序段采用的是解析算法。
29. n+1 d[j][1]-d[j-1][1] j=j-1或j-=1 否
【详解】本题考查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循环输入多边形的横纵坐标,故此处填n+1。
②由x1=d[j][0]-d[j-1][0],可知y1处理相邻两边的纵坐标差,故填d[j][1]-d[j-1][1]。
③j初值为n,每次递减1,故此处填j=j-1或j-=1。
④根据圆周长计算公式,可知该算法不可以运用到计算圆周长的场景中。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$