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

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

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

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

您将在接下来的几分钟内学习如何做到这一点。让我们开始吧!

什么是Do-While循环结构?

如果您已经在C或类似的语言中编程,您可能已经遇到过do-while循环结构。

在do-while循环中,循环体中的一组语句(在花括号内的块中)首先被执行,然后检查循环条件。

您可以在浏览器中运行以下C示例。

考虑以下代码片段:

//do_while_example1

#include 

int main() {
    int count = 1;
    printf("Do-While循环:n");
    
    do{
        printf("循环运行...");
        }while(count<0);

    return 0;
}

这是输出。

输出

Do-While循环: 
循环运行...

在上面的示例中:

  • count的值为1,循环条件为count < 0。但是,即使循环条件最初为False,循环仍然会运行一次。
  • 这与只有在循环条件首次为True时才执行的while循环相反。
//while_example1

#include 

int main() {
    int count = 1;
    printf("While循环:n");
    
    while(count<0){
        printf("循环运行...");
        }

    return 0;
}

如前所述,循环条件count < 0最初为False,因为count变量被初始化为1。因此,在编译和运行上述代码时,我们看到while循环体中的语句未被执行。

输出

While循环: 
//循环体不会运行!

While vs. Do-While:差异概述

让我们更详细地了解while和do-while循环之间的差异。

考虑以下示例:

//do_while_example2

#include 

int main() {
    int count = 1;
    printf("Do-while循环:n");
    
    do{
       printf("%dn",count);
       count++;
    }while(count<5);

    return 0;
}

在上面的代码单元中:

  • count变量被初始化为1。
  • 我们使用了一个do-while循环。
  • 在循环的每个迭代中,count变量递增1,并且循环条件设置为count < 5

以下是执行过程的可视化解释:do-while循环如何工作并检查循环条件四次。

输出

Do-while循环: 
1
2
3
4

如果改用while循环,我们将得到以下结果。

//while_example2

#include 

int main() {
    int count = 1;
    printf("While循环:n");
    
    while(count<5){
       printf("%dn",count);
       count++;
    };

    return 0;
}

下图解释了while循环的执行过程;在这个示例中,while循环检查循环条件五次。

输出

While循环: 
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-1次。
何时使用while循环?
– 只要条件为True时循环应该运行
– 对于入口控制型循环
– 循环条件计算成本不高时
何时使用do-while循环?
– 对于初始为False的循环条件,循环应该至少运行一次
– 对于出口控制型循环
– 循环条件计算成本较高时

在Python中模拟Do-While循环行为

从前面的部分,我们有以下两个条件来模拟do-while循环:

  • 无论循环条件是True还是False,循环体中的语句都应该执行至少一次
  • 在执行循环体中的语句后,应检查条件。如果条件为False,则应跳出循环:出口控制。

Python中的无限循环和break语句

您可以在Python中定义一个无限循环,如下所示。

while True:
    pass

# Instead of True, you can have any condition that is always True

while always-True-condition:
   pass

break语句可用于中断循环体并将控制转移到循环体外的第一条语句。

while :
    if :
        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循环来重写它们。

#1. 让我们重新访问示例:当count小于五时打印count变量的值。

我们知道如何定义一个无限循环,以保证循环体至少执行一次。

循环应该持续进行,只要计数小于五。因此,当计数达到五时,我们应该跳出循环。所以count == 5是退出控制条件。

将它们组合起来,我们有:

count = 1
while True:
  print(f"Count is {count}")
  count += 1
  if count==5:
    break
输出结果

Count is 1
Count is 2
Count is 3
Count is 4

#2. 我们也可以将其重写为Python的do-while结构。

在猜数字游戏中,我们将用户的猜测与预定义的秘密数字进行验证。用户应该在允许的最大尝试次数内猜出秘密数字,例如max_guesses

不管猜测是否正确,代码都应提示用户输入。我们可以使用一个无限循环来实现这一点。

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

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

  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("n猜一个数字:"))
    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("n猜一个数字:"))
    num_guesses += 1
    
    if guess==secret_number:
        print("恭喜,你猜对了!")
        break
    if num_guesses==max_guesses:
        print("抱歉,你没有更多次数了!")
        break

下面显示了两个示例输出。

在这个示例输出中,当用户正确猜到秘密数字时,break语句跳出循环。

# 当 secret_number = 43 且用户猜对时的示例输出!

猜一个数字:4

猜一个数字:3

猜一个数字:43
恭喜,你猜对了!

这是另一个示例输出,当用户达到可用的最大猜测次数,但未能正确猜到秘密数字。

# 当 secret_number = 33 且用户猜不对时的示例输出!

猜一个数字:3

猜一个数字:15

猜一个数字:21

猜一个数字:50

猜一个数字:17

猜一个数字:6

猜一个数字:18

猜一个数字:5

猜一个数字:12

猜一个数字:43
抱歉,你没有更多次数了!

结论

希望本教程帮助您了解如何在Python中模拟do-while循环。

以下是重点:

  • 使用无限循环确保循环体至少运行一次。它可以是一个简单的无限循环,例如while True,或者可以是while ,其中条件始终为True。
  • 在循环内部检查退出条件,并使用break语句在特定条件下跳出循环。

接下来,学习如何在Python中使用for loopsenumerate() function

类似文章