第十章 流程控制
学习要点
学习Python中的流程控制,熟悉条件语句、循环语句的使用方法,结合之前的知识能够编写较为复杂的程序,能够解决较为复杂的问题。
对标内容
- 让学生掌握Python编程的流程控制以及数据类型,会使用这些相关语句进行编程,会用使用循环、分支等语句完成较为复杂的Python程序,能够解决较为复杂的问题。
- 对Python编程有更深入的了解,熟悉Python数据类型和流程控制语句。具备一定的逻辑推理能力和把逻辑推理用程序表达出来的计算思维能力。
- 理解选择结构语句的功能和写法,能够完成简单选择结构的程序。
- 掌握程序的单分支结构,理解二分支、多分支结构语句。
- 理解循环结构语句的功能和写法,能够完成简单循环结构的程序;理解for循环、while循环、break和continue循环控制结构语句。
- 理解range()的概念,掌握它的基础用法及操作。
情景导入
世界万物都是有秩序的,大到宇宙,小到原子结构都有着自己的规律,不过有些规律已经被我们人类所认识,有些规律还处在未知状态。秩序保证着我们的世界能够正常运转,生态、社会、交通、工作等都有着自己的规则。计算机世界也有自己的流程控制规则,这些规则的组合应用才形成了现在多姿多彩的信息时代。流程控制从某种程度上来说,是计算机里面的“交通信号灯”。
分支结构
知识点详解
分支结构又称为条件语句,在Python中,条件语句可以通过对一个或者多个条件进行判断,从而让程序按照一定的流程处理相关工作。
条件语句的构成
在Python中,条件语句一般由if、elif、else组成,根据其组成的分支数量不同,可分为单分支结构、二分支结构和多分支结构。
单分支结构
单分支结构由一个if语句组成,如果条件成立则执行指定的语句块;如果条件不成立则不执行任何语句块,直接进入条件语句之后的语句。
其工作流程如图 10-1所示。
图10-1单分支结构工作流程
单分支结构在Python中的写法要求如下。
if语句后面跟随条件表达式。
if条件语句后面必须跟英文冒号( : ),表示条件语句成立后需要执行的程序的开始。
条件成立时运行的语句或者语句块必须缩进,一般缩进4个空格(或 1 个 Tab)。
不在条件语句执行模块里面的后续语句不能缩进,必须和if条件语句保持同一缩进,如下例所示。
前面语句 if 条件表达式: 语句/语句块 后续语句
单分支结构一般用于只有一种情况的程序,如下例所示。
在这个示例程序中,只有一个条件语句(a > 0),如果条件成立,则输出'a 为正数。';条件语句之后的print('程序已执行完。’),无论条件是否成立,均会执行。
a = 34 if a > 0: print('a为正数。') print('程序已执行完。')
二分支结构
二分支结构,也有一个if语句,但和单分支结构不同的是,二分支结构有条件成立和条件不成立两种情况。其工作流程如图10-2所示。
图10-2 二分支结构工作流程
二分支结构由if...else…组成,if后面跟随条件,条件后面必须要有英文冒号( : );
else后面无须跟随条件,但是也必须加英文冒号( : )。
同样的,条件成立以及条件不成立的语句块均要缩进;
else之后不在条件语句内的后续语句无须缩进,必须和else保持一致,如下例所示。
a = 34
if a > 0:
print('a为正数')
else:
print('a为0或者负数')
print('程序已执行完。')
在上面的示例中,条件为a>0,但是分为两种情况,一种是条件成立,则输出'a为正数。';另一种是条件不成立,则输出'a为0或者负数。'。最后一句为后续语句,不管条件成立与否,均要执行。
多分支结构
多分支结构,顾名思义是由多个分支组成的结构,用于多种条件下的程序设 计,其工作流程如图10-3所示。
图10-3多分支结构的工作流程
多分支结构,其格式1般为if...elif...elif...else…。elif的意思为“否则如果”,elif后面也需要跟随条件判断语句。elif可以根据条件判断的多少进行增减。 同样的,每一个条件下的语句块都必须进行缩进,如下例所示。
a = 34
if a == 0:
print('a为0。')
elif a>0:
print('a为正数。')
else:
print('a为负数。')
print('程序已执行完。')
分支结构的嵌套
分支结构的嵌套,又称作条件语句的嵌套,它也是多分支结构的一种表现形式,其特征是,一般由多层二分支或者多分支结构嵌套在一起组合而成。二级考试涉及的分支嵌套一般不超过3层。其工作流程如图10-4所示。
图10-4 分支结构的嵌套
嵌套分支中的每一个分支都必须遵守缩进和英文冒号等格式要求,同一级别的分支必须在同一个缩进层次里面。嵌套分支中,程序是先运行最外层的条件, 然后再逐层运行里面的嵌套条件,一直到最后的语句块;我们也可以理解为下一 层的分支是作为一个整体放到了上一层的分支中,如下例所示。
a = 34
if a % 2 == 0:
if a % 3 == 0:
print('可以被2整除,也可以被3整除。')
else:
print('a可以被2整除,但不可以被3整除。')
else:
if a % 3 == 0:
print('a不可以被2整除,但可以被3整除。')
else:
print('a既不可以被2整除,也不可以被3整除。')
print('程序已执行完。')
易错点
- 单分支结构适合只有一种情况的程序,分支之后的程序,无论条件是否成立,都要执行。
- else后面没有条件语句,但是依然需要加英文冒号。
- elif后面必须有条件语句,并且条件语句后面也需要加英文冒号。
- 嵌套分支一定要注意分支的缩进,缩进的不同代表不同的嵌套层次。
模拟考题
考题1 判断题
执行以下代码,输入数字99,运行结果是ok。()
a=input('输入一个数字:')
if a<100:
print('ok')
答案:错误
解析:本题的考核点主要有两个,一个是if语句的使用,根据题意,可以看出,本题中的缩进、冒号均没有问题;另一个考点是input语句的返回值是一个字符串,并非一个数字,所以不能和数字10。进行比较,本题的说法是错误的。
考题2 单选题
关于以下代码,描述正确的是()。
a = 'False'
if a:
print('True')
A. 上述代码的输出结果为True
B. 上述代码的输出结果为False
C. 上述代码存在语法错误
D. 上述代码没有语法错误,但没有任何输出
答案: A
解析:在 Python中,只有 False 、空和 0才是 False , a='False'看起来好像是False ,但实际上这里的 False 为字符串,而并非布尔值,所以if a的布尔值仍然为True,运行 print('True')语句,结果为 A 。
考题 3 单选题
下面的代码运行后输人 23 ,其结果为( )。
a = int(input('请输入一个整数'))
if a>30:
if a-7 ==23:
print('情况一!')
else:
print('情况二!')
else:
if a+7 ==30:
print('情况三!')
else:
print('情况四!')
A. 情况一! B. 情况二! C. 情况三! D. 情况四!
答案:C
解析:根据题意可知,a=23,那么a<30,所以排除A、B选项;23+7=30,刚好符合C选项的条件,所以选择C。
循环结构
知识点详解
在Python中,循环可以分为两大类:条件循环(while循环)和遍历循环(for 循环)。
循环的作用:让代码更高效的重复执行。
while条件循环
条件循环(while循环)指的是如果某个条件成立,则一直执行某个或者某些语句块,一般被重复执行的语句块称作循环体。其工作流程如图10-5所示。
图10-5条件循环的工作流程 条件循环语句的一般格式为:
while 判断条件:
执行代码块(循环体)
需求:复现重复执行100次print('我错了')
(输出更简洁一些,我们这里设置5次)。
分析:初始值是0次,终点是5次,重复做的事情输出“我错了”。
# 循环的计数器
i = 0
while i < 5:
print('我错了')
i += 1
print('任务结束')
while的应用
- 应用一:计算1-100累加和
分析:1-100的累加和,即1 + 2 + 3 + 4 +….,即前两个数字的相加结果 + 下一个数字( 前一个数字 + 1)。
i = 1
result = 0
while i <= 100:
result += i
i += 1
# 输出5050
print(result)
注意:为了验证程序的准确性,可以先改小数值,验证结果正确后,再改成1-100做累加。
应用二:计算1-100偶数累加和
分析:1-100的偶数和,即 2 + 4 + 6 + 8....,得到偶数的方法如下:
- 偶数即是和2取余结果为0的数字,可以加入条件语句判断是否为偶数,为偶数则累加
- 初始值为0 , 计数器每次累加2
方法一:条件判断和2取余数则累加
# 方法一:条件判断和2取余数为0则累加计算
i = 1
result = 0
while i <= 100:
if i % 2 == 0:
result += i
i += 1
# 输出2550
print(result)
方法二:计数器控制
# 方法二:计数器控制增量为2
i = 0
result = 0
while i <= 100:
result += i
i += 2
# 输出2550
print(result)
for遍历循环
遍历循环(for循环)是序列(或其他可迭代对象)中每个元素执行相关语句块的循环过程;也可以理解为将可迭代的对象从迭代器里面按照一定的规则(比如一个一个、隔一个等)取出,然后进行相关操作的过程。
遍历循环的工作流程如图10-6所示。
图 10-6 遍历循环的工作流程
for循环语句的一般格式为:
for 变量 in 序列:
执行代码块(循环体)
如下例所示。
for i in [1,2,3,4,5,6,7]:
i = i*2
print(i)
break和continue
理解
举例:一共吃5个苹果,吃完第一个,吃第二个…,这里"吃苹果"的动作是不是重复执行?
情况一:如果吃的过程中,吃完第三个吃饱了,则不需要再吃第4个和第五个苹果,即是吃苹果的动作停止,这里就是break控制循环流程,即终止此循环。
情况二:如果吃的过程中,吃到第三个吃出一个大虫子...,是不是这个苹果就不吃了,开始吃第四个苹果,这里就是continue控制循环流程,即退出当前一次循环继而执行下一次循环代码。
break语句
循环中,如果需要跳出循环,一般使用break语句。break的作用是跳出当前的while循环或者for循环。
break语句的工作流程如图10-7所示。
图10-7 break语句的工作流程
break语句一般会和条件语句结合起来使用,如下例所示。
n = 15
while n > 0:
n -= 1
if n == 2:
break
print(n)
print('循环结束。')
示例代码:
i = 1
while i <= 5:
if i == 4:
print('吃饱了不吃了')
break
print('吃了第',i,'个苹果')
i += 1
运行结果如下:
吃了第 1 个苹果
吃了第 2 个苹果
吃了第 3 个苹果
吃饱了不吃了
continue语句
和break语句不同,continue语句并不会跳出循环,它只是停止当次循环, 然后跳回循环开始位置,继续下一次循环。 continue语句的工作流程如图10-8所示。
图10-8 continue语句的工作流程
同样的,continue语句一般也要和条件语句结合起来使用,如下例所示。 求1〜10 (含)的奇数,可以用下面的程序。
a = 0
while a<10:
a += 1
if a%2 ==0:
continue
print(a)
示例代码:
i = 1
while i <= 5:
if i == 3:
print('大虫子,第',i,'个不吃了')
# 在continue之前一定要修改计数器,否则会陷入死循环
i += 1
continue
print(f'吃了第',i,'个苹果')
i += 1
运行结果如下:
吃了第 1 个苹果
吃了第 2 个苹果
大虫子,第 3 个不吃了
吃了第 4 个苹果
吃了第 5 个苹果
range()语句
range()并不是一种数据类型,也不是列表,它是一种可迭代对象。
range()的参数有3个,格式为range(start, stop, step);
start代表开始位置, 该参数为可选项,如果没有则代表从0开始;
stop代表结束位置,该参数为必需项;
step为步长,该参数为可选项,如果没有,则代表步长为1。
range()中的参数必须为整数,不能为小数。
range()一般和for循环结合起来使用,用于控制循环次数
格式:
for i in range():
循环语句
1.单个参数(默认从0开始,循环指定次数)
for i in range(10):
print(i,'我爱你中国!')
输出结果如下:
0 我爱你中国!
1 我爱你中国!
2 我爱你中国!
3 我爱你中国!
4 我爱你中国!
5 我爱你中国!
6 我爱你中国!
7 我爱你中国!
8 我爱你中国!
9 我爱你中国!
2.两个参数(开始,结束),包头不包尾,包左不包右
for i in range(1,11):
print(i,'我爱你中国!')
输出结果如下:
1 我爱你中国!
2 我爱你中国!
3 我爱你中国!
4 我爱你中国!
5 我爱你中国!
6 我爱你中国!
7 我爱你中国!
8 我爱你中国!
9 我爱你中国!
10 我爱你中国!
测试题1:
打印输出1000以内(包含1000)所有正数,代码如下:
for i in range(1,1001):
print(i)
3.三个参数(第3个参数表示间隔数,默认是1)
测试题2:
打印输出1000以内(包含1000)所有正奇数,代码如下:
#实现方式一
for i in range(1,101):
if i%2!=0:
print(i)
#实现方式二
for i in range(1,1001,2):
print(i)
测试题3:
打印输出1000以内(包含1000)所有正偶数,代码如下:
for i in range(2,1001,2):
print(i)
测试题4:
计算1000以内(包含1000)所有正偶数的和,并打印,代码如下:
s=0
for i in range(2,1001,2):
s+=i
print(s)
测试题4:
计算1000以内(包含1000)所有正奇数的和,并打印,代码如下:
s=0
for i in range(1,1001,2):
s+=i
print(s)
易错点
- break语句与continue语句的不同:break语句可以跳出for和 while循环的循环体,终止了 for或while循环,任何对应的循环else块将不执行。continue语句被用于跳过当前循环中的剩余语句,然后继续进行下一轮循环。 continue并没有跳出循环或者停止循环,只是暂停了当次循环的剩余语句。
- 循环也可以进行嵌套,嵌套的循环是作为一个整体参与循环,所以要注意缩进关系。
- 无限循环一般釆用while循环,只需要将while后的条件语句永久设为True就可以实现。
- 由于for循环是遍历方式的有限次数循环,所以for循环均可以改为 while循环。
- 循环语句一般和条件语句以及其他知识点整合在一起命题,遇到这种题目,首先要理清循环结构、判断条件,然后按照程序流程逐一进行分析,从而 得出答案。
- range()的可迭代对象和列表的截取一样采用“包头不包尾”的原则: 包括开始参数的值,但不包括结束参数的值,例如range(100)是不包含100的, 只包含0~99。
模拟考题
考题1 单选题
执行下面程序,结果是()。
i=1
while i<=10:
i+=l
if i%2>0:
continue
print(i)
A. 1 3 5 7 B. 2 4 6 8 10 C. 2 4 6 8 D. 1 3 5 7 9
答案:B
解析:根据代码的前3行可以看出,在i小于等于10时,i从1不断往上加 1;第四行条件语句为i不可以被2整除,则continue,意味着跳过最后一行(输出i),因而只输出1~10能被2整除的数,所以答案为B。
考题2 单选题
下列关于分支和循环结构的描述中,错误的是( )。
A. while循环只能用来实现无限循环 B. 所有的for循环都可以用while循环改写 C. 保留字break可以终止一个循环 D. continue可以停止后续代码的执行,从循环的开头重新执行
答案:A
解析:A选项,while循环不仅可以实现无限循环,还可以实现条件循环、 有限次数循环;B选项,for循环确实可以用while循环改写,因为for循环都 是遍历方式的有限次数循环;C和D选项都是描述这两个命令的正常用途。所以 选择A。
考题3 单选题
下面的程序执行完毕后,最终的结果是()。
a = [34,17,7,48,10,5]
b=[]
c=[]
while len(a)>0:
s=a.pop()
if(s%2==0):
b.append(s)
else:
c.append(s)
print(b)
print(c)
A. [34,48,10] [17,7,5] B.[10,48,34] [5,7,17] C.[10,48,34] [17,7,5] D.[34,48,10] [5,7,17]
答案∶B
解析∶根据代码 while len(a)>0∶和 s=a.pop()可知,这个循环将把 a 列表里面的值一个一个地从后往前取,并且赋值给s,根据代码
if(s%2==0): b.append(s) else: c.append(s)
可知∶该条件语句的作用是将s进行分类,按照一定的顺序,将偶数放到b列表里面,将奇数放到 c 列表里面。根据前面的循环代码,s取值的顺序为5,10,48,7,17,34,所以b列表为[10,48,34],c列表为[5,7,17],答案为B。
考题4 单选题
以下程序的运行结果是( )。
l=["兰溪","金华","武义","永康","磐安","东阳","义乌","浦江"]
for s in l:
if"义"in s∶
print(s)
A.兰溪 金华 武义 B.武义 义乌
C.武义 D.义乌
答案∶B
解析∶该题目是对I列表里的所有元素进行检查,看是否包含"义",如果包含则输出该元素,所以答案为B。
考题5 单选题
以下代码绘制的图形是()。
import turtle
for i in range(1,7):
turtle.fd(50)
turtle.left(60)
A.七边形 B. 六边形 C.五边形 D.五角星
答案∶B
解析∶根据range(1,7)可知,循环体的代码执行6次,所以一定是六边形;同时根据 turtle.left(60)可知每条边都是转60°,60°×6,刚好360°,形成一个完整的六边形,所以选择 B。
考题6 单选题
运行以下代码,输出的结果是()。
for i in range(9):
if i*i> 40:
break
print(i)
A.7 B. 9 C.8 D.6
答案∶A
解析∶for i in range(9)是取0~8的整数,if i*i>40是判断i的平方是否大于40,根据题意,如果该值大于40则跳出循环。那么按0~8依次取值,到7 才可以到达平方大于40的要求,因而i等于7,答案为 A。
流程控制单元测试题
模拟考题
一、单选题(共25题,每题2分,共50分)
1、关于Python中的流程控制语句,下列描述错误的是?( )
A. 在分支结构中,if、elif、else都可以单独使用。
B. 分支结构中的条件判断通常用关系表达式或逻辑表达式来进行描述。
C. continue语句和break语句只有在循环结构中才可以使用。
D. while语句和for语句的循环条件后都必须输入冒号,需要循环执行的语句必须有缩进。
2、下列选项中,不属于Python流程控制语句的是?( )
A. if-elif-else语句
B. while语句
C. do-while语句
D. for语句
3、下面Python循环体执行的次数与其他不同的是?( )
A.
i = 0
while (i<=10):
print(i)
i = i+1
B.
i = 10
while (i>0):
print(i)
i = i-1
C.
for i in range(10):
print(i)
D.
for i in range(10,0,-1):
print(i)
4、关于break语句与continue语句的说法中,以下选项中错误的是?( )
A. continue语句类似于break语句,也必须在for、while循环中使用
B. break语句结束循环,继续执行循环语句的后续语句
C. 当多个循环语句嵌套时,break语句只适用于当前嵌套层的语句
D. continue语句结束循环,继续执行循环语句的后续语句
5、下列不会产生死循环的程序是?( )
A.
i=1
while True:
i+=1
if i%2==0:
continue
print(i)
B.
i=1
while True:
if i%2==0:
continue
print(i)
C.
i=0
while True:
i+=1
if i==100:
break
print(i)
D.
i=1
while i==1:
print(i)
6、关于以下代码,描述正确的是?( )
a = 'False'
if a:
print('True')
A. 上述代码的输出结果为True。
B. 上述代码的输出结果为False。
C. 上述代码存在语法错误。
D. 上述代码没有语法错误,但没有任何输出。
7、以下用于Python循环结构的关键字是( )
A. while
B. loop
C. if
D. do…for
8、下列关于分支和循环结构的描述中,错误的是?( )
A. while循环只能用来实现无限循环
B. 所有的for循环都可以用while循环改写
C. 保留字break可以终止一个循环
D. continue可以停止后续代码的执行,从循环的开头重新执行
9、以下构成Python循环结构的方法中,正确的是?( )
A. while
B. loop
C. if
D. do…for
10、执行下面程序,结果是?( )
i=1
while i<=10:
i+=1
if i%2>0:
continue
print(i)
A. 1 3 5 7
B. 2 4 6 8 10
C. 2 4 6 8
D. 1 3 5 7 9
11、据相关文件规定,全国景区对老年人实行优惠政策:60岁以内全票,60-69岁(含60岁和69岁)的老年人半票,69岁以上免费。输入年龄,可以输出全票/半票/免费信息的程序是?( )
A.
while True:
a=int(input('年龄:'))
if(a>=70):
print('免费')
elif(a>60 and a<70):
print('半票')
else:
print('全票')
B.
while True:
a=int(input('年龄:'))
if(a>=70):
print('免费')
elif(a>=60 and a<70):
print('半票')
else:
print('全票')
C.
while True:
a=int(input('年龄:'))
if(a>70):
print('免费')
elif(a>=60 and a<70):
print('半票')
else:
print('全票')
D.
while True:
a=int(input('年龄:'))
if(a>70):
print('免费')
elif(a>60 and a<70):
print('半票')
else:
print('全票')
12、以下是一个猜数字程序,当输入的数字大于目标数字(本程序指定为5)时,提示“大了”; 当小于时,提示“小了”; 当相等时,提示“相等”,程序退出。程序中空白处分别应填入的代码是?( )
A. if,break
B. else,break
C. elif,break
D. elif,continue
13、以下不属于Python语言流程控制结构的是?( )
A. 顺序结构
B. 分支结构
C. 数据结构
D. 循环结构
14、在列表a中存放1-100之间所有的奇数,可以有多种方法,以下哪种方法是错误的?( )
A. a=list(range(1,100,2))
B. a=range(1,101,2)
C.
a=[]
i=1
while i<100:
a.append(i)
i+=2
D.
a=[]
for i in range(1,100,2):
a.append(i)
15、运行下列程序,输出的结果是?( )
pylis1=["a","e","i","o","u"]
strword='hello world'
lis2=[]
for i in strword:
if i not in lis1:
lis2.append(i)
print(lis2)
A. ['h', 'l', 'l', ' ', 'w', 'r', 'l', 'd']
B. ['h', 'l', 'l', 'w', 'r', 'l', 'd']
C. ['e', 'o', 'o']
D. ['e', '', 'o', ' ', 'o']
16、运行下列程序,输出的结果是?( )
for s in "HelloWorld":
if s=="W":
continue
print(s,end="")
A. World
B. Hello
C. Helloorld
D. HelloWorld
17、想要统计数字1在列表number中出现的次数,正确的代码是?
A.
n = 0
for i in range(len(number)):
if number[i] == 1:
n += 1
print(n)
B.
n = 0
for i in range(len(number)):
if i == 1:
n += 1
print(n)
C.
n = 0
for i in range(number):
if number[i]==1:
n+=1
print(n)
D.
n = 0
for i in range(len(number)):
n+=1
print(n)
18、以下程序执行的结果是?( )
a=0
b=5
Sum=0
for i in range(3):
if a>0:
Sum+=a
a+=1
elif b>1:
Sum+=b
a+=1
b+=1
print(Sum)
A. 7
B. 9
C. 11
D. 12
19、编写一段猜密码程序,只允许猜三次,当猜中密码时,提示“密码正确”,程序退出。当输入密码错误时,提示“密码错误”,并提示剩余次数。程序空白处应填写的条件是?( )
A. abc>0
B. abc>=0
C. abc==0
D. abc!=3
20、执行以下程序
a=range(1,10)
for i in a:
if i%2 == 0:
print(i)
运行结果为?( )
A. 1 3 5 7 9
B. 1 4 7
C. 2 4 6 8
D. 2 5 7 9
21、以下程序功能是?( )
a=0
sum=0
for i in range(1,100):
if i%2==0:
a=a+1
print(a)
A. 计算并输出100以内(不含0和100)所有数字的和
B. 计算并输出1-100所有数字的和,输出5050
C. 统计并输出100以内(不含0和100)偶数个数,输出50
D. 统计并输出100以内(不含0和100)偶数个数,输出49
22、以下程序执行后的结果是?( )
s='Kevin likes English.'
new=''
for i in range(len(s)):
if i%3==0:
new+=s[i]
print(new)
A. enisni.
B. KileEls
C. KvnlksEgih
D. KileElh
23、下面的语句哪个会无限循环执行下去?
A.
for a in range(10):
print(a)
B.
a=1
while True:
print(a)
if a==3:
break
a=a+1
C.
a=1
while True:
print(a)
if a==3:
continue
a=a+1
D.
a=[1,0,2]
for i in a:
if not i:
continue
print(i)
24、执行下面代码,输出的结果是?( )
for leibie in 'student':
if leibie=='u':
break
print(leibie)
A. st
B. stu
C.
s
t
D.
s
t
u
25、下列说法正确的是?( )
A. if语句通常用于重复执行某一段程序
B. while语句通常用于执行条件判断
C. 在Python中可以使用do..while循环
D. break语句可以跳出for和while的循环体
二、判断题(共10题,每题2分,共20分)
26、程序设计的三种基本结构为:顺序结构、选择结构和分支结构。
正确 错误
27、执行以下程序,运行结果是:14
a=1
while a<100:
if a%2==0 and a%7==0:
print(a)
break
a=a+1
正确 错误
28、Python程序设计语言中的循环结构可用while或for语句来实现,所有的while语句均可用for语句来实现。
正确 错误
29、ESC可以用于Python跳出循环。
正确 错误
30、下列程序是对0~9之间的偶数相累加。( )
s=0
for i in range(10):
if i%2==0:
s=s+i
print(s)
正确 错误
31、while语句只能用于未知次数的循环,for语句只能用于循环次数己知的循环.( )
正确 错误
32、凡是用while语句编写的循环结构,都可以用for语句实现
正确 错误
33、执行下列代码后,运行结果是:Helloorld!( )
for i in "HelloWorld!":
if i=="W":
break
print(i,end="")
正确 错误
34、在Python中range(),表示的是正整数序列,负数是无效的
正确 错误
35、else保留字除了可以和if语句一起搭配使用构成if...else..,也可以和while或for循环搭配使用,构成while...else...和for...else...结构。( )
正确 错误
三、编程题(共2题,共30分)
36、设计一个停车场收费计算器(收费规则,2小时以内收费5元,超出部分每小时加收2元),要求如下:
(1) 设计的程序要能输入停车时间(单位为小时,输入的小时数为整数);
(2) 程序可以根据输入的停车时间自动计算出停车费,并且显示出来;
(3) 程序可以重复使用。
37、可以对任何一个自然数进行若干次运算,最终都可以变为1。
运算规则如下:
(1)若该数是偶数,则变为原数的一半;
(2)若该数是奇数,则变为原数的3倍加1;
(3)重复(1)(2),直到该数变为1。
编写程序实现如下功能:输入一个大于1的自然数,计算按照上述方法最终变换为1共经过的变换次数,并输出变换次数。(输出格式为:直接输出次数即可)
示例1:若输入自然数8,则输出结果为:3。
示例2:若输入自然数5,则输出结果为:5。
答案
一、单选题 1、A 2、C 3、A 4、D
5、C
试题解析:当i值为100时,执行到break语句跳出循环。
6、A 7、A 8、A 9、A
10、B
试题解析:while循环和continue的应用,在i小于等于10的时,i从1不断往上加1,当i是2的倍数时输出i,答案就是B了
11、B 12、C
13、C
试题解析:Python语言控制结构有:单分支选择结构、双分支选择结构、多分支选择结构、顺序结构、循环结构
14、B 15、A 16、C 17、A 18、B 19、A
20、C 21、D 22、D 23、C 24、C
25、D
试题解析:Python中没有do..while循环
二、判断题
26、错误
试题解析:程序设计的三种基本结构为:顺序结构、选择结构和循环结构。选择结构也称为分支结构。
27、正确
28、错误
试题解析:Python程序设计语言中的循环结构可用while或for语句来实现,所有的for语句均可用while语句来实现,但while语句不一定能用for语句来实现,因此说法错误。
29、错误
试题解析:break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。 continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
30、正确 31、错误 32、错误
33、错误 34、错误
35、正确
试题解析:如题,while...else和for...else...是循环语句的拓展用法
三、编程题
36、参考程序:
while 1:
n=eval(input('输入停车小时数(正整数):'))
if n<=2:
s=5
else:
s=5+(n-2)*2
print("停车费:",s)
评分标准:
(1)有输入的交互;(2分)
(2)2小时内收费5元的程序实现;(5分)
(3)2小时以上停车费程序的实现;(5分)
(4)程序能够重复使用(循环);(3分)
37、参考程序:
x=int(input("请输入自然数:"))
count=0
while x!=1:
if x%2==0:
x=x//2
else:
x=3*x+1
count=count+1
print(count)
评分标准:
(1)有循环语句: 1分,使用得当:1分;合计2分
(2)有循环条件:1分,循环条件正确:2分;合计3分
(3)有条件判断语句: 1分,条件判断语句正确1分;合计2分
(4)有输入语句并且使用正确:1分
(5)有输出语句:1分
(6)结果正确:1分