W3docs

Loops While em Python: Um Guia Completo

Domine os loops while em Python: sintaxe, break, continue, cláusula else, loops aninhados, loops infinitos e exemplos práticos com explicações claras.

Um loop while executa um bloco de código repetidamente enquanto uma condição for True. Ao contrário de um loop for, que itera sobre uma sequência conhecida de itens, um loop while é a escolha certa quando você não sabe de antemão quantas iterações serão necessárias — por exemplo, ao ler entrada do usuário, esvaziar uma fila ou repetir uma operação até que ela tenha sucesso.

Este capítulo aborda:

  • Sintaxe básica e como a condição é avaliada
  • break — sair do loop antecipadamente
  • continue — pular para a próxima iteração
  • A cláusula else — código que é executado quando o loop termina normalmente
  • Loops while aninhados
  • O marcador de posição pass
  • Loops infinitos e como evitá-los
  • Quando escolher while vs for

Sintaxe básica

while condition:
    # block executed while condition is True

Python avalia condition antes de cada iteração. Se for True, o bloco indentado é executado. Quando o bloco termina, a condição é verificada novamente. O loop sai assim que a condição avalia como False.

Contando de 1 a 5

python— editable, runs on the server

Saída:

1
2
3
4
5

Aqui i começa em 1. Após cada print, i aumenta em 1. Quando i chega a 6, a condição i <= 5 torna-se False e o loop para.

A variável contadora deve ser atualizada dentro do loop. Esquecer i += 1 (ou uma atualização equivalente) significa que a condição nunca se torna False e você obtém um loop infinito.

Exemplo de contagem regressiva

count = 5
while count > 0:
    print(count)
    count -= 1
print("Liftoff!")

Saída:

5
4
3
2
1
Liftoff!

O código após o bloco while é executado uma vez que o loop tenha terminado — neste caso, print("Liftoff!") não está dentro do loop.

Iterando até uma lista estar vazia

Qualquer objeto que tenha um valor booleano funciona como condição. Uma lista vazia é falsa (falsy), portanto você pode esvaziar uma lista naturalmente:

stack = [1, 2, 3]
while stack:
    print(stack.pop())

Saída:

3
2
1

while stack é uma abreviação de while len(stack) > 0. Quando a lista está vazia, ela é falsa (falsy) e o loop termina.


A instrução break

break sai do loop imediatamente, independentemente da condição.

python— editable, runs on the server

Saída:

0
1
2
3
4

Quando num é igual a 5, break é acionado e o loop termina — 5 a 9 nunca são alcançados.

Quando usar break: pare uma busca assim que encontrar uma correspondência; interrompa um loop quando ocorrer uma condição de erro; saia de um loop de menu quando o usuário escolher "sair".


A instrução continue

continue pula o restante da iteração atual e volta diretamente para a verificação da condição.

i = 0
while i < 8:
    i += 1
    if i % 2 == 0:
        continue
    print(i)

Saída:

1
3
5
7

Quando i é par, continue ignora print(i) e o loop volta para avaliar a condição com o i atualizado.

Importante: incremente o contador antes da verificação do continue, não depois. Se i += 1 fosse colocado após continue, i permaneceria par indefinidamente e o loop rodaria para sempre.


A cláusula else

O loop while do Python suporta um bloco else opcional. Ele é executado somente se o loop terminou normalmente — ou seja, a condição tornou-se False — e é ignorado se o loop foi encerrado via break.

Conclusão normal

i = 1
while i <= 3:
    print(i)
    i += 1
else:
    print("Done!")

Saída:

1
2
3
Done!

Loop interrompido por break

i = 1
while i <= 5:
    if i == 3:
        break
    print(i)
    i += 1
else:
    print("No break")

Saída:

1
2

"No break" nunca é impresso porque break encerrou o loop antes que a condição pudesse se tornar False.

Uso prático: busca linear

A cláusula else é especialmente útil para padrões de busca. O bloco else é executado somente quando o alvo não foi encontrado:

numbers = [4, 7, 2, 9, 1]
target = 9
i = 0
while i < len(numbers):
    if numbers[i] == target:
        print("Found", target, "at index", i)
        break
    i += 1
else:
    print(target, "not found")

Saída:

Found 9 at index 3

Loops while aninhados

Um loop while pode conter outro loop while dentro dele. O loop interno completa todas as suas iterações para cada iteração única do loop externo.

row = 1
while row <= 3:
    col = 1
    while col <= 3:
        print(row * col, end="  ")
        col += 1
    print()
    row += 1

Saída:

1  2  3  
2  4  6  
3  6  9  

Atenção: um break dentro do loop interno sai apenas do loop interno. Para sair de ambos os loops de uma vez, use uma variável de flag ou reestruture o código em uma função e use return.


A instrução pass

pass é um marcador de posição sem operação (no-op). Use-o quando um loop while é sintaticamente necessário, mas o corpo ainda não foi implementado:

i = 0
while i < 3:
    pass  # TODO: add logic later
    i += 1

Sem pass, Python geraria um IndentationError porque um bloco vazio é uma sintaxe inválida.


Loops infinitos

Um loop infinito roda para sempre porque sua condição nunca se torna False. Isso é quase sempre um bug — mas também existem usos intencionais.

Loop infinito acidental

# WARNING: this loop never ends — do not run
i = 1
while i <= 5:
    print(i)
    # forgot to increment i

Sem i += 1, i permanece 1, a condição é sempre True e o loop roda até você parar o programa manualmente (Ctrl+C).

Loop infinito intencional com break

# WARNING: intentional infinite loop — requires Ctrl+C to stop outside an app
while True:
    answer = input("Type 'quit' to exit: ")
    if answer == "quit":
        break
    print("You typed:", answer)

while True é um idioma deliberado que significa "continuar até ser explicitamente interrompido." Você deve sempre ter um break (ou um return) em algum lugar dentro, caso contrário o programa ficará travado.

Consulte o capítulo de Entrada do Usuário em Python para mais padrões envolvendo loops interativos.


Loops while vs loops for

SituaçãoPrefira
Você sabe o número de iterações ou tem uma sequênciafor
Você itera até uma condição mudarwhile
Você precisa ler entrada até o usuário sairwhile True + break
Você quer índice e valor de uma listafor + enumerate()
Você quer esvaziar ou consumir uma estrutura de dadoswhile

Use for quando puder; troque por while quando a condição de término for dinâmica ou desconhecida no início do loop.


Prática

Prática
What does the else clause of a while loop do?
What does the else clause of a while loop do?
Prática
What are the functionalities of 'while' loops in Python as described in the W3Docs tutorial?
What are the functionalities of 'while' loops in Python as described in the W3Docs tutorial?
Prática
Which of the following would cause a while loop to run forever?
Which of the following would cause a while loop to run forever?
Was this page helpful?