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çãobreak
para emular um loopdo...while
em Python