Tamanho de fonte
Alto contraste
Altura de linha

While em Python: o que é e como funciona

Avatar de Adriano Soares Adriano Soares
12 minutos de leitura 6 meses atrás

Você já se perguntou como fazer um programa de computador executar uma tarefa repetidamente sem parar? A resposta para essa questão é simples e encontra-se no uso estratégico da estrutura de “while Python”, uma poderosa ferramenta que permite a execução de blocos de código múltiplas vezes sem que haja necessidade de reescrever o mesmo código.

Neste artigo, vamos explorar as estruturas de repetição em Python, com foco no loop while, uma estrutura versátil e essencial para qualquer programador iniciante. Vamos nessa?

O que são estruturas de repetição?

Uma estrutura de repetição, também conhecida como laço ou loop, é uma construção fundamental na programação que permite executar um bloco de código repetidamente enquanto uma determinada condição é verdadeira. Dessa forma, utilizamos essas estruturas para realizar tarefas repetitivas sem a necessidade de escrever o mesmo código várias vezes.

As principais estruturas de repetição encontradas na programação são incluem o laço for, o laço while, o do-while e, em algumas linguagens, o foreach. No Python, as duas estruturas de repetição disponíveis são o for e o while, que estudaremos em detalhe neste post.

Qual é a diferença entre loop e laço?

É comum lidarmos com os termos loop e laço quando estamos tratando de estruturas de repetição. Embora soem diferentes, essas duas palavras – loop e laço – servem para descrever a mesma ideia de repetição de tarefas na programação.

Quais são as principais estruturas de repetição em Python?

No Python, as principais estruturas de repetição são o loop for e o loop while. O for itera sobre elementos de uma lista, um dicionário ou qualquer sequência, já o while executa um bloco de código enquanto uma condição for verdadeira.

Vamos tomar como exemplo o uso do loop for com uma lista:

frutas = ['maçã', 'banana', 'cereja']
for fruta in frutas:
    print(f'Eu gosto de {fruta}')
Testar

E o loop while, o qual depende de uma condição:

contador = 0
while contador < 3:
    print(f'Contador é {contador}')
    contador += 1
Testar

O que é a estrutura de loop while no Python?

Mas o que significa exatamente “while em Python”?

O loop while em Python é uma estrutura de controle de fluxo que permite executar repetidamente um bloco de código enquanto uma condição especificada é verdadeira. Você pode pensar no while como uma maneira de dizer ao seu programa: “Enquanto esta condição for verdadeira, continue fazendo as ações dentro deste bloco de código”.

Assim, a condição é avaliada antes de cada iteração e, se for verdadeira, o código dentro do bloco while é executado. Após cada execução, a condição é reavaliada. Portanto, se a condição se tornar falsa, o loop termina e o programa continua com as instruções seguintes após o bloco while.

Como é a sintaxe de um loop while?

Para entender o funcionamento do loop while em Python, é essencial familiarizar-se com os três elementos-chave que compõem sua sintaxe: a palavra-chave while, a condição e o bloco_de_codigo.

A palavra-chave while sinaliza o início do loop e, imediatamente após ela, encontramos a condição que determina a execução do loop. Se essa condição for verdadeira, o bloco_de_codigo que segue, delimitado por uma indentação, é executado. O loop continuará a repetir esse bloco de código até que a condição avaliada ao lado da palavra-chave while se torne falsa, momento em que se encerra o loop e o programa prossegue para as instruções subsequentes.

while condição:
    bloco_de_codigo

Para evitar que um loop while em Python se torne uma repetição infinita, é crucial que algo dentro do bloco de código altere a condição que está sendo testada ou que se utilize a palavra-chave break para sair do loop. Verifica-se a condição antes de cada iteração e, se permanecer verdadeira indefinidamente, o loop nunca terminará, o que pode travar o programa.

Como criar um loop while em Python?

Criar um loop while é simples. Vamos usar um contador como exemplo:

x = 0

while x < 10:
    print(f'O valor de x é: {x}')
    print('O valor de x é menor que 10, vamos adicionar mais 1')
    x += 1
Testar

Aqui, o loop while executa enquanto x < 10. Cada vez que o loop ocorre, x é incrementado até chegar a 10 e o else ser executado, encerrando o loop.

Condições de um loop while

Utilizando condições booleanas no loop while

