Como emular Do-While Loops em Python
Publicados: 2022-08-31Neste tutorial, você aprenderá como emular um loop do-while em Python .
Em qualquer linguagem de programação, os loops ajudam a executar determinadas ações repetidamente, dependendo de uma condição de loop. Python suporta as construções de loop while e for , mas não suporta nativamente o loop do- while.
No entanto, você pode emular um loop do-while entendendo como ele funciona — usando loops existentes e instruções de controle de loop em Python.
Você aprenderá como fazer isso nos próximos minutos. Vamos começar!
O que é a construção Do-While Loop?

Se você programou em linguagens como C ou C++, provavelmente se deparou com a construção de loop do-while.
Em um loop do-while, o conjunto de instruções no corpo do loop - dentro do bloco delimitado por chaves - é executado primeiro e, em seguida, a condição do loop é verificada.
Você pode executar os seguintes exemplos de C no compilador C online da Geekflare - diretamente do seu navegador.
Considere o seguinte trecho de código:
//do_while_example1 #include <stdio.h> int main() { int count = 1; printf("Do-While loop: \n"); do{ printf("Loop runs..."); }while(count<0); return 0; }Aqui está a saída.
Output Do-While loop: Loop runs...No exemplo acima:
- O valor de
counté 1 e a condição de looping écount < 0. No entanto, o loop é executado uma vez, mesmo que a condição de loop seja inicialmenteFalse. - Isso contrasta com um loop while que só é executado se a condição de loop for
Trueem primeiro lugar.
//while_example1 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<0){ printf("Loop runs..."); } return 0; } Como mencionado, a condição de looping, count < 0 é False , inicialmente a variável count é inicializada com 1. Assim, ao compilar e executar o código acima, vemos que a instrução no corpo do loop while não é executada.
Output While loop: //loop body does not run!Enquanto vs. Fazer-Enquanto: Uma Visão Geral das Diferenças
Vamos dar uma olhada nas diferenças entre loops while e do-while.

Considere este exemplo:
//do_while_example2 #include <stdio.h> int main() { int count = 1; printf("Do-while loop: \n"); do{ printf("%d\n",count); count++; }while(count<5); return 0; }Na célula de código acima:
- A variável de
counté inicializada em 1. - Usamos um loop do-while.
- A variável de
counté incrementada em 1 durante cada passagem pelo loop e a condição de loop é definida comocount < 5.
Aqui está uma explicação visual de como a execução ocorre: como o loop do-while funciona e verifica a condição de loop quatro vezes.

Output Do-while loop: 1 2 3 4Se você usar um loop while, isso é o que teríamos.
//while_example2 #include <stdio.h> int main() { int count = 1; printf("While loop: \n"); while(count<5){ printf("%d\n",count); count++; }; return 0; }A figura abaixo explica a execução do laço while; neste exemplo, o loop while verifica a condição de loop cinco vezes.

Output While loop: 1 2 3 4Embora as saídas para os loops while e do-while sejam idênticas, existem algumas diferenças sutis.
Em um loop while, a condição de verificação vem primeiro, seguida pelo corpo do loop. Portanto, se você deseja que o loop execute K vezes, deve haver exatamente K execuções onde a condição de loop é True . No número de iteração K+1 , a condição se torna False e o controle sai do loop.
Por outro lado, se você usar um loop do-while: a condição do loop é verificada pela K-ésima vez somente após K passar pelo loop.
Então, por que essa melhoria marginal é útil?
Suponha que a condição de loop seja computacionalmente cara: por exemplo, envolve uma chamada para uma função recursiva, uma operação matemática complexa e assim por diante.
Nesses casos, para K repetições do corpo do loop, seria benéfico usar um loop do-while.
Resumo Enquanto vs. Fazer-Enquanto

Vamos tabular as principais diferenças que aprendemos.
| Enquanto Loop | Loop Do-While |
| Verifique a condição de loop: Antes da execução do corpo do loop | Verifique a condição de loop: Após a execução do corpo do loop |
Se a condição for False inicialmente, o corpo do loop não será executado. | Se a condição for False inicialmente, o corpo do loop será executado exatamente uma vez . |
| A condição de loop é verificada K vezes para K passa pelo loop. | A condição de loop é verificada K-1 vezes para K passa pelo loop. |
| Quando usar o loop while? – O loop deve ser executado enquanto a condição for True – Para loops controlados por entrada – Quando a condição de loop não é computacionalmente cara | Quando usar um loop do-while? – O loop deve ser executado pelo menos uma vez para uma condição de loop falso inicialmente – Para loops controlados por saída – Quando a condição de loop é computacionalmente cara |
Emulando o comportamento do loop Do-While em Python
Da seção anterior, temos as duas condições a seguir para emular o loop do-while:

