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. rangeNo 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)