有时可能希望在中间离开循环,也就是 for
循环结束计数之前,或者 while
循环找到结束条件之前。有两种方法来做到:可以用 continue
直接跳到循环的下一次迭代,或者用 break
完全中止循环。下面会更详细地说明。
提前跳转——continue
如果希望停止执行循环的当前迭代,提前跳到下一次迭代,你需要的就是一条 continue
语句。要说明这一点,最好的办法就是看一个例子,请看代码清单 8-9。
代码清单 8-9 循环中使用
continue
for i in range (1, 6): print print 'i =', i, print 'Hello, how', if i == 3:continue print 'are you today?'
运行这个程序时,输出如下:
>>> ================== RESTART ==================>>>i = 1 Hello, how are you today?i = 2 Hello, how are you today?i = 3 Hello, howi = 4 Hello, how are you today?i = 5 Hello, how are you today?
注意,第 3 次循环时(i == 3
),循环体没有完成,它提前跳到了下一次迭代(i == 4
)。这就是 continue
语句在起作用。在 while
循环中,continue
的作用也是一样的。
跳出——break
如果我们想完全跳出循环——不再完成计数,或者放弃等待结束条件,该怎么做呢?这个工作由 break
语句完成。
下面只改变代码清单 8-9 中的第 6 行,把 continue
换成 break
,再运行这个程序看看会发生什么。
>>> ================== RESTART ==================>>>i = 1 Hello how are you today?i = 2 Hello how are you today?i = 3 Hello how
这一次,循环不只是跳过第 3 次迭代的其余部分,它会完全停止循环。这正是 break
的作用。在 while
循环中,break
的作用也一样。
要指出的是,有些人认为使用 break
和 continue
并不好。就我个人来讲,我不认为这样不好,不过我自己确实很少使用这两个语句。我想还是应该告诉你一些关于 break
和 continue
的内容,没准以后你会用到。
你学到了什么
在这一章,你学到了以下内容。
for
循环(也称为计数循环)。range
函数——计数循环的一个捷径。range
的不同步长大小。while
循环(也称为条件循环)。用
continue
跳到下一次迭代。用
break
跳出循环。
测试题
1. 下面的循环会运行多少次?
for i in range (1, 6): print 'Hi, Warren'
2. 下面的循环会运行多少次?每次循环时 i 的值是什么?
for i in range (1, 6, 2): print 'Hi, Warren'
3. range(1, 8)
会给出一个怎样的数字列表?
4. range(8)
会给出一个怎样的数字列表?
5. range(2, 9, 2)
会给出一个怎样的数字列表?
6. range(10, 0, -2)
会给出一个怎样的数字列表?
7. 使用哪个关键字停止循环的当前迭代,提前跳到下一次迭代?
8. while
循环什么时候结束?
动手试一试
1. 编写一个程序,显示一个乘法表。开始时要询问用户显示哪个数的乘法表。输出应该如下所示:
Which multiplication table would you like?5Here's your table:5 x 1 = 55 x 2 = 105 x 3 = 155 x 4 = 205 x 5 = 255 x 6 = 305 x 7 = 355 x 8 = 405 x 9 = 455 x 10 = 50
2. 完成第 1 题的程序时你可能使用了 for
循环。大多数人都会这么做。不过,可以再做个练习,试着用 while
循环完成同样的工作。或者如果你在第 1 题中使用了 while
循环,现在可以试着用 for
循环来完成。
3. 向乘法表程序中再加点东西。询问用户想要的乘法表之后,再问问用户希望最大乘到几。输出应当如下所示:
Which multiplication table would you like?7How high do you want to go?12Here's your table:7 x 1 = 77 x 2 = 147 x 3 = 217 x 4 = 287 x 5 = 357 x 6 = 427 x 7 = 497 x 8 = 567 x 9 = 637 x 10 = 707 x 11 = 777 x 12 = 84
可以用 for
循环或者 while
循环的版本来完成,或者两种做法都试试看。