【Python】学习笔记11
无限循环
由条件控制的循环运行方式
while <条件>:
<语句块>
反复执行语句块,直到条件不满足时结束。
>>a=3; >>while a>0: a=a-1; print(a)
结果是
2 1 0
如果把代码做小小的修改
>>a=3; >>while a>0: a=a+1; print(a)
这段代码执行会输出4,5,6…..
程序会一直运行下去。
当发现程序不会退出时,我们会用Ctrl+C来结束执行。
循环控制保留字
break:跳出并结束整个循环,执行循环后的语句。
continue:结束当次循环,继续执行后续次数循环。
程序遇到T时结束本次循环,继续循环,
输出结果为PYHON,
把T给去掉了。
看下面例子
程序遇到T时,结束循环,执行循环后面的语句,输出结果为PY,把T之后的去掉了。
continue是结束当次循环,继续遍历循环;break是结束整个循环,跳出循环后,执行循环后面的语句。
那么问题来了:如果有两层,或者多层循环,break该怎么办呢?
看下面的例子,判断S是否为空字符串,如果不为空,逐个输出字符串中的字符,然后是对字符串进行切片操作。输出结果如图,形成了两层循环。
修改一下
不知道聪明的你是否也发现这个输出结果的不同之处了?最开始,字符串是PYTHON,使用内层循环for来遍历字符串PYTHON每一个字符,当遇到字符T的时候,break会跳出当次循环,仅仅跳出for循环,break仅能跳出当前最内层循环,跳出for循环之后呢?
因为外面还有while循环,所以会继续执行while循环。所以这串代码的意思是我们遍历字符串,遇到T停止遍历,并对字符串进行切片,继续遍历,所以 最后的结果就是PYPYPYPYPYP.。(这个老哥很喜欢py啊,好可怕)
所以请大家千万要记住,一个break就是仅跳出当前的最内层循环,如果有多层循环嵌套时,只跳出内层,外层循环依然有效,break一般遵循就近原则。
循环的高级用法
我们已经学会使用(for in),while,来进行遍历循环与无限循环,其实Python还提供循环的扩展用法,就是循环与else的搭配,我们知道else保留字是用来做条件判断的,但是它却可以和我的循环结成组合。
使用方法如下所示:
for <循环变量> in <遍历结构>: <语句块1> else: <语句块2> while <条件>: <语句块> else: <语句块2>
无论是for还是while循环,当循环没有被break语句退出时,执行else语句。
简单说,当循环正常执行退出时(循环体中执行continue时不影响),我们会奖励它再执行一段else语句。
在代码中,没有break语句,所以循环中一定不会遇到break,所以循环退出后,会执行else后面的代码。
因为有break语句,循环退出,并不会执行else后面的语句块。
所以通过else拓展,我们能够知道,循环中有没有被break结束,这样对于程序逻辑的设计,将变得更加简洁。
下面我们对循环结构进行小结:
for...in... 遍历循环:计数,字符串,列表,文件。。。
while无限循环。。。
continue break保留字:退出当前循环层次
循环else的高级用法与break有关