【愚公系列】2021年12月 Python教学课程 11-流程控制-循环控制
一、循环控制
很多时候,我们在处理业务的时候,并不是如果怎么样就怎么样,而是一直做某件事,直到全部做完,甚至永远做不完…
循环控制,就是让程序循环运行某一段代码直到满足退出的条件,才退出循环。
Python 用关键字 for 和 while 来进行循环控制,但是没有其它语言的 do…while 语句。
1.while 循环
语法格式:
while 判断表达式:
内部代码块
while 循环用伪代码描述就是“当条件满足的时候,就一直运行 while 所管理的代码块,当
条件不满足的时候,就结束 while 循环。”
看个例子:
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
通常,我们要在循环条件,或循环体内设置退出条件,防止死循环,但有时候也需要无限循环。例如 Web 服务器响应客户端的实时请求。而下面则是一个没有退出机制的死循环,程序永远不会打印 Good bye。
while True: # 表达式永远为 true
s = input("输入点什么吧: ")
print ("你输入的是: ", s)
print ("Good bye!")
while 的 else 从句:
while 循环还可以增加一个 else 从句。当 while 循环正常执行完毕,会执行 else 语句。但如果是被 break 等机制强制提前终止的循环,不会执行 else 语句。注意 else 与 while 平级的缩进方式!
number = 10
i = 0
while i < number:
print(i)
i += 1
else:
print("执行完毕!")
下面是被打断的 while 循环,else 不会执行:
number = 10
i = 0
while i < number:
print(i)
i += 1
if i == 7:
break
else:
print("执行完毕!")
2.for 循环
虽然与 while 一样都是循环的关键字,但 for 循环通常用来遍历可迭代的对象,如一个列表或者一个字典。其一般格式如下:
for <variable> in <sequence>:
<statements>
for … in …: 属于固定套路。其实我们在前面的章节已经或多或少的介绍过 for 的用法,尤其是遍历一些数据类型的时候。
每次 for 循环运行的时候,在<variable>
位置的变量将设置为<sequence>
中的下一项,
<statements>
将运行,然后 python 将回到<statements>
的开始位置。除非<sequence>
中没有项了,否则<sequence>
中的下一项将保存到<variable>
中。等到<sequence>
中
没有项的时候,python 将跳过<statements>
并继续执行后续代码。
如果想让代码运行一定的次数,需要使用 range()函数。内建函数 range()接受一个
整数作为输入并返回一个数字列表,其中的项为从 0 开始,直到比给定的整数小 1 的整数。如果不想从 0 开始,就给 range()两个数字,开始数字和结束数字。还可以让 range()按照一定数值递增,这个数值叫做步长。
一个例子:
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)
for 循环的 else 子句:
与 while 一样,for 循环也可以有 else 子句。同样是正常结束循环时,else 子句执行。被
中途 break 时,则不执行。
3.循环的嵌套
if 判断可以嵌套,while 和 for 当然也可以嵌套。但是建议大家不要嵌套 3 层以上,那样的效率会很低。下面是一个嵌套 for 循环结合 else 子句的例子:
# 这是一个判断质数的程序
for n in range(2, 100):
for x in range(2, n):
if n % x == 0:
print(n, '等于', x, '*', n//x)
break
else:
# 循环中没有找到元素
print(n, ' 是质数')
4.break 语句
通常情况下的循环要么执行出错,要么死循环,要么就只能老老实实等它把所有的元素循环一遍才能退出。如果想在循环过程中退出循环,怎么办?用 break 语句!
break 只能用于循环体内。其效果是直接结束并退出当前循环,剩下的未循环的工作全部被忽略和取消。注意当前两个字,Python 的 break 只能退出一层循环,对于多层嵌套循环,不能全部退出。
for letter in 'Hello world': # 第一个实例
if letter == 'o':
break
print ('当前字母为 :', letter)
--------------------------------------------
var = 10 # 第二个实例
while var > 0:
print ('当期变量值为 :', var)
var -= 1
if var == 5:
break
5.continue 语句
与 break 不同,continue 语句用于跳过当前循环的剩余部分代码,直接开始下一轮循环。它不会退出和终止循环,只是提前结束当前轮次的循环。同样的,continue 语句只能用在循环内。
for letter in 'Hello world': # 第一个实例
if letter == 'o': # 字母为 o 时跳过输出
continue
print ('当前字母 :', letter)
-------------------------------------------------------
var = 10 # 第二个实例
while var > 0:
var -= 1
if var == 5: # 变量为 5 时跳过输出
continue
print ('当前变量值 :', var)
Python 没有 goto 语法
前面说了,在嵌套循环中,break 只能跳出当前层的循环,无法全部跳出。在 C 语言中有goto 语法,可以实现这一功能,但是 Python 没有 goto。那有需求的时候怎么办呢?设置flag!
flag = False # 用于控制外层循环的标志
for i in range(10):
if flag: # 当 flag 被内层循环设置为 True 的时候,跳出外层循环
break
for j in range(10):
if j==7:
flag = True
break
print(i,j)
- 点赞
- 收藏
- 关注作者
评论(0)