【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 循环。
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不剪发的Tony老师

为 5 个 C 币而折腰。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值