如何在 Python 中模拟 Do-While 循环
已发表: 2022-08-31在本教程中,您将学习如何在Python中模拟do-while 循环。
在任何编程语言中,循环都可以帮助您根据循环条件重复执行某些操作。 Python 支持while和for循环结构,但本身不支持do-while循环。
但是,您可以通过了解它的工作原理来模拟 do-while 循环——使用 Python 中现有的循环和循环控制语句。
您将在接下来的几分钟内了解如何执行此操作。 让我们开始!
什么是 Do-While 循环结构?

如果您使用 C 或 C++ 等语言进行编程,您可能会遇到 do-while 循环结构。
在 do-while 循环中,循环体中的一组语句(在由花括号分隔的块内)首先执行,然后检查循环条件。
您可以直接从您的浏览器在 Geekflare 的在线 C 编译器中运行以下 C 示例。
考虑以下代码片段:
//do_while_example1 #include <stdio.h> int main() { int count = 1; printf("Do-While loop: \n"); do{ printf("Loop runs..."); }while(count<0); return 0; }
这是输出。
Output Do-While loop: Loop runs...
在上面的例子中:
-
count
的值为 1,循环条件为count < 0
。 但是,即使循环条件最初为False
,循环也会运行一次。 - 这与仅在循环条件为
True
时才执行的while循环形成对比。
//while_example1 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<0){ printf("Loop runs..."); } return 0; }
如前所述,循环条件count < 0
为False
,最初count
变量被初始化为 1。因此在编译和运行上述代码时,我们看到 while 循环体中的语句没有执行。
Output While loop: //loop body does not run!
While vs. Do-While:差异概述
让我们仔细看看 while 和 do-while 循环之间的区别。

考虑这个例子:
//do_while_example2 #include <stdio.h> int main() { int count = 1; printf("Do-while loop: \n"); do{ printf("%d\n",count); count++; }while(count<5); return 0; }
在上面的代码单元格中:
-
count
变量初始化为 1。 - 我们使用 do-while 循环。
-
count
变量在每次循环过程中递增 1,并且循环条件设置为count < 5
。
这是执行如何发生的直观解释:do-while 循环如何工作并检查循环条件四次。

Output Do-while loop: 1 2 3 4
如果您改用 while 循环,这就是我们所拥有的。
//while_example2 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<5){ printf("%d\n",count); count++; }; return 0; }
下图解释了while循环的执行; 在这个例子中,while 循环检查循环条件五次。

Output While loop: 1 2 3 4
尽管上述 while 和 do-while 循环的输出是相同的,但还是有一些细微的差别。
在 while 循环中,首先检查条件,然后是循环体。 因此,如果您希望循环运行K次,则应该恰好有 K次运行,其中循环条件为True
。 在迭代次数K+1中,条件变为False
,并且控制跳出循环。
另一方面,如果您使用 do-while 循环:仅在 K通过循环后才第 K 次检查循环条件。
那么为什么这种边际改善有帮助呢?
假设循环条件的计算量很大:例如,涉及对递归函数的调用、复杂的数学运算等。
在这种情况下,对于循环体的 K 次重复,改用 do-while 循环将是有益的。
While 与 Do-While 摘要

让我们将我们学到的主要区别列成表格。
While 循环 | Do-While 循环 |
检查循环条件:在循环体执行之前 | 检查循环条件:循环体执行后 |
如果条件最初为False ,则不执行循环体。 | 如果条件最初为False ,则循环体只执行一次。 |
循环条件检查 K 次,因为 K 通过循环。 | 循环条件检查 K-1 次,因为 K 通过循环。 |
什么时候使用while循环? – 只要条件为真,循环就应该运行 – 对于入口控制循环 – 当循环条件计算量不高时 | 何时使用 do-while 循环? – 对于最初的 False 循环条件,循环应至少运行一次 – 对于退出控制循环 – 当循环条件计算量大时 |
在 Python 中模拟 Do-While 循环行为
在上一节中,我们有以下两个条件来模拟 do-while 循环:

- 循环体中的语句应该至少执行一次——不管循环条件是
True
还是False
。 - 在执行循环体中的语句后,应检查条件。 如果条件为
False
,则控件应跳出循环:退出控件。
Python中的无限While循环和Break语句

您可以在 Python 中定义一个无限 while 循环,如下所示。
while True: pass # Instead of True, you can have any condition that is always True while always-True-condition: pass
break
语句可用于跳出循环体并将控制权转移到循环体外部的第一条语句。
while <condition>: if <some-condition>: break
在 C 中的第一个 do-while 循环示例中,继续循环的条件是count < 0
。 因此,跳出循环的条件是计数值为零或大于零( count >= 0
)。
这是 Python 中 do-while 循环的模拟:
count = 1 while True: print("Loop runs...") if(count >= 0): break
Python Do-While 循环示例

我们将重温上一节中的示例,并通过模拟 do while 循环在 Python 中重写它们。
#1 。 让我们回顾一下这个例子:当count
小于 5 时打印出count
变量的值。
我们知道如何定义一个无限循环,以便循环体至少执行一次。
只要计数小于五,循环就应该继续。 因此,当计数达到 5 时,我们应该跳出循环。 所以count == 5
是退出控制条件。
放在一起,我们有:
count = 1 while True: print(f"Count is {count}") count += 1 if count==5: break
Output Count is 1 Count is 2 Count is 3 Count is 4
#2 。 我们还可以将猜数字游戏重写为 Python do-while 结构。
在数字猜谜游戏中,我们根据预定义的秘密数字验证用户的猜测。 用户应该在允许的最大尝试次数内猜出密码,例如max_guesses
。
代码应该提示用户输入,无论他们的猜测是对还是错。 我们可以使用无限的while循环来做到这一点。
那么我们什么时候应该跳出循环呢?
当发生以下任何一种情况时,控件应跳出循环:
- 当用户猜到数字时
- 当用户还没有猜到这个数字,但是已经用尽了可用的猜数。 用户猜错的次数 =
max_guesses
。
下面的代码单元显示了我们如何做到这一点。
import random low, high = 5,50 secret_number = random.choice(range(low,high)) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 conditions = [num_guesses==max_guesses,guess==secret_number] if any(conditions): break
我们可以在遇到上述每个条件时添加解释性print()
语句,然后跳出循环,而不是跳出循环。
import random low, high = 5,50 secret_number = random.choice(range(low,high)) print(secret_number) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 if guess==secret_number: print("Congrats, you guessed it right!") break if num_guesses==max_guesses: print("Sorry, you have no more guesses left!") break
下面显示了两个示例输出。
在此示例输出中,当用户正确猜出密码时,break 语句会跳出循环。
# Sample output when secret_number = 43 and user gets it right! Guess a number:4 Guess a number:3 Guess a number:43 Congrats, you guessed it right!
当用户达到可用猜测的最大数量但未能正确猜测秘密数字时,这是另一个示例输出。
# Sample output when secret_number = 33 and user fails to guess it right! Guess a number:3 Guess a number:15 Guess a number:21 Guess a number:50 Guess a number:17 Guess a number:6 Guess a number:18 Guess a number:5 Guess a number:12 Guess a number:43 Sorry, you have no more guesses left!
结论
我希望本教程能帮助您了解如何在 Python 中模拟 do-while 循环。
以下是关键要点:
- 使用无限循环来确保循环体至少运行一次。 它可以是一个普通的无限循环,例如 while True,也可以是while <condition> ,这样条件始终为 True。
- 检查循环内的退出条件,并在特定条件下使用break语句跳出循环。
接下来,学习如何在 Python 中使用 for 循环和 enumerate() 函数。