在我们之前使用的示例中,有时需要多次执行相同的工作。我们使用一个计数器来检查代码需要执行多少次。这种技术称为循环。首先,我们将研究 while 语句的循环。

While 循环

While 语句的语法如下

  1. while condition:
  2. statement1
  3. statement2

我们要重用的代码必须在 while 语句下正确缩进。 如果条件为真,它们将被执行。 与 if-else 语句一样,任何非零值都为真。 让我们写一个简单的代码来打印数字 0 到 10

  1. >>> n = 0
  2. >>> while n < 11:
  3. ... print(n)
  4. ... n += 1
  5. ...
  6. 0
  7. 1
  8. 2
  9. 3
  10. 4
  11. 5
  12. 6
  13. 7
  14. 8
  15. 9
  16. 10

在第一行中我们设置 n = 0,然后在 while 语句中条件是 n < 11,这意味着任何缩进在下面的行都将执行,直到 n 变得相同或大于11。在循环中,我们只是打印 n 的值,然后增加1。

这些代码在现实生活中对我们有什么帮助呢?想想你不得不一个接一个地打开10个灯泡的情况。也许你可以从1到10运行一个循环,对于 n 上的每个值,打开第 n 个灯泡。

斐波那契数列

让我们尝试解决斐波那契数列。 在这个系列中,我们通过将前两个数字相加得到下一个数字。 所以这个系列看起来像 1,1,2,3,5,8,13 …….

  1. #!/usr/bin/env python3
  2. a, b = 0, 1
  3. while b < 100:
  4. print(b)
  5. a, b = b, a + b

输出

  1. $ ./fibonacci1.py
  2. 1
  3. 1
  4. 2
  5. 3
  6. 5
  7. 8
  8. 13
  9. 21
  10. 34
  11. 55
  12. 89

  1. #!/usr/bin/env python3
  2. a, b = 0, 1
  3. while b < 100:
  4. print(b, end=' ')
  5. a, b = b, a + b

输出

  1. $ ./fibonacci2.py
  2. 1 1 2 3 5 8 13 21 34 55 89

Power 系列

乘法表

在这个例子中,我们将打印10个乘法表。

  1. #!/usr/bin/env python3
  2. i = 1
  3. print("-" * 50)
  4. while i < 11:
  5. n = 1
  6. while n <= 10:
  7. print("%4d" % (i * n), end=' ')
  8. n += 1
  9. print()
  10. i += 1
  11. print("-" * 50)

输出

  1. $ ./multiplication.py
  2. --------------------------------------------------
  3. 1 2 3 4 5 6 7 8 9 10
  4. 2 4 6 8 10 12 14 16 18 20
  5. 3 6 9 12 15 18 21 24 27 30
  6. 4 8 12 16 20 24 28 32 36 40
  7. 5 10 15 20 25 30 35 40 45 50
  8. 6 12 18 24 30 36 42 48 54 60
  9. 7 14 21 28 35 42 49 56 63 70
  10. 8 16 24 32 40 48 56 64 72 80
  11. 9 18 27 36 45 54 63 72 81 90
  12. 10 20 30 40 50 60 70 80 90 100
  13. --------------------------------------------------