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!