Submódulo 2: Estruturas de repetição: loops for e while

Site: Lumina
Curso: Python para Iniciantes: Lógica e Programação
Livro: Submódulo 2: Estruturas de repetição: loops for e while
Impresso por: Usuário visitante
Data: quarta-feira, 17 set. 2025, 21:06

Descrição

Este submódulo aprofunda o uso de estruturas de repetição (for e while) em Python, mostrando como percorrer coleções, controlar o fluxo com break/continue e utilizar else em loops. Ao final, você terá base para resolver tarefas repetitivas com código limpo e seguro, além de preparar um portfólio com exemplos práticos.

Introdução aos Loops: for e while

🎯 Introdução aos Loops: o que são e por que usamos

Vamos entender o que é um loop: uma estrutura que repete um bloco de código várias vezes, até que uma condição seja satisfeita. Em Python, loops são úteis para processar listas, strings e dados que chegam de fontes externas sem precisar repetir código manualmente. A ideia central é transformar situações do mundo real em passos lógicos repetíveis, reduzindo repetição de código e aumentando a confiabilidade do software.

Python (programming language)
The designer of Python, Guido van Rossum, at PyCon US 2024

Do ponto de vista prático, há dois grandes tipos de loops em Python: for e while. O for é usado quando sabemos quais itens vamos percorrer (ou quando geramos uma sequência de itens). O while executa enquanto uma condição permanece verdadeira, o que é ideal quando não sabemos de antemão quantas iterações ocorrerão. A escolha entre eles depende do problema: use for para percorrer coleções, use while quando a quantidade de iterações depende de condições durante a execução. (1)(2)

Para começar, vamos revisitar a função range, que costuma acompanhar for para gerar séries numéricas. rangeNão produz números de 0 até n-1, e range(a, b) gera de a até b-1. A combinação range-for é uma das formas mais expressivas de se trabalhar com loops em Python. (3)(4)

A seguir, exemplos simples para consolidar o entendimento. Primeiro, percorrer uma lista de nomes e imprimir cada item; depois, somar os números de 1 a 5 usando range. Esses trechos ilustram como o fluxo do programa fica claro quando o loop está bem definido.

nomes = ['Ana', 'Bruno', 'Carla']
for nome in nomes:
    print(nome)
# Contagem de 1 a 5
total = 0
for i in range(1, 6):
    total += i
print('Soma de 1 a 5:', total)
Desafio: Escreva um loop for que some os números de 1 a 100 e imprima o total. Pense na inicialização da variável de soma antes do laço, na iteração com range e na impressão do resultado fora do laço.
Curiosidade: Em Python, o loop for pode percorrer qualquer iterável, incluindo listas, strings e dicionários (em dicionários, por padrão iteramos as chaves). Isso abre a porta para aplicações diversas, como contagem de caracteres em uma string ou verificação de chaves em um mapa. (2)

Loops com coleções: percorrendo listas e strings

🔄 Loops com coleções: listas, strings e controle de fluxo

Agora que já entendemos o básico, vamos aplicar o for a coleções comuns. Uma lista de nomes, uma string ou até um conjunto de chaves em um dicionário podem ser percorridos com for. O que muda é o que cada item representa e quais condições você impõe durante a iteração.

For loop
Flow diagram of the following for loop code: for (int i = 0; i < 5; i++) { printf("*"); } The loop will cause five asterisks to be printed.

Quando você precisa interromper a execução antes do fim da sequência, usa-se break. Se quiser pular itens que não atendem a uma condição, continue é a ferramenta adequada. Além disso, é possível usar else após o loop para detectar se o laço foi concluído sem interrupção pelo break.

Exemplos simples ajudam a consolidar: percorrer uma lista de nomes e imprimir apenas os que contêm a letra 'a'; percorrer uma string e imprimir cada caractere; detectar a primeira ocorrência de um item que satisfaça uma condição e parar o loop com break. Também veremos como o for pode iterar sobre dicionários, retornando as chaves por padrão.

nomes = ['Ana', 'Bruno', 'Carla', 'Diego']
for n in nomes:
    if 'a' in n.lower():
        print(n)
# Iterando sobre uma string
texto = 'Python'
for c in texto:
    print(c)
frutas = ['maçã', 'banana', 'uva']
for f in frutas:
    if f == 'banana':
        print(' banana encontrada!')
        break
    print(f)
Desafio: Percorra uma lista de nomes e imprima apenas os que começam com a letra 'A' (caso-insensível). Em seguida, crie um pequeno parser de entradas com validação iterativa: leia números até receber 'sair' e valide se é inteiro entre 0 e 100.
Curiosidade: Em loops, o uso de else pode parecer sutil, mas é útil para detectar se o loop concluiu sem ser interrompido pelo break. (3)
graph TD; A[Tipo de Loop] --> B[For] ; A --> C[While] ; B --> D[Itera sobre iterável] ; C --> E[Verifica condição] ; D --> F[Processa item] ; E --> F

Boas práticas, testes e preparação para entrevistas

🧭 Boas práticas, testes e aplicações reais

Vamos consolidar o que aprendemos com foco na clareza, manutenibilidade e preparação para situações reais de trabalho. A ideia é manter o fluxo de loop simples, evitar dependências desnecessárias e documentar as condições de saída. Em termos de cargo de desenvolvedor, a leitura de código é tão importante quanto escrevê-lo: loops devem ser fáceis de entender num relance.

Boas práticas incluem: escolher o tipo de loop adequado para o problema, evitar lógica complexa dentro do corpo do loop, e adicionar comentários que expliquem o porquê das decisões. Em termos de qualidade de software, precisamos também pensar em testabilidade: escrever pequenos testes ou asserts que verifiquem comportamentos esperados do loop, especialmente em casos de entrada variável.

Próximo passo: leve essa base para depuração, portfólio e entrevistas. Por exemplo, um exercício de portfólio poderia ser um script que lê dados de uma lista de clientes, valida entradas e produz um relatório simples com somatórios, contagens e verificações de consistência.

# Função simples para somar números de 1 a N com validação básica

def soma_de_1_a(n):
    if n < 1:
        raise ValueError('N precisa ser >= 1')
    total = 0
    for i in range(1, n+1):
        total += i
    return total

print(soma_de_1_a(10))  # 55
Desafio final: Implemente um contador que some números de 1 a 100 usando for e range, em seguida crie um pequeno parser de entradas com validação iterativa: leia números de entrada até que o usuário digite 'fim' e valide se cada entrada é inteiro entre 0 e 50. Mostre o total acumulado ao final.
Curiosidade: Muitas empresas exigem que você demonstre pensamento lógico com exercícios simples de looping em entrevistas técnicas. Demonstrar clareza de fluxo, limites de iteração e manejo de casos de erro pode ser tão valioso quanto uma solução perfeita. (4)

🎯 Exercícios

🎯 Exercícios: Estruturas de repetição: loops for e while

Teste seus conhecimentos com estas questões de múltipla escolha. Cada questão tem apenas uma resposta correta.

Questão 1

Qual afirmação descreve corretamente o uso básico de loops em Python?

Questão 2

Qual é a principal diferença entre o loop for e o loop while em Python?

Questão 3

O que a função range() em Python permite?

Questão 4

Qual afirmação sobre o break em loops é correta?

Questão 5

Qual é a função do bloco else em loops em Python?