摘要:在本节中,你将学习如何在 Python 中模拟 do…while
循环语句
do…while
循环语句简介
如果你来自其他编程语言(如 JavaScript、Java 或 C#)的背景,那么你已经熟悉 do...while
循环语句。
与 while
循环不同do...while
循环语句至少会执行一次迭代。它在每次迭代的末尾检查条件,并在条件为 False
之前一直执行代码块。
以下是 Python 中 do...while
循环的伪代码:
do
# code block
while condition
不幸的是,Python 不支持 do...while
循环。不过,你可以使用 while
循环和 break
语句来模拟 do...while
循环语句。
首先,在 while
循环中将条件指定为 True
,如下所示:
while True:
# code block
这样可以让代码块至少执行一次。然而,由于条件始终为 True
,这会导致一个无限循环。这不是我们期望的结果。
其次,放置一个条件以跳出 while
循环:
while True:
# code block
# break out of the loop
if condition
break
在这个语法(结构)中,代码块在第一次时总是至少会执行一次,并且在每次迭代的末尾都会检查条件。
do…while
循环模拟示例
假设你需要开发一个数字猜谜游戏,其逻辑如下:
首先,在某个范围内(例如 0 到 10)生成一个随机数。
然后,反复提示用户输入一个数字。如果输入的数字比随机数低或高,就向用户提供提示。如果输入的数字等于随机数,则循环停止。
以下程序使用 while
循环来开发这个数字猜谜游戏:
from random import randint
# determine the range
MIN = 0
MAX = 10
# generate a secret number
secret_number = randint(MIN, MAX)
# initialize the attempt
attempt = 0
# The first attempt
input_number = int(input(f'Enter a number between {MIN} and {MAX}:'))
attempt += 1
if input_number > secret_number:
print('It should be smaller.')
elif input_number < secret_number:
print('It should be bigger.')
else:
print(f'Bingo! {attempt} attempt(s)')
# From the second attempt
while input_number != secret_number:
input_number = int(input(f'Enter a number between {MIN} and {MAX}:'))
attempt += 1
if input_number > secret_number:
print('It should be smaller.')
elif input_number < secret_number:
print('It should be bigger.')
else:
print(f'Bingo! {attempt} attempt(s)')
以下是示例运行结果:
Enter a number between 0 and 10:5
It should be bigger.
Enter a number between 0 and 10:7
It should be bigger.
Enter a number between 0 and 10:8
Bingo! 3 attempt(s)
由于 while
循环在每次迭代开始时检查条件,因此有必要将提示用户输入和检查数字的代码重复两次,一次在循环之前,一次在循环内部。
为了避免这种重复代码,你可以使用 while
循环来模拟 do while
循环,如下所示:
from random import randint
# determine the range
MIN = 0
MAX = 10
# generate a secret number
secret_number = randint(MIN, MAX)
# initialize the attempt
attempt = 0
while True:
attempt += 1
input_number = int(input(f'Enter a number between {MIN} and {MAX}:'))
if input_number > secret_number:
print('It should be smaller.')
elif input_number < secret_number:
print('It should be bigger.')
else:
print(f'Bingo! {attempt} attempt(s)')
break
其工作原理如下:
首先,移除
while
循环之前的代码。其次,通过使用
break
语句添加条件,如果输入的数字等于随机数,则停止循环。
总结
Python 不支持
do-while
循环语句。使用
while
循环和break
语句在 Python 中模拟do...while
循环。