Instrução de loop do…while do Python

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

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

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

Ao contrário do loop while, a instrução de loop do...while executa pelo menos uma iteração. Ela verifica a condition no final de cada iteração e executa um bloco de código até que a condition seja False.

O seguinte mostra o pseudocódigo para o loop do...while em Python:

do
    # code block
while condition

Infelizmente, o Python não suporta o loop do...while. No entanto, você pode usar o loop while e uma instrução break para emular a instrução de loop do...while.

Primeiro, especifique a condition como True no loop while assim:

while True:
    # code block

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

Em segundo lugar, coloque uma condição para sair do loop while:

while True:
    # code block

    # break out of the loop
    if condition
        break

Nessa 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 do…while no Python

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, 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 loop while 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)')

O seguinte mostra uma execução de amostra:

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)

Como o loop while 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 loop while para emular o loop do while 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

Como funciona.

  • Primeiro, remova o código antes do loop while.
  • Em segundo lugar, adicione a condição para interromper o loop se o número inserido for igual ao número aleatório usando a instrução break.

Resumo

  • O Python não oferece suporte à instrução de loop do-while.
  • Use um loop while e a instrução break para emular um loop do...while em Python

Deixe um comentário

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