Resumo : neste tutorial, você aprenderá como emular a do...while
instruçã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...while
instrução loop.
Ao contrário do while
loop, a do...while
instrução loop executa pelo menos uma iteração. Ele verifica condition
no final de cada iteração e executa um bloco de código até que condition
seja False
.
O seguinte mostra o pseudocódigo do do...while
loop em Python:
do
# code block
while condition
Linguagem de código: PHP ( php )
Infelizmente, Python não oferece suporte ao do...while
loop. No entanto, você pode usar o while
loop e uma break
instrução para emular a do...while
instrução do loop.
Primeiro, especifique o condition
as True
no while
loop assim:
while True:
# code block
Linguagem 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 while
loop:
while True:
# code block
# break out of the loop
if condition
break
Linguagem 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 while
loop 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 while
loop 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 while
loop para emular do while
o 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
while
loop. - Segundo, adicione a condição para interromper o loop se o número inserido for igual ao número aleatório usando a
break
instrução.
Resumo
- Python não oferece suporte à instrução de loop do-while.
- Use um
while
loop e asbreak
instruções para emular umdo...while
loop em Python