Como emular Do-While Loops em Python

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?

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.

  7 extensões Muzei Live Wallpaper menos conhecidas, mas notáveis

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

  Como ver todos os aplicativos que você comprou na Mac App Store

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.

  NÃO exclua o aplicativo Apple Pay do seu iPhone

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