如何在Python中模拟Do-While循环
在本教程中,您将学习如何在Python中模拟一个do-while循环。
在任何编程语言中,循环可以帮助您根据循环条件重复执行某些操作。Python支持while和for循环结构,但不直接支持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
。
不管猜测是否正确,代码都应提示用户输入。我们可以使用一个无限循环来实现这一点。
那么我们什么时候应该跳出循环呢?
当发生以下任何一种情况时,控制应该跳出循环:
- 当用户猜测到数字时
- 当用户尚未猜到数字,但已经用尽了可用的猜测次数。用户的错误猜测次数=
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 loops和enumerate() function。