Python do…while Emulação de instrução de loop

Resumo : neste tutorial, você aprenderá como emular a do...whileinstrução loop em Python

Introdução à instrução do…while loop

Se você veio de outras linguagens de programação, como JavaScript , Java ou C#, já está familiarizado com a do...whileinstrução loop.

Ao contrário do whileloop, a do...whileinstrução loop executa pelo menos uma iteração. Ele verifica conditionno final de cada iteração e executa um bloco de código até que conditionseja False.

O seguinte mostra o pseudocódigo do do...whileloop em Python:

do
    # code block
while conditionLinguagem de código:  PHP  ( php )

Infelizmente, Python não oferece suporte ao do...whileloop. No entanto, você pode usar o whileloop e uma breakinstrução para emular a do...whileinstrução do loop.

Primeiro, especifique o conditionas Trueno whileloop assim:

while True:
    # code blockLinguagem de código:  PHP  ( php )

Isso permite que o bloco de código seja executado pela primeira vez. No entanto, como a condição é sempre True, cria um loop indefinido. Isto não é o que esperávamos.

Segundo, coloque uma condição para sair do whileloop:

while True:
    # code block

    # break out of the loop
    if condition
        breakLinguagem de código:  PHP  ( php )

Nesta sintaxe, o bloco de código sempre executa pelo menos um pela primeira vez e a condição é verificada ao final de cada iteração.

Exemplo de emulação de loop Python do…while

Suponha que você precise desenvolver um jogo de adivinhação de números com a seguinte lógica:

  • Primeiro, gere um número aleatório dentro de um intervalo, por exemplo, de 0 a 10.
  • Em seguida, solicite repetidamente aos usuários que insiram um número. Se o número inserido for menor ou maior que o número aleatório, dê uma dica aos usuários. Se o número inserido for igual ao número aleatório, o loop será interrompido.

O programa a seguir usa um whileloop para desenvolver o jogo de adivinhação de números:

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)')
Linguagem de código:  Python  ( python )

O seguinte mostra um exemplo de execução:

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)Linguagem de código:  Sessão Shell  ( shell )

Como o whileloop verifica a condição no início de cada iteração, é necessário repetir o código que solicita a entrada do usuário e verificar o número duas vezes, uma antes do loop e outra dentro do loop.

Para evitar esse código duplicado, você pode usar um whileloop para emular do whileo loop da seguinte maneira:

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
Linguagem de código:  Python  ( python )

Como funciona.

  • Primeiro, remova o código antes do whileloop.
  • Segundo, adicione a condição para interromper o loop se o número inserido for igual ao número aleatório usando a breakinstrução.

Resumo

  • Python não oferece suporte à instrução de loop do-while.
  • Use um whileloop e as breakinstruções para emular um do...whileloop em Python

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *