Loop em Python: como usar for e while, com exemplos para iniciantes
Loop é uma repetição: faz o computador executar o mesmo bloco várias vezes. Em Python há dois. O for serve quando você sabe quantas vezes repetir ou o que percorrer, como range(5) ou uma lista. O while repete enquanto uma condição for verdadeira. O break sai do loop e o continue pula para a próxima volta.
A ideia: não repetir o que o computador pode repetir
Imagine ter de escrever os números de 1 a 100 na tela. Escrever cem linhas de print seria um absurdo. O loop resolve isso: você escreve a ação uma vez e diz quantas vezes repetir. Repetição é um dos três blocos de qualquer programa, ao lado de sequência e decisão.
for com range: repetir um número de vezes
O range cria uma sequência de números, e o for passa por cada um:
for n in range(1, 6):
print(n)
1
2
3
4
5
Atenção a um detalhe: range(1, 6) começa no 1 e termina antes do 6. Por isso o último número mostrado é 5. A variável n assume um valor novo a cada volta.
Somando com um loop
Uma tarefa clássica: somar os números de 1 a 100. Criamos um total começando em zero e somamos cada número nele:
total = 0
for n in range(1, 101):
total = total + n
print(total)
5050
Note que o print final fica sem recuo, fora do loop, para mostrar só o resultado final e não a cada volta.
for com uma lista
O for também percorre os itens de uma lista, um de cada vez:
frutas = ["maçã", "pera", "uva"]
for fruta in frutas:
print(fruta)
maçã
pera
uva
while: repetir enquanto algo for verdade
O while testa uma condição antes de cada volta e continua enquanto ela for verdadeira. Esta é uma contagem regressiva:
contador = 3
while contador > 0:
print(contador)
contador = contador - 1
print("Fim!")
3
2
1
Fim!
A linha contador = contador - 1 é essencial: ela muda a variável a cada volta, e eventualmente a condição deixa de ser verdadeira e o loop termina.
O perigo do loop infinito
Se você esquecer de atualizar o contador, a condição nunca fica falsa e o programa repete para sempre, travando a página ou o terminal. Isso se chama loop infinito. Para interromper no terminal, aperte Ctrl + C. Em um editor online, use o botão de parar do editor, se houver, ou recarregue a página. Antes de rodar um while, pergunte-se: "o que faz essa condição um dia ficar falsa?".
break e continue: controlando o loop
break sai do loop na hora:
for n in range(1, 10):
if n == 4:
break
print(n)
1
2
3
continue pula o resto da volta atual e vai para a próxima. Aqui ele ignora os números pares:
for n in range(1, 6):
if n % 2 == 0:
continue
print(n)
1
3
5
for ou while: como escolher
- Use for quando você sabe o que percorrer: um intervalo de números, uma lista, as letras de um texto.
- Use while quando não sabe quantas voltas serão: "repita até o usuário acertar", "continue enquanto houver saldo".
Na dúvida, comece com for. É mais difícil cair em loop infinito.
Erros comuns com loops
- Errar o fim do range. Para ir até 10, escreva
range(1, 11). - Esquecer o dois-pontos ou o recuo, o que gera erro de sintaxe. Veja como ler isso em como ler uma mensagem de erro em Python.
- Esquecer de atualizar a variável do while, criando um loop infinito.
- Colocar o
printdo resultado dentro do loop quando só queria o final.
Some os números de 1 a 100
Rode o código e confira se o resultado é 5050. Depois altere para somar de 1 a 10 e preveja o resultado antes de rodar. Por fim, escreva uma contagem regressiva de 5 até 1 usando while.
total = 0
for n in range(1, 101):
total = total + n
print(total)
Resultado esperado:
5050
O total começa em zero e cada volta soma o n atual. Quando o loop termina, o print fora dele mostra o valor final.
Perguntas frequentes
Quando usar for e quando usar while?
Use for quando sabe o que percorrer ou quantas vezes repetir. Use while quando a repetição depende de uma condição que pode mudar a qualquer momento.
O que faz range(1, 6)?
Gera os números de 1 a 5. O primeiro valor entra, e o último não. Para incluir o 6, escreva range(1, 7).
Como parar um loop infinito?
No terminal, aperte Ctrl + C. Em um editor online, use o botão de parar do editor, se houver, ou recarregue a página.
É possível ter um loop dentro de outro?
É, e se chama loop aninhado. Ele é usado, por exemplo, para percorrer tabelas, com um loop para as linhas e outro para as colunas.
Fontes e para saber mais
Próximo passo da trilhaO que é função em Python? Como criar e usar, com exemplos