原文:Python Do While – Loop Example,作者:Dionysia Lemonaki

循环是所有现代编程语言中的一个有用且经常使用的功能。

如果你想自动完成一项特定的重复性任务,或防止自己在程序中编写重复性代码,使用循环是最好的选择。

循环是一组指令重复运行,直到满足一个条件。让我们了解更多关于 Python 中循环的工作原理。

Python 中的循环

Python 中有两种类型的循环:

  • for 循环
  • while 循环

让我们集中讨论如何在 Python 中创建一个 while 循环以及它是如何工作的。

Python 中的 while 循环是什么

Python 中 while 循环的一般语法如下所示:

while condition:
    execute this code in the loop's body

一个 while 循环将在一个条件为 True 时运行一段代码。它将一直执行所需的代码语句集,直到该条件不再为真。

while 循环在运行前总是首先检查条件。

如果条件被评估为 True,那么循环将在循环体中运行代码。

例如,只要 number 小于 10,这个循环就会运行:

number = 0
while number < 10:
    print(f"Number is {number}!")
    number = number + 1

输出:

Number is 0!
Number is 1!
Number is 2!
Number is 3!
Number is 4!
Number is 5!
Number is 6!
Number is 7!
Number is 8!
Number is 9!

这里,变量 number 最初被设置为 0

在运行任何代码之前,Python 检查条件(number < 10)。它的值为 True,所以打印语句被执行,Number is 0! 被打印到控制台。

然后 number 被增加 1。条件被重新评估,结果还是 True,所以整个过程重复进行,直到 number 等于 9

这一次,Number is 9! 被打印出来,number 被递增,但是现在 number 等于 10,所以条件不再被满足,因此循环被终止了。

如果不满足条件,有可能 while 循环永远不会运行,就像这个例子中一样:

number = 50
while number < 10 :
    print(f"Number is {number}!")

由于条件总是假的,循环主体中的指令就不会执行。

不要创建无限循环

正如你在上面的例子中所看到的,while 循环通常伴随着一个变量,其值在整个循环的持续时间内会发生变化,而它最终决定了循环的结束时间。

如果你不添加这一行,你将创建一个无限的循环。

number 将不会被递增和更新。它将永远被设置并保持在 0,因此条件 number < 10 将永远是 True。这意味着该循环将一直循环下去。


# don't run this

number = 0
while number < 10:
    print(f"Number is {number}!")

输出:

Number is 0!
Number is 0!
Number is 0!
Number is 0!
Number is 0!
Number is 0!
Number is 0!
...

它无限运行。

这和这样做是一样的:


#don't run this
while True:
    print("I am always true")

如果你发现自己处于这样的情况下怎么办?

Control C 键来避免,结束循环。

什么是 do while 循环

在其他编程语言中,do while 循环的一般语法是这样的:

do {
  loop block statement to be executed;
  }
while(condition);

例如,C 中的 do while 循环如下所示:

#include <stdio.h>
 
int main(void)
 {
   int i = 10;
   do {
      printf("the value of i: %i\n", i);
      i++;
      }
  while( i < 20 );
 }

do while 循环的独特之处在于,循环块中的代码将至少被执行一次。

语句中的代码运行一次,然后在代码执行完毕后才检查条件。

因此,代码先运行一次,然后检查条件。

如果检查的条件评估为真,则循环继续。

在有些情况下,你会希望你的代码至少运行一次,这就是 do while 循环的用武之地。

例如,当你写一个接受用户输入的程序时,你可能只要求输入一个正数。该代码将至少运行一次。如果用户提交的数字是负数,循环将继续运行。如果是正数,它将停止。
Python 没有内置的功能可以像其它语言一样明确地创建一个 do while 循环。但是在 Python 中模拟 do while 循环是可能的。

如何在 Python 中模拟 do while 循环

为了在 Python 中创建一个 do while 循环,你需要对 while 循环做一些修改,以便获得与其他语言中的 do while 循环相似的行为。

快速更新一下记忆,`do while` 循环将至少运行一次。如果条件得到满足,那么它将再次运行。

而另一方面,while 循环不会至少运行一次,事实上可能永远不会运行。它只在条件得到满足时运行。

所以,假设我们有一个例子,我们希望一行代码至少运行一次。

secret_word = "python"
counter = 0

while True:
    word = input("Enter the secret word: ").lower()
    counter = counter + 1
    if word == secret_word:
        break
    if word != secret_word and counter > 7: 
        break

该代码将至少运行一次,要求用户输入。

它总是保证至少运行一次,结果为 True,否则会产生一个无限的循环。

如果用户输入了正确的密语,循环就会终止。

如果用户输入错误的密语超过 7 次,那么循环将被完全退出。

break 语句允许你控制 while 循环的流程,而不是以无限循环而告终。

break 会立即将当前的循环全部终止,并从循环中脱离出来。

所以这就是你如何在 Python 中创建一个类似于 do while 循环的效果。

这个循环总是至少执行一次。如果一个条件没有得到满足,它将继续循环,然后在条件得到满足时终止。

总结

你现在知道如何在 Python 中创建一个 do while 循环。

如果你有兴趣学习更多关于 Python 的知识,你可以在 freeCodeCamp 的 YouTube 频道上观看 12 个 Python 项目视频。你将会创建 12 个面向初学者的项目。

freeCodeCamp 也有一个免费的 Python 认证,以帮助你很好地理解和全面地了解该语言的重要基础知识。

在课程结束时,你还可以建立五个项目来实践你所学到的知识。

谢谢你阅读本文,学习愉快~