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