Pular para o conteúdo
</>RoByte

Buscar cursos e aulas

Aulas do curso

Vídeo em breve

Por enquanto, esta aula está disponível só em texto — o vídeo entra assim que ficar pronto.

Estruturas de controle

Laços de repetição: for e while

Repetindo tarefas com for e while, range() completo, break, continue, laços aninhados e como evitar o clássico loop infinito. · 19 min

Código no GitHubAbrir no Colab

Materiais complementares

Esta é a última aula do curso: laços de repetição, para quando você precisa executar o mesmo bloco de código várias vezes sem copiar e colar.

for: repetir um número conhecido de vezes

for i in range(5):
    print(f"Repetição número {i}")

range(5) gera os números de 0 a 4. É o jeito mais comum de repetir “N vezes” em Python.

range() com início, fim e passo

range() aceita até três argumentos: range(inicio, fim, passo).

for i in range(2, 6):        # de 2 até 5 (fim não entra, igual no fatiamento de listas)
    print(i)                   # 2, 3, 4, 5

for i in range(0, 10, 2):     # de 0 até 9, pulando de 2 em 2
    print(i)                   # 0, 2, 4, 6, 8

for i in range(10, 0, -1):    # contagem regressiva
    print(i)                   # 10, 9, 8, ..., 1

for percorrendo uma lista

frutas = ["maçã", "banana", "laranja"]

for fruta in frutas:
    print(f"Gosto de {fruta}")

while: repetir enquanto uma condição for verdadeira

tentativas = 0
senha_correta = "python123"
senha = ""

while senha != senha_correta and tentativas < 3:
    senha = input("Digite a senha: ")
    tentativas += 1

if senha == senha_correta:
    print("Acesso liberado!")
else:
    print("Muitas tentativas erradas.")

Atenção

Todo while precisa de algo que eventualmente torne a condição falsa (aqui, tentativas < 3). Esquecer isso é a causa número um de loop infinito — se o programa “travar”, é o primeiro lugar para checar.

Dica

Regra prática: use for quando você sabe quantas vezes (ou sobre o que) vai repetir. Use while quando a repetição depende de uma condição que só se resolve durante a execução.

Interrompendo ou pulando uma repetição: break e continue

Às vezes você quer sair do laço antes da hora, ou pular só a volta atual. São dois comandos diferentes para dois casos diferentes:

# break: para o laço completamente
for numero in range(1, 100):
    if numero == 5:
        break         # sai do for assim que numero chega a 5
    print(numero)       # imprime 1, 2, 3, 4 e para
# continue: pula só esta volta, o laço continua
for numero in range(1, 6):
    if numero == 3:
        continue       # pula o print quando numero é 3, mas o for continua
    print(numero)        # imprime 1, 2, 4, 5 (o 3 é pulado)

Dica

break é comum em buscas: percorrer uma lista procurando um item e parar assim que ele for encontrado, em vez de continuar checando o resto da lista à toa.

break e continue funcionam igual dentro de um while — a diferença é só qual tipo de laço eles interrompem/pulam.

Laços dentro de laços (laços aninhados)

Assim como o if, um for pode conter outro for dentro dele. É comum para percorrer uma “tabela” (linhas e colunas):

for linha in range(3):
    for coluna in range(3):
        print(f"({linha}, {coluna})", end=" ")
    print()  # pula para a próxima linha depois de terminar as colunas

Atenção

Cuidado com o custo de laços aninhados: o for de dentro roda inteiro para cada volta do for de fora. Duas repetições de 100 aninhadas fazem 10.000 voltas no total, não 200 — vale pensar nisso antes de aninhar laços grandes.

Exercícios

Exercício

1. Aquecimento. Escreva um programa que soma todos os números de 1 a 100 usando um for, e imprime o resultado (a resposta certa é 5050 — use para conferir).

Exercício

2. Combinando com if. Percorra os números de 1 a 30 com um for e, para cada um, imprima “Fizz” se for múltiplo de 3, “Buzz” se for múltiplo de 5, “FizzBuzz” se for múltiplo dos dois, ou o próprio número caso contrário. (Esse exercício clássico usa tudo que você viu no curso até aqui: variáveis, operadores, condicionais e laços.)

Exercício

3. Com break. Percorra os números de 2 a 50 com um for procurando o primeiro número divisível por 7 e por 3 ao mesmo tempo. Assim que encontrar, imprima o número e use break para parar — sem continuar checando o resto à toa.

Exercício

4. Desafio. Use um while para simular um caixa eletrônico simples: peça um valor a sacar, e enquanto o valor for maior que zero, “entregue” a maior nota possível (100, 50, 20, 10, 5 ou 2) e subtraia do total restante, imprimindo cada nota entregue. Pare quando o valor restante chegar a zero.

Com isso, você já tem o essencial para escrever programas que decidem e repetem — a base de praticamente tudo que vem depois, incluindo as próximas trilhas do site: robótica e IA usam exatamente essas mesmas estruturas, só que aplicadas a sensores, motores e modelos.