循环结构用于实现根据循环条件重复执行某段代码,可以使用循环语句实现。本节介绍的内容有while 循环、for 循环、continue 语句、break 语句、else 语句。

while 循环

语法:

while <condition>:
    <statesments>

Python会循环执行<statesments>,直到<condition>不满足为止。

例如,计算数字01000000的和:

i = 0
total = 0
while i < 1000000:
    total += i
    i += 1
print (total)

#运行结果: 499999500000

之前提到,空容器会被当成 False ,因此可以用 while 循环来读取容器中的所有元素:

plays = set(['Hamlet', 'Macbeth', 'King Lear'])
while plays:
    play = plays.pop()
    print ('Perform', play)

#运行结果:    
# Perform Hamlet
# Perform King Lear
# Perform Macbeth

循环每次从 plays 中弹出一个元素,一直到 plays 为空为止。

for 循环

for <variable> in <sequence>:
    <indented block of code>

for 循环会遍历完<sequence>中所有元素为止。

上一个例子可以改写成如下形式:

plays = set(['Hamlet', 'Macbeth', 'King Lear'])
for play in plays:
    print ('Perform', play)

# 运行结果:
# Perform Hamlet
# Perform King Lear
# Perform Macbeth    

使用 for 循环时,注意尽量不要改变 plays 的值,否则可能会产生意想不到的结果。

之前的求和也可以通过 for 循环来实现:

total = 0
for i in range(100000):
    total += i
print (total)

#运行结果:4999950000

continue 语句

遇到 continue 的时候,程序会返回到循环的最开始重新执行。也就是跳出本次循环,进入下一次循环。

例如在循环中忽略一些特定的值:

values = [7, 6, 4, 7, 19, 2, 1]
for i in values:
    if i % 2 != 0:
        # 忽略奇数
        continue
    print (i/2)

# 运行结果:
# 3.0
# 2.0
# 1.0

break 语句

遇到 break 的时候,程序会跳出循环,不管循环条件是不是满足:

command_list = ['start', 
                'process', 
                'process',
                'process', 
                'stop', 
                'start', 
                'process', 
                'stop']
while command_list:
    command = command_list.pop(0)
    if command == 'stop':
        break
    print(command)

# 运行结果:    
# start
# process
# process
# process

else语句

if 一样, whilefor 循环后面也可以跟着 else 语句,不过要和break一起连用。

  • 当循环正常结束时,循环条件不满足, else 被执行;
  • 当循环被 break 结束时,循环条件仍然满足, else 不执行。

不执行:

values = [7, 6, 4, 7, 19, 2, 1]
for x in values:
    if x <= 10:
        print ('Found:', x)
        break
else:
    print ('All values greater than 10')

执行:

values = [11, 12, 13, 100]
for x in values:
    if x <= 10:
        print ('Found:', x)
        break
else:
    print ('All values greater than 10')

博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/RePython9.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 06 月 12 日
如果觉得我的文章对你有用,请随意赞赏