MEMOO
MEMOO
Published on 2025-04-19 / 2 Visits
0
0

Python模拟do...while语句

摘要:在本节中,你将学习如何在 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 循环。


Comment