如何在 Python 中模拟 Do-While 循环

已发表: 2022-08-31

在本教程中,您将学习如何在Python中模拟do-while 循环

在任何编程语言中,循环都可以帮助您根据循环条件重复执行某些操作。 Python 支持whilefor循环结构,但本身不支持do-while循环。

但是,您可以通过了解它的工作原理来模拟 do-while 循环——使用 Python 中现有的循环和循环控制语句。

您将在接下来的几分钟内了解如何执行此操作。 让我们开始!

什么是 Do-While 循环结构?

什么是 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 < 0False ,最初count变量被初始化为 1。因此在编译和运行上述代码时,我们看到 while 循环体中的语句没有执行。

 Output While loop: //loop body does not run!

While vs. Do-While:差异概述

让我们仔细看看 while 和 do-while 循环之间的区别。

While vs 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 循环如何工作并检查循环条件四次。

执行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 循环检查循环条件五次。

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循环来做到这一点。

那么我们什么时候应该跳出循环呢?

当发生以下任何一种情况时,控件应跳出循环:

  1. 当用户猜到数字时
  2. 当用户还没有猜到这个数字,但是已经用尽了可用的猜数。 用户猜错的次数 = 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() 函数。