Você sabia que o coração de um loop while é uma condição booleana? Isso mesmo, o while Python depende de uma expressão que resulte em True ou False para decidir se continua ou interrompe a execução do loop. Vamos a um exemplo simples:

x = 0
while x < 10: # x < 10 sempre retornará um boleano True ou False
    print(f'O valor de x é: {x}')
    x += 1
Testar

Neste código, a condição x < 10 é avaliada antes de cada iteração. Enquanto for verdadeira, ou seja, enquanto x for menor que 10, executa-se o bloco de código indentado. A cada passagem pelo loop, x é incrementado em 1 (x += 1), até que eventualmente a condição se torne falsa e o loop se encerre.

Utilizando operadores de comparação no loop while

Mas e se quisermos mais controle sobre a condição? Aqui entram os operadores de comparação. Eles são usados para comparar valores e incluem operadores como < (menor que), > (maior que), == (igual a), != (diferente de), <= (menor ou igual a) e >= (maior ou igual a). Veja como podemos usá-los no while:

idade = 0
while idade <= 18:
    print(f'Você tem {idade} anos.')
    idade += 1
Testar

No exemplo acima, o loop while continuará a executar enquanto a idade for menor ou igual a 18. A cada iteração, a idade é incrementada e a condição é reavaliada.

Entendendo while em Python com exemplos

Vamos agora explorar o loop while com exemplos práticos e dicas para evitar erros comuns.

Como criar um loop infinito?

Você já se perguntou como criar um loop que nunca termina em Python? A resposta é mais simples do que parece: basta usar um loop while com uma condição que sempre seja verdadeira. Por exemplo:

while True:
    print("Este loop nunca terminará!")

Neste caso, True é uma condição que sempre será verdadeira, e o loop continuará a executar indefinidamente. É importante ter cuidado com loops infinitos, pois eles podem causar o travamento do seu programa. Para interromper um loop infinito manualmente, você pode usar a combinação de teclas Ctrl + C no terminal.

Como parar um loop while com break?

Mas e se quisermos interromper um loop while baseado em uma condição específica? Podemos usar a palavra-chave break, como no exemplo:

contador = 0
while True:
    print(f'O valor de contador é: {contador}')
    if contador == 5:
        print("Break atingido!")
        break
    contador += 1
Testar

Neste código, interrompe-se o loop while quando o contador atinge o valor 5. A palavra-chave break é responsável por sair do loop imediatamente, independentemente da condição do while.

Como avançar no loop com continue?

Às vezes, queremos pular para a próxima iteração do loop sem executar o restante do código no bloco. Para isso, usamos continue. Por exemplo:

contador = 0
while contador < 10:
    contador += 1
    if contador % 2 == 0:
        continue
    print(f"Contador ímpar: {contador}")
Testar

Aqui, o continue é acionado sempre que contador é um número par, fazendo com que o print seja pulado e o loop avance para a próxima iteração.

Como funciona a estrutura while else?

Você sabia que o loop while pode ter um else associado? Quando a condição do while torna-se falsa, executa-se o bloco else. Confira o exemplo:

contador = 0
while contador < 5:
    contador += 1
else:
    print("Loop concluído com sucesso!")
    print(f"Valor do contador é {contador}")
Testar

Neste caso, a mensagem “Loop concluído com sucesso!” é impressa assim que o contador atinge o valor 5 e a condição do while deixa de ser verdadeira.

Criando um while dentro de um while

Podemos ter um loop while dentro de outro. Isso se chama loop aninhado:

externo = 0
while externo < 3:
    interno = 0
    while interno < 3:
        print(f"ext: {externo}, int: {interno}")
        interno += 1
    externo += 1
Testar

Neste exemplo, temos um loop while externo e outro interno. O loop interno será executado completamente para cada iteração do loop externo, criando uma combinação de iterações.

Com exemplos e prática, rapidamente você perceberá o quanto a estrutura while é essencial e verá como ela pode ser utilizada em seus próprios projetos.

Exemplos de aplicações reais de um loop while

Validação de entrada do usuário

Você já se deparou com a necessidade de garantir que o usuário insira dados corretos em um programa? O loop while é perfeito para isso.

Imagine um cenário no qual precisamos que o usuário digite uma senha que atenda a certos critérios de segurança. Podemos usar um loop while para continuar pedindo a senha até que ela seja forte o suficiente.

senha = ''
while len(senha) < 8 or not any(char.isdigit() for char in senha):
    senha = input('Senha forte: ')
print('Senha cadastrada com sucesso!')

Neste exemplo, o loop while continua solicitando a senha até que ela tenha pelo menos 8 caracteres e contenha um número. Ou seja, isso garante que o usuário não prossiga até que se forneça uma senha válida.

Controle de acesso

E se quisermos controlar o acesso a um sistema? Então, podemos utilizar o loop while para verificar credenciais de login no seu script Python.

Vamos supor que temos um sistema que requer um nome de usuário e uma senha. O loop while pode ser usado para repetir a solicitação de login até que as credenciais corretas sejam fornecidas.

usuario_correto = 'asimov'
senha_correta = 'robotica123'

usuario = ''
senha = ''

while usuario != usuario_correto or senha != senha_correta:
    usuario = input('Usuário: ')
    senha = input('Senha: ')
    if usuario != usuario_correto or senha != senha_correta:
        print('Tente novamente.')
print('Acesso concedido.')

Neste código, o loop while é usado para verificar se o nome de usuário e a senha correspondem aos valores corretos. Porém, se não corresponder, é solicitado ao usuário que tente novamente.

Atualização de dados em tempo real

Imagine que você está construindo um dashboard que exibe informações atualizadas em tempo real, como cotações da bolsa de valores. Nesse caso, um loop while pode ser utilizado para atualizar os dados periodicamente.

import time

def obter_cotacoes():
    return {'PETR4': 28.44, 'VALE3': 67.80}

while True:
    print(obter_cotacoes())
    time.sleep(60)

No exemplo, o loop while é infinito e atualiza as cotações a cada minuto. Além disso, a função time.sleep(60) é usada para pausar o loop por 60 segundos antes de obter as novas cotações. Em todos esses casos, é crucial ter uma condição de parada bem definida para evitar loops infinitos que podem travar o programa.

Outras dúvidas comuns sobre while em Python

While ou for, qual devo utilizar?

Você já se perguntou quando deve usar while e quando é melhor optar pelo for? A resposta é mais simples do que parece.

O loop while é ideal quando você precisa repetir um bloco de código enquanto uma condição específica for verdadeira e você não sabe exatamente quantas vezes o loop precisa rodar. Em contrapartida, o for é mais adequado quando você tem uma sequência de elementos para iterar, como uma lista ou um intervalo definido com range. Em outras palavras, use while para loops com uma condição de parada não determinada e for para sequências predefinidas.

While é mais rápido que o for?

Será que o while é mais rápido que o for em Python? Na verdade, a diferença de velocidade entre os dois é geralmente insignificante, pois o que realmente importa é como você estrutura seu código. Ou seja, ambos podem ser eficientes se usados corretamente.

A escolha entre while e for deve ser baseada na clareza e na lógica do seu código, não na velocidade. Portanto, foque em escrever um código legível e que faça sentido para a situação que você está tratando.

Como criar uma estrutura do-while em Python?

O Python não possui uma estrutura de loop do-while nativa como algumas outras linguagens de programação, como C. Em linguagens que têm um do-while, o bloco de código é executado pelo menos uma vez antes de a condição ser verificada, o que garante que o código dentro do loop seja executado pelo menos uma vez, mesmo que a condição seja falsa desde o início.

No entanto, podemos simular um comportamento semelhante ao do-while em Python usando um loop while com uma condição que inicialmente é verdadeira ou com um loop infinito que é controlado por uma instrução break. Aqui está um exemplo de como você pode simular um do-while em Python:

contador = 0

while True:
    print(f'O valor de contador é: {contador}')
    contador += 1
    if contador >= 5: # Verifica a condição após a execução do bloco de código
        break
Testar

Neste exemplo, o loop while começa com a condição True, o que significa que ele entrará no loop pelo menos uma vez. Após executar o bloco de código, a condição real é verificada (contador >= 5) e, se essa condição for falsa, a palavra-chave break é executada para sair do loop. Se a condição for verdadeira, o loop continuará a executar. É importante se assegurar de que haja uma condição de saída, para evitar que o loop torne-se infinito e seu programa travar.

Conclusão

A prática constante e a experimentação te farão dominar o loop while e aumentarão sua confiança como programador Python. Experimente, questione e não tenha medo de errar.

Se você quiser aprender mais sobre Python, recomendamos assistir ao Python MasterClass, o curso gratuito de Python da Asimov Academy, que te leva do zero ao seu primeiro web app em menos de duas horas!

Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov