Artigo original: https://www.freecodecamp.org/news/python-do-while-loop-example/

Os laços são um recurso útil e frequentemente utilizado em todas as linguagens de programação modernas.

Se quiser automatizar uma tarefa específica repetitiva ou evitar escrever código repetido em seus programas, usar um laço é a sua melhor opção.

Os laços são um conjunto de instruções que são executadas repetidamente até que determinada condição seja atendida. Vamos aprender mais sobre como os laços funcionam em Python.

Laços em Python

Há dois tipos de laços em Python:

  • Laços for
  • Laços while

Aqui, nos concentraremos em como criar um laço while em Python e em como ele funciona.

O que é um laço while em Python?

A sintaxe geral de um laço while em Python tem essa aparência:

while condição:
    execute este código dentro do corpo do laço

Um laço while executará um trecho de código enquanto (while, em inglês) uma condição for verdadeira (True, em inglês). Ela seguirá executando o conjunto de instruções desejado até que aquela condição deixe de ser True.

Um laço while sempre verificará primeiro a condição antes de ser executado.

Se a condição for avaliada como True, o laço, assim como o código de seu corpo, serão executados.

Por exemplo, este laço é executado até que number seja igual ou superior a 10:

number = 0
while number < 10:
    print(f"O número é {number}!")
    number = number + 1

Output:

O número é  0!
O número é  1!
O número é  2!
O número é  3!
O número é  4!
O número é  5!
O número é  6!
O número é  7!
O número é  8!
O número é  9!

Aqui, inicialmente, a variável number está definida como 0.

Antes de o código ser executado, o Python confere a condição (number < 10). Ela é avaliada como True (verdadeira, pois  number é menor que 10), então a instrução print é executada e O número é 0! é impresso no console.

number , então, é incrementado (seu valor aumenta em 1). A condição é reavaliada e é novamente True, então todo o procedimento é repetido até que number seja igual a 9.

Desta vez, O número é 9! é impresso e o valor de number é incrementado. Porém ,number agora é igual a 10. Desse modo, a condição deixa de ser atendida e, assim, o laço é encerrado.

É possível que o laço while nunca seja executado se não atender à condição, como neste exemplo:

number = 50
while number < 10 :
    print(f"O número é {number}!")

Como a condição é sempre falsa (False, em inglês), as instruções no corpo do laço e o laço em si não são executados.

Não crie laços infinitos

Como vimos no exemplo acima, os laços while são tipicamente acompanhados de uma variável cujo valor se altera no decorrer da duração do laço. É ela que, por fim, determinará quando o laço se encerrará.

Caso você não adicione essa linha, criará um laço infinito.

number não será incrementada nem atualizada. Ela sempre estará definida e permanecerá sendo 0. Portanto, a condição number < 10 será True para sempre. Isso significa que o laço continuará sendo executado eternamente.


# don't run this

number = 0
while number < 10:
    print(f"Number is {number}!")

Resultado:

O número é 0!
O número é 0!
O número é 0!
O número é 0!
O número é 0!
O número é 0!
O número é 0!
...

O laço é executado indefinidamente.

É o mesmo que executar este código:


#não faça isso
while True:
    print("Fica True para sempre")

O que você faz quando se encontra em uma situação dessas?

Pressione Ctrl/Cmd + C  para sair do laço e encerrá-lo.

O que é um laço do while?

A sintaxe geral de um laço do while em outras linguagens de programação tem essa aparência:

do {
  instruções do bloco do laço a serem executadas;
  }
while(condição);

Por exemplo, um laço do while em C tem essa aparência:

#include <stdio.h>
 
int main(void)
 {
   int i = 10;
   do {
      printf("valor de i: %i\n", i);
      i++;
      }
  while( i < 20 );
 }

O que há de diferente nos laços do while é o fato de que o código dentro do bloco do laço será executado ao menos uma vez.

O código das instruções é executado uma vez e, somente então, após a execução, a condição é verificada.

Dessa maneira, a condição é verificada após as instruções terem sido executadas pela primeira vez.

Se a condição for verificada como verdadeira, o laço continua.

Há casos em que você quer que seu código seja executado ao menos uma vez. É aí que os laços do while se tornam úteis.

Por exemplo, quando você escreve um programa que recebe entradas dos usuários, você pode pedir que o número seja positivo. O código será executado ao menos uma vez. Se o número que o usuário enviar for negativo, o laço seguirá em execução. Se for positivo, ele será interrompido.

O Python não tem uma funcionalidade integrada que crie explicitamente um laço do while como em outras linguagens. É possível, no entanto, simular um laço do while em Python.

Como simular um laço do while em Python

Para criar um laço do while em Python, você precisa modificar o laço while um pouco para poder obter um comportamento semelhante ao de um laço do while em outros idiomas.

Apenas para relembrar, um laço do while será executado ao menos uma vez. Se a condição for atendida, ele será executado novamente.

O laço while, por outro lado, não é executado ao menos uma vez e pode, de fato, nunca ser executado. Ele é executado somente quando a condição é atendida.

Então, digamos que temos um exemplo onde queremos que a linha de código seja executada ao menos uma vez.

secret_word = "python"
counter = 0

while True:
    word = input("Insira a palavra secreta: ").lower()
    counter = counter + 1
    if word == secret_word:
        break
    if word != secret_word and counter > 7: 
        break

O código será executado ao menos uma vez, pedindo pela entrada do usuário.

É garantido que ele, ao menos, será executado uma vez, em função de a condição ser True, a qual, em outras circunstâncias, criaria um laço infinito.

Se a entrada do usuário for a palavra secreta correta, o laço é interrompido.

Se o usuário inserir a palavra secreta errada mais de 7 vezes, o laço também será interrompido por completo.

A instrução break permite que você controle o fluxo de um laço while e não acabe com um laço infinito.

break encerrará imediatamente o laço atual, saindo dele.

É assim que você cria um efeito semelhante ao de um laço do while em Python.

O laço sempre é executado ao menos uma vez. Ele continuará a ser executado se uma condição não for atendida e se encerrará se ela for.

Conclusão

Você agora conhece como criar um laço do while em Python.

Se estiver interessado em aprender mais sobre Python, assista ao vídeo 12 Python Projects (em inglês) no canal do freeCodeCamp no YouTube. Você criará 12 projetos em um curso voltado a iniciantes.

O freeCodeCamp também tem uma certificação de Python gratuita para ajudar você a obter um bom entendimento e uma visão geral bem-acabada dos fundamentos importantes da linguagem.

Você também poderá criar cinco projetos ao final do curso para praticar o que você aprendeu.

Obrigado pela leitura e feliz aprendizado!