Programação · Ensino médio · aula 5 de 7 · ~2 min de leitura
Laços em Python: while e for
Como repetir instruções sem copiar e colar, e como evitar o laço que nunca termina.
Esta aula ainda aguarda revisão da comunidade. Achou um erro? Sugira uma correção.
Repetir com while
while quer dizer "enquanto". O bloco é repetido enquanto a condição for verdadeira:
contador = 1
while contador <= 5:
print(contador)
contador = contador + 1
print("Acabou!")
A cada volta, o Python testa a condição. A linha contador = contador + 1 é essencial: sem ela, o contador ficaria em 1 para sempre e o laço nunca terminaria. Isso se chama laço infinito. Na ferramenta do site, um programa assim é interrompido depois de 15 segundos.
Um jeito mais curto de escrever a mesma soma é contador += 1.
Repetir com for
Quando você sabe quantas vezes quer repetir, o for é mais simples. Ele percorre uma sequência, e a função range cria sequências de números:
for numero in range(5):
print(numero)
Saem os números 0, 1, 2, 3 e 4: range(5) começa no zero e para antes do 5. Para escolher o começo, passe dois valores; para escolher o passo, três:
for numero in range(1, 6):
print(numero)
for par in range(0, 11, 2):
print(par)
Quantas vezes o bloco de "for i in range(2, 8):" é executado?
Acumuladores
Um padrão que aparece o tempo todo: uma variável que vai somando a cada volta.
total = 0
for numero in range(1, 101):
total = total + numero
print(total)
O programa soma os números de 1 a 100 e mostra 5050.
A tabuada
n = int(input("Tabuada de qual número? "))
for i in range(1, 11):
print(f"{n} x {i} = {n * i}")
break e continue
breaksai do laço na hora;continuepula o resto da volta atual e vai para a próxima.
for numero in range(1, 11):
if numero == 4:
continue
if numero == 8:
break
print(numero)
Saem 1, 2, 3, 5, 6 e 7: o 4 foi pulado e, no 8, o laço acabou.
Qual usar?
- for: quando a quantidade de repetições é conhecida ("dez vezes", "para cada item da lista").
- while: quando depende de algo que acontece no caminho ("até a pessoa acertar", "enquanto houver saldo").
Para praticar
- Mostre os números de 10 a 1, em contagem regressiva (dica: o passo de
rangepode ser negativo). - Some todos os números pares de 1 a 50.
- Calcule o fatorial de um número digitado (5! = 5 × 4 × 3 × 2 × 1).
Teste o que você aprendeu
1. Quais números range(5) produz?
2. O que causa um laço infinito com while?
3. O que o comando break faz?
Fontes desta aula
- Python Software Foundation. O tutorial de Python: mais ferramentas de controle de fluxo.
- Allen B. Downey. Pense em Python (2ª edição) (2016).