likes
comments
collection
share

Python入门篇之循环结构

作者站长头像
站长
· 阅读数 19

引入

Python 通过 forwhile 等保留字提供遍历循环和无限循环的结构

根据循环执行次数的确定性,循环可以分为确定次数循环非确定次数循环

确定次数循环指循环体对循环次数有明确的定义,这类循环在 Python 中被称为 “遍历循环”,其中,循环次数采用遍历结构中的元素个数来体现,具体采用 for 语句实现。非确定次数循环指程序不确定循环体可能的执行次数,而通过条件判断是否继续执行循环体,Python 提供了根据判断条件执行程序的无限循环,采用 while 语句实现

遍历循环:for 语句

Python 通过保留字 for 实现 “遍历循环”,基本使用方法如下:

for<循环变量> in <遍历结构>:
    <语句块>

它之所以称为 “遍历循环”,是因为 for 语句的循环执行次数是根据遍历结构中元素个数确定的。遍历循环可以理解为从遍历结构中逐一提取元素 ,放在循环变量中,对于所提取的每个元素执行一次语句块

遍历结构可以是字符串、文件、组合数据类型或 range() 函数等,常用的使用方式如下:

循环 N 次

for i in range(N):
    <语句块>

遍历文件 f 的每一行

for line in f:
    <语句块>

遍历字符串 s

for c in s:
    <语句块>

遍历列表 ls

for item in ls:
    <语句块>

遍历循环还有一种扩展模式,使用方法如下:

for <循环变量> in <遍历结构>:
    <语句块1>
else:
    <语句块2>

在这种扩展模式中,当 for 循环正常执行之后,程序会继续执行 else 语句中的内容。else 语句只在循环正常执行并结束后才执行,因此,可以在 <语句块2> 中放置判断循环执行情况的语句。后面我们会结合 continuebreak 语句进一步讲解 for 语句中 else 的用法。这里先给出一个小例子:

for s in "BIT":
    print("循环进行中:" + s)
else:
    s = "循环正常结束"
print(s)

程序运行结果如下:

循环进行中:B 循环进行中:I 循环进行中:T 循环正常结束

无限循环:while 语句

很多应用无法在执行之初确定遍历结构,这需要编程语言提供根据条件进行循环的语法,称为无限循环,又称条件循环。无限循环一直保持循环操作直到循环条件不满足才结束,不需要提前确定循环次数

Python 通过保留字 while 实现无限循环,基本使用方法如下:

while <条件>:
    <语句块>

其中条件与 if 语句中的判断条件一样,结果为 TrueFalse

while 语义很简单,当条件判断为 True 时,循环体重复执行语句块中语句;当条件为 False 时,循环终止,执行与 while 同级别缩进的后续语句

无限循环也有一种使用保留字 else 的扩展模式,使用方法如下:

while <条件>:
    <语句块 1>
else:
    <语句块 2>

在这种扩展模式中,当 while 循环正常执行后,程序会继续执行 else 语句中的内容。else 语句只在循环正常执行后才执行,因此,可以在语句块 2 中放置判断循环执行情况的语句,例如:

s = "BIT"
idx = 0
while idx < len(s):
    print("循环进行中:" + s[idx])
    idx += 1
else:
    s = "循环正常结束"
print(s)

运行结果如下:

循环进行中:B 循环进行中:I 循环进行中:T 循环正常结束

如果通过 while 实现-一个计数循环,需要在循环之前对计数器 idx 进行初始化,并在每次循环中对计数器 idx 进行累加。对比一下, 在 for 循环中循环变量逐一取自遍历结构,不需要程序维护计数器

循环保留字:break 和 continue

循环结构有两个保留字: breakcontinue,它们用来辅助控制循环执行

break 用来跳出最内层 forwhile 循环,脱离该循环后程序从循环代码后继续执行,例如:

for s in "BIT":
    for i in range(10):
        print(s,end=' ')
        if s == "I":
            break

程序执行后的结果如下:

B B B B B B B B B B I T T T T T T T T T T

其中,break 语句跳出了最内层 for 循环,但仍然继续执行外层循环。每个 break 语句只有能力跳出当前层次循环

continue 用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。对于 while 循环,继续求解循环条件。而对于 for 循环,程序流程接着遍历循环列表。对比 continuebreak 语句,如下:

for s in "PYTHON":
    if s == "T":
        continue
    print(s,end=' ')

程序执行后的结果如下:

P Y H O N

for s in "PYTHON":
    if s == "T":
        break
    print(s,end=' ')

P Y

continue 语句和 break 语句的区别是,continue 语句只结束本次循环,而不终止整个循环的执行;而 break 语句则是结束整个循环过程,不再判断执行循环的条件是否成立

for 循环和 while 循环中都存在一个 else 扩展用法。else 中的语句块只在一种条件下执行,即循环正常遍历了所有内容或由于条件不成立而结束循环,没有因为 breakreturn (函数返回中使用的保留字) 而退出。continue 保留字对 else 没有影响。看下面两个例子:

for s in "PYTHON":
    if s == "T":
        continue
    print(s,end=' ')
else:
    print("正常退出")

P Y H O N 正常退出

for s in "PYTHON":
    if s == "T":
        break
    print(s,end=' ')
else:
    print("正常退出")

P Y