Como emular Do-While Loops em Python

Publicados: 2022-08-31

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!

O que é a construção Do-While Loop?

O que é a construção de loop Do-While

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 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.

Enquanto vs Do-Enquanto: Uma Visão Geral das Diferenças

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 como count < 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.

exemplo do-while-loop
 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("%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.

while-loop-exemplo
 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ê 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 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: exit control.

Infinite While Loop e Break Instrução em Python

faça-enquanto-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:

  1. Quando o usuário adivinhou o número
  2. 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!") 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 <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.