Módulo 9 - Repetições com for e range()
Percorrendo textos letra por letra
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Percorrer um texto letra por letra com for letra in palavra.
- Combinar for, if e contador para contar vogais de um texto.
- Montar uma palavra ao contrário com acumulador de texto.
- Entender que strings são sequências, a ideia que sustenta o módulo 12.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Percorrendo textos letra por letra.
Os objetivos desta aula. Percorrer um texto letra por letra com for letra in palavra. Combinar for, if e contador para contar vogais de um texto. Montar uma palavra ao contrário com acumulador de texto. Entender que strings são sequências, a ideia que sustenta o módulo 12.
Veja o essencial, parte por parte.
Texto também é sequência. O for percorre qualquer sequência, e um texto (string) É uma sequência de caracteres.
Contando vogais: for, if e contador juntos. A letra "A" maiúscula NÃO está em "aeiou": para o Python, "A" e "a" são caracteres diferentes.
Montando a palavra ao contrário. Fechamento com um truque satisfatório: inverter uma palavra.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Texto também é sequência
Até aqui o for só comeu números de range(). Hora de revelar o alcance real dele: o for percorre qualquer sequência, e sequência é tudo que se deixa visitar item a item. Um texto se encaixa perfeitamente nessa definição, porque uma string é uma fileira de caracteres, um atrás do outro, cada um no seu lugar. Coloque uma palavra onde estava o range() e o for a percorre letra por letra, sem esforço extra.
for letra in "Python":
print(letra)
# P
# y
# t
# h
# o
# nSeis caracteres, seis voltas. A variável letra recebe um caractere por volta, na ordem da palavra.
Leia o cabeçalho em voz alta: para cada letra em Python. O código diz o que faz, quase em português. E note um detalhe que passa despercebido: o espaço também é caractere. Se a string fosse "bom dia", o for daria sete voltas, e numa delas a variável letra guardaria um espaço em branco. Textos guardam tudo o que você digitou, inclusive o que não se enxerga.
Contando vogais: for, if e contador juntos
Percorrer o texto é metade da graça; a outra metade é fazer algo com cada letra. O primeiro projeto clássico dessa dupla é contar vogais. A receita junta três peças que você já domina: o for visita cada letra, o if decide se ela interessa e um contador anota os acertos. Repare que o contador é um acumulador que soma sempre 1: o cofrinho da aula passada, agora recebendo uma moeda só quando a letra passa no teste.
palavra = "computador"
vogais = 0
for letra in palavra:
if letra in "aeiou":
vogais = vogais + 1
print("Vogais encontradas:", vogais)
# Vogais encontradas: 4O in do if pergunta: esta letra está dentro do texto aeiou? Em computador, o-u-a-o respondem sim: 4 vogais.
Esse pequeno programa tem dois in fazendo trabalhos diferentes, e vale parar para distingui-los. O in do for é o motor da repetição: entrega uma letra por volta. O in do if é uma pergunta de pertencimento: letra in "aeiou" resulta True se a letra estiver dentro daquele texto, False se não. Mesmo nome, papéis distintos; o contexto diz qual é qual. Você vai reencontrar o in de pertencimento no módulo 10, procurando itens em listas.
Montando a palavra ao contrário
Fechamento com um truque satisfatório: inverter uma palavra. A ideia usa o acumulador de texto prometido na aula passada, com uma sacada na ordem da emenda. Se a cada volta você colar a letra nova ATRÁS do que já tem, reconstrói a palavra original. Mas se colar a letra nova NA FRENTE, cada letra empurra as anteriores para trás, e o resultado sai espelhado.
palavra = "amor"
invertida = ""
for letra in palavra:
invertida = letra + invertida
print(invertida) # romaA emenda é letra + invertida, e não o contrário. A letra da vez entra na frente, e amor vira roma.
Acompanhe o filme volta a volta, porque é aí que a mágica se explica: invertida começa vazia; entra o a, e ela vale a; entra o m na frente, ma; entra o o na frente, oma; entra o r na frente, roma. Quatro voltas, palavra invertida. Troque a ordem da soma para invertida + letra e rode de novo: sai amor, a cópia fiel. Uma posição trocada numa linha muda o programa inteiro, e entender exatamente por que é o objetivo da aula.
Guarde a ideia central desta aula, porque ela é uma semente: strings são sequências. O módulo 12 é inteiro sobre textos, com ferramentas para caixa alta e baixa, busca, substituição e formatação, e tudo lá assenta sobre o que você acabou de ver. Desafio antes do checkpoint: conte quantas letras "a" existem em "banana" usando a receita das vogais. São 3, e o seu programa tem que concordar.
Teste rápido
Quantas voltas o loop for letra in "bom dia" executa, e por quê?
Perguntas frequentes
- O for percorre frases inteiras ou só palavras soltas?
- Percorre qualquer string, do tamanho que for: uma letra, uma palavra, um parágrafo. A visita é sempre caractere por caractere, incluindo espaços e pontuação. Para percorrer palavra por palavra existe o método split(), que divide a frase numa lista de palavras; ele entra no módulo 12.
- Como descubro quantos caracteres um texto tem sem contar no loop?
- Com a função len(): len("banana") devolve 6. É a mesma função que vai medir listas no módulo 10. Contar com loop, como fizemos com as vogais, vale quando a contagem tem um critério (só vogais, só a letra a); para o total puro, len() resolve em uma chamada.
- Existe um jeito pronto de inverter uma string, sem montar o loop?
- Existe um atalho famoso com fatias, palavra[::-1], que o módulo 12 apresenta direito. Aqui o loop é proposital: montar a inversão na mão ensina o acumulador de texto e a importância da ordem na emenda, e esse entendimento vale para muitos outros problemas.
- Por que "A" maiúscula não conta como vogal no exemplo?
- Porque a comparação de caracteres é exata: para o Python, "A" e "a" têm códigos internos diferentes, então "A" in "aeiou" dá False. A solução limpa é padronizar o texto antes de comparar, com o método lower(), que converte tudo para minúsculas. É a primeira coisa que o módulo 12 ensina.
- Posso mudar uma letra do texto durante o loop, tipo trocar a por @?
- Não diretamente: strings em Python são imutáveis, ou seja, não se altera uma letra no lugar. O caminho é construir um texto NOVO com as trocas, usando o acumulador desta aula, ou usar o método replace() do módulo 12. A imutabilidade parece limitação, mas evita uma família inteira de bugs.
- O que acontece se o texto estiver vazio, como for letra in ""?
- O loop não executa nenhuma volta, sem erro, igual ao range(0). É o comportamento natural: não há caracteres para visitar. Programas que recebem texto do usuário costumam checar isso antes (if palavra == "") para dar uma mensagem amigável em vez de silêncio.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.