内容正文:
2.3 周而复始的循环
一、选择题
1.有如下 VB 程序段:
s=0 : t=0
For i = 0 To 10
If i Mod 5 = 0 Then s=s+1
t=t+i Next i
该程序段运行后,s,t 和 i 的值分别是( )
A.3 55 11 B.3 15 11 C.2 55 10 D.2 15 10
2.程序代码如下:
x = l
while x < 10:
x = x+3
print(x)
屏幕显示结果是( )
A.4,7,10 B.3,6,9 C.3,6,9,12 D.1,4,7,10
3.下列括号中填入什么值时,能显示0-10的数( )
for i in range():
print( i )
A.9 B.10 C.11 D.12
4.“猜数游戏”中,计算机随机生成一个0~10之间的整数,用户输入一个整数进行猜测,计算机根据用户输入的数据进行比对,直到用户猜中为止。为了实现“猜数游戏”,补充完善下列 Python程序第5行下划线处的代码( )
1 #猜数游戏
2 import random
3 number=random.randint(0,10)
4 guess=int(input(“请输入猜测的数:”))
5 while _____________:
6 guess=int(input(“猜错了,继续猜一猜:”))
7 print(“恭喜你,猜对了!”)
A.guess!=number B.guess=!number C.guess==number D.guess=number
5.阅读下列程序,选出运行结果( )
def fib(m):
n1=1
n2=1
for i in range(3,m+1):
t=n1+n2
n1=n2
n2=t
return t
print(fib(5))
A.5 B.8 C.3 D.13
6.在下图中,<3>处应该填入的正确代码是( )
A.i B.s C.s+i D.不用填
7.以下问题中,适合利用循环结构解决的是( )
A.统计100以内素数的个数 B.判断一个数是否是奇数
C.求一个学生三科成绩的平均分 D.求两个数中的较小值
8.使用Nilakantha级数可用于计算Pi(π)的无穷级数,它的计算机结果比莱布尼茨公式更快地接近Pi(π)的近似值。,有下列代码,通过前n项的计算,求Pi近似值,下列选项中正确的是( )
s=0;n=0;i=0
n=int(input("请输入 n 的值"))
for i in range(2,2*n+1, ① ):
s=s+ ②
print (s)
pi = 3 + s * 4
print(pi)
A.①1 ② (-1)**(i//2+1)/(i*(i+1)*(i+2)) B.①2 ② (-1)**(i//2+1)/(i*(i+1)*(i+2))
C.①1 ② (-1)**(i//2)/(i*(i+1)*(i+2)) D.①2 ② (-1)**(i//2)/(i*(i+1)*(i+2))
9.有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
10.函数range(6,10)生成的序列中元素的个数是( )
A.3 B.4 C.5 D.6
11.有如下Python程序段
head=4
item=[[5,2],[7,3],[9,5],[2,-1],[1,0],[3,1]]
p=head
str1=''
while p!=-1:
str1+=str(item[p][0])+"->"
p=item[p][1]
print(str1[:-2])
运行上述程序,结果为( )
A.1->5->9->3->7->2 B.1->5->9->3->7->2->
C.1->5->9->3->7 D.1->5->9->3->7->
12.在 Python语言中,运行以下程序,屏幕打印“*”的个数是( )
for i in range(0,10,2):
print("* ")
A.10 B.5 C.6 D.9
13.在Python语言中,程序运行结果如下所示,应在以下横线处填写( )
*
*
*
for i in range(1, ,1):
print("* ")
A.6 B.5 C.4 D.1
14.居民身份证号码由6位地址码、8位出生日期码、3位顺序码和1位校验码组成。倒数第2位是性别代码,奇数代表男,偶数代表女。其格式如图所示:
列表IDlist存储了某校所有学生身份证号码,如要分别统计1-12月份出生的人数,Python程序代码如下:
count=[0] * 12
for i in ______:
mon=int(i[10:12]) #从身份证中提取月份
______
for i in range(12):
print(i+1,“月份人数为”,count[i])
为实现上述功能,划线处自上而下依次填入的代码是:
①IDlist
②range(len(IDlist))
③count[mon-1]+=1
④count[mon]+=1
代码顺序正确的是( )
A.②③ B.②④ C.①④ D.①③
15.输入345,输出结果正确的是( )
n=int(input("请输入一个整数:"))
s=0
while n!=0:
s=s+n%10
n=n//10
print(s)
A.14 B.13 C.12 D.11
16.在 Python 语言中,在 while 语句后面的条件不满足时就退出循环,但是,如果我们想在循环的过程中直接退出循环体,使用的命令是( )
A.len B.end C.break D.del
17.求5~30所有能被5整除的数的积,在<1>、<2>、<3>处填入的正确代码是( )
A.0 1 i+1 B.1 5 i C.0 2 (i+1) D.1 3 i-1
二、填空题
18.Python语言用于实现循环结构的语句有 语句和while语句。
19.分析完善程序
2005年10月9日,国家测绘局正式宣布珠穆朗玛峰的高度是8844. 43米,并停用之前的数据。
现有一张白纸,其厚度是0. 08毫米,对折一次,厚度变为0. 16毫米,再对折一次,厚度变为0. 32毫米,…,每对折一次,其厚度均变为对折前的两倍。
假设这张纸足够大,可对折任意次,那么这张纸至少对折多少次后,其厚度将超过珠穆朗玛峰的高度?
以下是求解该问题的VB程序片段。请你补全代码:
20.下面程序的运行结果为: ,
s=0
for i in range(1,101):
s+=i
if i == 50:
print(s)
break
21.用Python表达式补充完成如下程序,统计四位奇数中满足能被23和19整除的总数。
s=0
for i in range(1001,10000,2):
:
s=s+1
print(s)
22.阅读以下程序,写出程序运行结果。
def jc(n):
s=1
for i in range(2,n+1):
s=s*i
return s
total=jc(4) #调用jc函数
print(total)
程序运行后,其输出结果为
三、判断题
23.While循环语句的循环体中必须有改变条件表达式值的语句,否则会形成死循环。 ( )
24.for循环与while循环任何时候都不可以相互替换。( )
25.在循环中continue语句的作用是跳出循环的执行。( )
26.下列程序段中,赋值语句s=s+i被重复执行了4次。
s=0
For i in range(3,10,2):
s=s+i ( )
27.下列Python程序段运行结束后,赋值语句sum=sum+i共被执行了9次。( )
四、操作题
28.通过擂台法求解列表中的最大数。
a = [2345, 5421, 1254, 23, 5621]
maxx = a[0]
for k in : # k在列表a中依次取值
if maxx < k: # 比较maxx和当前数
print( ) # 输出结果
29.万达商场举行抽奖活动,具体方案:每人可抽取3个幸运数字(0~9)。抽到的数字依次作为个.十、百位组成一个三位数。若该三位数能同时被3、7、23整除,则为一等奖;若能同时被7、23整除则为二等奖;若只能被23整除,则为三等奖;否则没中奖。请你完善程序实现对中奖结果的自动分析。
[操作要求]
(1)补充完善下划线处的内容使程序语句完整;
(2)找出程序中的三处错误并改正;
(3)运行程序,依次输入幸运数字5、0、8时,检查输出结果是否为“二等奖"。
num= 0
for i in range(1,3):#输入三个幸运数字
luck = input("请输入幸运数字:")
if num%3==0 and num%7==0 and num%23==0:
print("一等奖")
elif num%7==0 and num%23= = 0:
print("二等奖")
elif :
print("三等奖")
elif:
print("很遗憾,没有中奖")
试卷第1页,共3页
试卷第1页,共3页
学科网(北京)股份有限公司
参考答案:
1.A
【详解】本题考查VB程序设计。i从0到10进行循环,对i进行判断,所能被5整除,则累加s。通过计算得知,选项A正确。
2.A
【详解】本题主要考查Python程序的执行。x的初值为1,x每次递增3,循环条件是x<10,故x依次取1、4、7、10,因为先x递增3,再显示x,故屏幕显示结果是4、7、10,故本题选A选项。
3.C
【详解】本题考查Python程序设计相关内容。range函数用于生成一个整数序列,其语法是range(start, stop[, step])。其中start是序列的起始值,stop是序列的结束值(不包括),step是步长,默认为1,即序列中相邻两个数的差。当只传入一个参数时,表示生成从0开始、小于该参数的整数序列;当传入两个参数时,表示生成从start开始、小于stop的整数序列;当传入三个参数时,表示生成从start开始、每次增加step、小于stop的整数序列。结合四个选项,此处只需要传入一个参数去实现显示0-10的数,则应传入11,故本题答案是C选项。
4.A
【详解】本题主要考查Python程序调试。分析程序,由while循环体可知,当guess与number不相等时进入循环体,故填guess!=number,故本题选A选项。
5.A
【详解】本题主要考查Python程序的执行。分析程序可知,函数fib(m)用于求斐波那契数列的第m项,斐波那契数列是1、1、2、3、5、8……,因此fib(5)=5,故本题选A选项。
6.A
【详解】本题主要考查Python程序的调试。该程序通过for循环实现求3~200所有能被3整除个数,其中变量s统计满足数的和,即s=s+i,故<3>处应该填入的正确代码是i,故本题选A选项。
7.A
【详解】本题考查循环结构。适合利用循环结构解决的问题通常是需要重复执行某些操作的情况。在本题中,要统计100以内的素数个数,需要遍历每个数字,判断它是否是素数,然后计数。由于需要遍历多个数字并执行相似的操作,因此适合使用循环结构,如for循环,来处理。其他选项中,B选项只涉及单个数的判断,不需要循环;C选项只需要对三个成绩求和并计算平均分,不需要循环;D选项只需要比较两个数的大小,也不需要循环。故答案为A选项。
8.B
【详解】本题主要考查Python程序的调试。由莱布尼茨公式可以发现,分母中的后一项必前一项中的每个数都大2,可知变量i每次递增2,故①处填2,对比公式可知,②处填 (-1)**(i//2+1)/(i*(i+1)*(i+2)),故本题选B选项。
9.A
【详解】本题考查的是循环语句的应用。由循环体money=money*(1+rate)可知利率存储在rate中,故循环变量应为rate而不是year,选项B、C错误;range()是函数,故选项D错误。本题应选A。
10.B
【详解】本题考查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(6,10)生成:6、7、8、9共4个。故选B。
11.A
【详解】本题考查程序分析。这段代码的功能是根据给定的索引链表item和起始索引head,沿着索引链表依次输出对应的数字,直到遇到索引值为-1为止。最后,我们打印输出了str1[:-2],这里使用[:-2]是为了去掉最后的"->”。故正确答案为选项A。
12.B
【详解】本题考查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(0,10,2)生成0,2,4,6,8序列,故打印出5个“*”。选项B正确。
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要生成3个数的序列。故本题应选C。
14.C
【详解】本题主要考查Python程序的执行与调试。列表IDlist存储了某校所有学生身份证号码,第一空依次遍历列表IDlist,故填IDlist。由第二个for循环可知,count[i]中保存的是i+i月份的人数,因此第二空填count[mon-1]+=1,故本题选C选项。
15.C
【详解】本题考查的是Python循环语句。由循环体中代码s=s+n%10、 n=n//10可知,这是计算一个数的每位上数字之和,故输入345,则输出结果为:3+4+5=12,选项C正确。
16.C
【详解】本题考查的知识点是Python循环语句。在Python中,可以使用break语句退出循环。continue语句用于跳过当前循环的剩余部分并进入下一次循环,故本题应选C。
17.B
【详解】本题考查的是Python循环应用。求5~30所有能被5整除的数的积,可将初始s设为1,循环步长为5,每次进入循环乘i。故本题应选B。
18.for
【详解】本题主要考查Python循环结构。Python语言用于实现循环结构的语句有for语句和while语句。
19.0,h*2或2*h或h+h
【详解】本题主要考查循环结构和常见表达式。变量cnt用于定义对折次数,初始为0,即未对折;当纸张厚度h小于等于珠峰高度height时,执行Do循环,循环体中对折次数cnt累加1,纸张厚度为对折前两倍,即h=h*2或2*h或h+h。
【点睛】
20.1275
【详解】本题主要考查Python程序的执行。变量i的范围是1~100,每次循环执行s=s+i,当i==50时,输出s的值并退出循环,此时s=s+i=0+1+2+3+...+50=1275。
21.if i %23==0 and i %19 ==0
【详解】本题考查的是Python循环与选择语句。通过循环变量i遍历所有四位数的奇数,判断能否被23和19整除,只要看除完后的余数是否为0,故画线处代码为:if i %23 == 0 and i %19== 0。
22.24
【详解】本题考查的是Python函数及循环语句。由s=s*i及 range(2,n+1)可知返回值是s=1*2*3*……n,total=jc(4)=1*2*3*4=24。
23.正确
【详解】本题考查while循环语句。while循环中如果缺少条件判断,循环会无限制地执行下去,形成死循环,造成电脑内存空间占用,严重时可能造成电脑卡顿甚至死机。故本题判断正确。
24.错误
【详解】本题考查循环。for 循环和 while 循环是两种不同类型的循环结构,它们用于不同的情况,但它们通常可以相互替换。for 循环通常用于已知循环次数的情况,例如遍历一个列表或迭代器中的元素。while 循环通常用于未知循环次数的情况,即当某个条件为真时继续执行循环。在某些情况下,可以使用 for 循环来模拟 while 循环,反之亦然,但这通常需要额外的控制语句。故说法错误。
25.错
【详解】本题主要考查continue语句的作用。break是跳出循环的执行,continue是用于终止本次循环,故表述错误。
26.正确
【详解】本题考查的是Python的range函数。range(start, stop [,step]) ;start 指的是计数起始值,默认是 0;stop 指的是计数结束值,但不包括 stop ;step 是步长,默认为 1,不可以为 0 。range() 方法生成一段左闭右开的整数范围。range(3,10,2)生成的列表为[3,5,7,9],故题干中的说法正确。
27.正确
【详解】本题考查的是Python循环与选择语句。range(1,20)生成1~19的整数,阅读程序可知,只有i为1~19的偶数,才执行赋值语句sum=sum+i。故一共被执行了9次。题干中说法正确。
【点睛】
28. a maxx=k maxx
【详解】本题考查的是Python的for循环。①k在列表a中依次取值,故此处应为a。②如果找到一个比maxx值还大,则更新maxx值为k,故此处应为:maxx=k。③循环执行完后,最大值存储在maxx,故此处应为:maxx。
29.(1)num=num+int(luck)*10**i
(2)① range(1,3)应改为: range(0,3);②print语句应缩进;③最后一个elif应改为:else
【详解】本题考查的是Python综合应用。
(1)依次输入的数字是字符类型,要转换为数字的三位数,故下划线处代码应为:num=num+int(luck)*10**i。
(2)for循环需要循环3次,依次输入个、十、百位数,则需要将for i in range(1,3) 改为 for i in range(0,3);满足判断条件才输出对应的奖项,故print语句应缩进;根据多分支语句格式可知,最后一个elif应改为:else。
答案第1页,共2页
答案第1页,共2页
学科网(北京)股份有限公司
$$