8.8 跳出循环————breakcontinue

有时可能希望在中间离开循环,也就是 for 循环结束计数之前,或者 while 循环找到结束条件之前。有两种方法来做到:可以用 continue 直接跳到循环的下一次迭代,或者用 break 完全中止循环。下面会更详细地说明。

{%}

提前跳转——continue

如果希望停止执行循环的当前迭代,提前跳到下一次迭代,你需要的就是一条 continue 语句。要说明这一点,最好的办法就是看一个例子,请看代码清单 8-9。

代码清单 8-9 循环中使用 continue

  1. for i in range (1, 6):
  2. print
  3. print 'i =', i,
  4. print 'Hello, how',
  5. if i == 3:
  6. continue
  7. print 'are you today?'

运行这个程序时,输出如下:

  1. >>> ================== RESTART ==================
  2. >>>
  3. i = 1 Hello, how are you today?
  4. i = 2 Hello, how are you today?
  5. i = 3 Hello, how
  6. i = 4 Hello, how are you today?
  7. i = 5 Hello, how are you today?

注意,第 3 次循环时(i == 3),循环体没有完成,它提前跳到了下一次迭代(i == 4)。这就是 continue 语句在起作用。在 while 循环中,continue 的作用也是一样的。

跳出——break

如果我们想完全跳出循环——不再完成计数,或者放弃等待结束条件,该怎么做呢?这个工作由 break 语句完成。

下面只改变代码清单 8-9 中的第 6 行,把 continue 换成 break,再运行这个程序看看会发生什么。

  1. >>> ================== RESTART ==================
  2. >>>
  3. i = 1 Hello how are you today?
  4. i = 2 Hello how are you today?
  5. i = 3 Hello how

这一次,循环不只是跳过第 3 次迭代的其余部分,它会完全停止循环。这正是 break 的作用。在 while 循环中,break 的作用也一样。

要指出的是,有些人认为使用 breakcontinue 并不好。就我个人来讲,我不认为这样不好,不过我自己确实很少使用这两个语句。我想还是应该告诉你一些关于 breakcontinue 的内容,没准以后你会用到。

你学到了什么

在这一章,你学到了以下内容。

  • for 循环(也称为计数循环)。

  • range() 函数——计数循环的一个捷径。

  • range() 的不同步长大小。

  • while 循环(也称为条件循环)。

  • continue 跳到下一次迭代。

  • break 跳出循环。

测试题

  1. 下面的循环会运行多少次?
  1. for i in range (1, 6):
  2. print 'Hi, Warren'
  1. 下面的循环会运行多少次?每次循环时 i 的值是什么?
  1. for i in range (1, 6, 2):
  2. print 'Hi, Warren'
  1. range(1, 8) 会给出一个怎样的数字列表?

  2. range(8) 会给出一个怎样的数字列表?

  3. range(2, 9, 2) 会给出一个怎样的数字列表?

  4. range(10, 0, -2) 会给出一个怎样的数字列表?

  5. 使用哪个关键字停止循环的当前迭代,提前跳到下一次迭代?

  6. while 循环什么时候结束?

动手试一试

  1. 编写一个程序,显示一个乘法表。开始时要询问用户显示哪个数的乘法表。输出应该如下所示:
  1. Which multiplication table would you like?
  2. 5
  3. Here's your table:
  4. 5 x 1 = 5
  5. 5 x 2 = 10
  6. 5 x 3 = 15
  7. 5 x 4 = 20
  8. 5 x 5 = 25
  9. 5 x 6 = 30
  10. 5 x 7 = 35
  11. 5 x 8 = 40
  12. 5 x 9 = 45
  13. 5 x 10 = 50
  1. 完成第 1 题的程序时你可能使用了 for 循环。大多数人都会这么做。不过,可以再做个练习,试着用 while 循环完成同样的工作。或者如果你在第 1 题中使用了 while 循环,现在可以试着用 for 循环来完成。

  2. 向乘法表程序中再加点东西。询问用户想要的乘法表之后,再问问用户希望最大乘到几。输出应当如下所示:

  1. Which multiplication table would you like?
  2. 7
  3. How high do you want to go?
  4. 12
  5. Here's your table:
  6. 7 x 1 = 7
  7. 7 x 2 = 14
  8. 7 x 3 = 21
  9. 7 x 4 = 28
  10. 7 x 5 = 35
  11. 7 x 6 = 42
  12. 7 x 7 = 49
  13. 7 x 8 = 56
  14. 7 x 9 = 63
  15. 7 x 10 = 70
  16. 7 x 11 = 77
  17. 7 x 12 = 84

可以用 for 循环或者 while 循环的版本来完成,或者两种做法都试试看。