Python入门教程第57篇 循环进阶之模拟do…while语句
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第57篇 循环进阶之模拟do…while语句相关的知识,希望对你有一定的参考价值。
本篇我们学习如何在 Python 中模拟 do…while 循环语句。
do…while 循环语句
许多编程语言,例如 javascript、Java、 C# 等,都提供了 do…while 循环语句。这种循环语句和 while 循环的不同之处在于它至少会迭代一次。因为它在每次迭代结束时检查循环条件,当循环条件为 True 时继续执行迭代。
以下是 Python 中实现 do…while 循环的伪代码:
do
# code block
while condition
Python 目前还不支持这种 do…while 循环语法。不过,我们可以使用 while 循环加上 break 语句模拟这种语句。
首先,我们可以为 while 循环指定一个总是成立的条件 Ture,例如:
while True:
# code block
这种方法可以用于实现代码块的第一次执行。实际上这是一个无限循环,我们需要定义退出循环的条件:
while True:
# code block
# break out of the loop
if condition:
break
以上语法中,代码块至少会被执行一次,每次迭代之后会检查 condition。
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 循环在迭代开始就执行了条件检查,所以需要重复编写两次提示用户输入和数字比较的代码,循环之前写一次,循环内部写一次。
为了避免这种重复的代码,我们可以使用模拟的 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 循环语句。
- Python 可以使用 while 循环加上 break 语句模拟 do…while 循环。
以上是关于Python入门教程第57篇 循环进阶之模拟do…while语句的主要内容,如果未能解决你的问题,请参考以下文章