Neste 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!
últimas postagens
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 do etechpt.com — direto 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 loop é count < 0. No entanto, o loop é executado uma vez, mesmo que a condição de loop seja inicialmente False.
- Isso contrasta com um loop while que só é executado se a condição de loop for True em 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("%dn",count); count++; }while(count<5); return 0; }
Na célula de código acima:
- A variável de contagem é inicializada em 1.
- Usamos um loop do-while.
- A variável de contagem é incrementada em 1 durante cada passagem pelo loop e a condição de loop é definida como contagem < 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 4
Se 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("%dn",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 4
Embora 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ê quiser que o loop execute K vezes, deve haver exatamente K execuções onde a condição de loop for 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. 👩🏫
While LoopDo-While LoopCheck for looping condition: Antes da execução do corpo do loopCheck for looping condition: Após a execução do corpo do loopSe 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 é 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 while loop?
– 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 caraQuando 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 True ou False.
- 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: sair do controle.
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): break
Exemplos 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:
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!") break
Duas 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
, 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.