- As instruções no corpo do loop devem ser executadas pelo menos uma vez — independentemente de a condição do loop ser
TrueouFalse. - A condição deve ser verificada após a execução de instruções no corpo do loop. Se a condição for
False, o controle deve sair do loop: exit control.
Infinite While Loop e Break Instrução em Python

Você pode definir um loop while infinito em Python, conforme mostrado abaixo.
while True: pass # Instead of True, you can have any condition that is always True while always-True-condition: pass A instrução break pode ser usada para sair de um corpo de loop e transferir o controle para a primeira instrução fora do corpo do loop.
while <condition>: if <some-condition>: break No primeiro exemplo de loop do-while em C, a condição para continuar o loop é count < 0 . Portanto, a condição para sair do loop é um valor de contagem igual a zero ou maior que zero, ( count >= 0 ).
Aqui está a emulação do loop do-while em Python:
count = 1 while True: print("Loop runs...") if(count >= 0): breakExemplos de loop Do-While do Python

Revisitaremos os exemplos da seção anterior e os reescreveremos em Python emulando o loop do while.
#1 . Vamos revisitar o exemplo: imprimir valores da variável count quando count for menor que cinco.
Sabemos como definir um loop infinito para que o corpo do loop seja executado pelo menos uma vez.
O loop deve continuar enquanto a contagem for menor que cinco. Portanto, quando a contagem chegar a cinco, devemos sair do loop. Então count == 5 é a condição de controle de saída.
Juntando, temos:
count = 1 while True: print(f"Count is {count}") count += 1 if count==5: break Output Count is 1 Count is 2 Count is 3 Count is 4#2 . Também podemos reescrever o jogo de adivinhação de números como uma construção do-while do Python.
No jogo de adivinhação de números, validamos os palpites de um usuário em relação a um número secreto predefinido. O usuário deve adivinhar o número secreto dentro de um certo número de tentativas máximas permitidas, digamos, max_guesses .
O código deve solicitar a entrada do usuário, independentemente de seu palpite estar certo ou errado. Podemos fazer isso usando um loop while infinito.
Então, quando devemos sair do loop?
O controle deve sair do loop quando qualquer um dos seguintes ocorrer:
- Quando o usuário adivinhou o número
- Quando o usuário ainda não adivinhou o número, mas esgotou o número de palpites disponíveis. O número de suposições incorretas do usuário =
max_guesses.
A célula de código abaixo mostra como podemos fazer isso.
import random low, high = 5,50 secret_number = random.choice(range(low,high)) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 conditions = [num_guesses==max_guesses,guess==secret_number] if any(conditions): break Em vez de sair do loop, podemos adicionar instruções print() explicativas quando encontrarmos cada uma das condições acima e depois sair do loop.
import random low, high = 5,50 secret_number = random.choice(range(low,high)) print(secret_number) max_guesses = 10 num_guesses = 0 while True: guess = int(input("\nGuess a number:")) num_guesses += 1 if guess==secret_number: print("Congrats, you guessed it right!") break if num_guesses==max_guesses: print("Sorry, you have no more guesses left!") breakDuas saídas de amostra são mostradas abaixo.
Nesta saída de exemplo, a instrução break sai do loop quando o usuário adivinha o número secreto corretamente.
# Sample output when secret_number = 43 and user gets it right! Guess a number:4 Guess a number:3 Guess a number:43 Congrats, you guessed it right!Aqui está outra saída de exemplo quando o usuário atinge o número máximo de palpites disponíveis, mas não consegue adivinhar o número secreto corretamente.
# Sample output when secret_number = 33 and user fails to guess it right! Guess a number:3 Guess a number:15 Guess a number:21 Guess a number:50 Guess a number:17 Guess a number:6 Guess a number:18 Guess a number:5 Guess a number:12 Guess a number:43 Sorry, you have no more guesses left!Conclusão
Espero que este tutorial tenha ajudado você a entender como emular um loop do-while em Python.
Aqui estão as principais conclusões:
- Use um loop infinito para garantir que o corpo do loop seja executado pelo menos uma vez. Pode ser um loop infinito trivial como while True, ou pode ser while <condition> , de modo que a condição seja sempre True.
- Verifique a condição de saída dentro do loop e use a instrução break para sair do loop sob uma condição específica.
Em seguida, aprenda a usar loops for e a função enumerate() em Python.
