
Passo 1 de 8
Um caractere por vez com for
Percorra um texto diretamente com for e acompanhe o caractere recebido em cada passagem.
Trilha de aprendizado · Nível 2 · Tutorial 5
Executar uma ação para cada caractere de um texto ou número de um intervalo, escolhendo limites e passos adequados.
Um caractere por vez com for
Percorra um texto diretamente com for e acompanhe o caractere recebido em cada passagem. 3 min
Começar em zero com range(fim)
Percorra inteiros com range e escolha quantas vezes uma ação será repetida. 2 min
Escolher o início e o limite final
Defina onde um intervalo crescente começa e ajuste o limite final para incluir o último inteiro desejado. 2 min
Avançar com um passo positivo
Use o terceiro argumento de range para percorrer inteiros com saltos e prever onde o percurso termina. 2 min
Percorrer intervalos em ordem decrescente
Use passos negativos e ajuste o limite final para incluir o último valor desejado, inclusive zero. 2 min
Distinguir intervalo vazio de passo inválido
Reconheça quando um range não produz valores, ajuste seus limites e diferencie um intervalo vazio do erro causado por passo zero. 3 min
Escolher entre for e while
Escolha o laço mais direto conforme a repetição percorra valores ou dependa de uma condição. 2 min
Aplicação final: percorrer, prever e conferir
Construa três percursos em um script local e compare sua previsão com a saída observada. 4 min

Passo 1 de 8
Percorra um texto diretamente com for e acompanhe o caractere recebido em cada passagem.
Use for para executar uma ação com cada caractere de um texto.
No cabeçalho abaixo, letra é a variável de iteração: ela recebe primeiro "s", depois "o" e depois "l". A palavra in indica o texto a percorrer, e os dois-pontos iniciam o bloco indentado.
O próprio for passa ao próximo caractere. Você não precisa acessar posições nem atualizar letra manualmente.
O print do bloco exibe um caractere por linha.
for letra in "sol":
print(letra)
Em cada passagem, letra recebe apenas o caractere destacado, não o texto inteiro.
Complete com o nome da variável que deve receber cada caractere:
texto = "lua"
for ___ in texto:
print(letra)O for não pula espaços nem elimina caracteres repetidos. Em "a a", o bloco roda três vezes: para o primeiro a, para o espaço e para o segundo a.
Os colchetes no print abaixo são apenas texto para deixar o espaço visível. Já print("Fim"), sem recuo, executa uma vez depois que o percurso termina.
for caractere in "a a":
print(f"[{caractere}]")
print("Fim")Exemplo
[a]
[ ]
[a]
Fimcaractere tem o mesmo papel que letra no exemplo anterior: o nome pode mudar, desde que o bloco use o nome escolhido.
Leia o código e acompanhe cada passagem.
for simbolo in "o i":
print(f"[{simbolo}]")
print("Fim")Coloque as linhas na ordem em que serão exibidas.

Passo 2 de 8
Percorra inteiros com range e escolha quantas vezes uma ação será repetida.
range descreve uma sequência de inteiros que o for pode percorrer. Na forma range(fim), com fim positivo, o percurso começa em 0, avança de 1 em 1 e termina antes de fim.
No código abaixo, numero recebe 0, 1, 2 e 3. O print exibe cada valor em uma linha.
for numero in range(4):
print(numero)
Quatro valores são percorridos: 0, 1, 2 e 3. O limite 4 fica de fora.
for valor in range(3):
print(valor)Quais valores serão exibidos, nessa ordem, um por linha?
O corpo do for não precisa exibir a variável de iteração. Ele pode repetir outra ação.
Com range(5), numero recebe 0, 1, 2, 3 e 4, mas o código abaixo exibe apenas Pronto!, cinco vezes, uma por linha. Para um fim positivo, range(fim) permite executar o corpo exatamente essa quantidade de vezes.
for numero in range(5):
print("Pronto!")Preencha com um inteiro para exibir a mensagem exatamente 6 vezes:
for numero in range(___):
print("Vamos praticar!")
Passo 3 de 8
Defina onde um intervalo crescente começa e ajuste o limite final para incluir o último inteiro desejado.
Com dois argumentos, range(inicio, fim) permite escolher o primeiro valor: o primeiro argumento é o início e o segundo é o limite final.
No percurso abaixo, o início entra, mas o fim fica de fora. Sem informar um passo, o avanço continua sendo de 1 em 1.
Exibe 3, 4, 5 e 6, um número por linha. O limite 7 não aparece.
for numero in range(3, 7):
print(numero)
Em range(3, 7), o 3 é incluído e o 7 é excluído.
Dica
Para incluir um último inteiro em um percurso crescente de 1 em 1, use esse inteiro mais 1 como limite final. Para terminar em 6, por exemplo, use fim igual a 7.
Complete com os dois argumentos, separados por vírgula, para exibir 5, 6, 7 e 8, um número por linha:
for numero in range(___):
print(numero)Um início negativo não muda a direção desse percurso: os valores continuam aumentando de 1 em 1 e podem atravessar o zero.
Em range(-2, 3), começamos em -2 e terminamos em 2, antes do limite 3.
for numero in range(-2, 3):
print(numero)Exemplo
-2
-1
0
1
2O zero faz parte do percurso, assim como os outros inteiros entre o início e o limite.
A intenção era exibir todos os inteiros de -2 até 4, incluindo 4, mas range(-2, 4) deixa o 4 de fora.
Complete o limite corrigido:
for numero in range(-2, ___):
print(numero)
Passo 4 de 8
Use o terceiro argumento de range para percorrer inteiros com saltos e prever onde o percurso termina.
Em range(inicio, fim, passo), o terceiro argumento define a diferença entre valores consecutivos. Um passo positivo faz os valores crescerem.
O primeiro valor vem de inicio, não de passo. A cada passagem, o próximo valor aumenta pelo passo, mas só entra no percurso se for menor que fim.
A saída é 1, 4 e 7, um número por linha. O próximo seria 10: como ultrapassa 9, ele não é produzido.
for numero in range(1, 9, 3):
print(numero)
O limite não precisa ser alcançado exatamente: o percurso para antes de produzir um valor igual ou maior que ele.
Associe cada intervalo aos números que um for exibiria, na ordem. As vírgulas representam a sequência; com print, cada número apareceria em uma linha.
Toque em um item e depois no par correspondente.
Para exibir 2, 6, 10 e 14, escolha:
Este laço exibe os quatro valores desejados, um por linha.
for numero in range(2, 15, 4):
print(numero)Dica
Com passo 4, os valores não precisam começar em 4. O passo define o tamanho do salto; o início define de onde você parte.
Complete o terceiro argumento para que o laço exiba 3, 7 e 11, um número por linha:
for numero in range(3, 13, ___):
print(numero)

Passo 5 de 8
Use passos negativos e ajuste o limite final para incluir o último valor desejado, inclusive zero.
Para percorrer números em ordem decrescente, use um passo negativo. Não basta trocar os limites: sem informar o passo, o avanço continua sendo +1.
Para um percurso decrescente não vazio, o início deve ser maior que o fim. Cada valor produzido precisa continuar maior que o limite final, que fica excluído.
O passo -2 subtrai duas unidades a cada passagem.
for numero in range(8, 1, -2):
print(numero)
Saída: 8, 6, 4 e 2, um por linha. O próximo valor seria 0, que já não é maior que 1.
Coloque os valores de range(9, 2, -3) na ordem em que serão percorridos.
Para incluir um último valor, duas condições precisam valer: os saltos devem chegar até ele e ele deve ser maior que o fim.
Com passo -1, uma contagem de 3 até 0 pode usar -1 como limite final.
Exibe 3, 2, 1 e 0, cada um em uma linha. O -1 não aparece.
for numero in range(3, -1, -1):
print(numero)Dica
range(5, -1, -2) produz 5, 3 e 1 — não inclui 0. Mesmo com o limite abaixo de zero, subtrair 2 a partir de 5 não chega a 0.
Complete com um limite inteiro para produzir exatamente 6, 4, 2 e 0:
range(6, ___, -2)

Passo 6 de 8
Reconheça quando um range não produz valores, ajuste seus limites e diferencie um intervalo vazio do erro causado por passo zero.
Um intervalo fica vazio quando o início já está fora dos limites permitidos para a direção escolhida:
Assim, limites iguais produzem um intervalo vazio com qualquer passo válido. Na forma de um argumento, range(0) e range(-3) também são vazios: começam em zero e têm passo positivo.
O passo padrão é +1, mas o início 5 já é maior que o limite 2. A única saída será Fim.
for numero in range(5, 2):
print(numero)
print("Fim")
Intervalo vazio não é erro: o corpo é executado zero vezes.
for numero in range(1, 4, -1):
print(numero)Por que esse intervalo está vazio? Escreva uma chamada de range que exiba exatamente 3, 2 e 1, nessa ordem, mantendo o passo -1.
Escreva pelo menos 20 caracteres (0/20).
O passo zero não define avanço e é proibido. Ao tentar criar um range com esse passo, Python gera ValueError. Isso não é um intervalo vazio nem um laço infinito.
Neste script, ocorre ValueError na primeira linha. Nenhum número é exibido, e a linha que exibiria Fim não é executada.
for numero in range(1, 4, 0):
print(numero)
print("Fim")Atenção
range(2, 2, 1) é vazio. Já range(2, 2, 0) gera ValueError: o passo zero é inválido independentemente dos limites.
Associe cada chamada de range ao resultado que ela terá ao ser percorrida com for.
Toque em um item e depois no par correspondente.

Passo 7 de 8
Escolha o laço mais direto conforme a repetição percorra valores ou dependa de uma condição.
Pergunte o que determina a repetição:
for expressa diretamente esse percurso, como nos caracteres de um texto ou nos inteiros de range.while deixa essa condição explícita, como na leitura de entradas até receber um valor sentinela.
No for, o percurso orienta a repetição. No while, a condição decide se ela continua.
Associe cada tarefa à forma mais direta de expressar a repetição.
Toque em um item e depois no par correspondente.
Para mostrar um aviso três vezes, o percurso abaixo já expressa a quantidade desejada. Não precisamos atualizar manualmente uma variável de controle.
for numero in range(3):
print("Confira os dados.")Dica
numero recebe 0, 1 e 2, mesmo sem ser usado no corpo. Também seria possível organizar essa tarefa com while, mas for com range mostra a quantidade diretamente. A escolha não significa que só exista uma solução.
Um programa pede um palpite e, se ele estiver errado, pede outro até a pessoa acertar um número secreto. Não há quantidade fixa de tentativas. Qual laço expressa melhor essa tarefa e o que determina sua continuidade? Não é necessário escrever código.
Escreva pelo menos 25 caracteres (0/25).

Passo 8 de 8
Construa três percursos em um script local e compare sua previsão com a saída observada.
No seu editor, crie o arquivo percursos.py com o script-base abaixo. Ele já pode ser executado, mas ainda faltam os dois percursos numéricos.
Substitua cada comentário pelo seu próprio laço for, usando range e print(numero). Escolha todos os argumentos para produzir, um número por linha:
Mantenha os três laços independentes, sem colocar um dentro de outro. Antes de executar, anote a saída completa que espera ver, incluindo os títulos, os caracteres e a mensagem final. Faça sua tentativa antes de consultar a solução nas próximas telas.
Os colchetes tornam visível a passagem pelo espaço do texto.
print("Texto")
for caractere in "a a":
print(f"[{caractere}]")
print("Crescente")
# Escreva aqui o primeiro laço numérico.
print("Decrescente")
# Escreva aqui o segundo laço numérico.
print("Fim")Dica
Salve o arquivo e, no terminal aberto na pasta dele, execute python percursos.py — ou python3 percursos.py, conforme seu ambiente. Compare a saída com sua previsão. Se houver diferença, confira o primeiro valor, a diferença entre valores consecutivos e o limite final.
Depois de executar sua tentativa, registre:
range que você escreveu e por que escolheu esses limites.Fim apareceria?input até a pessoa digitar sair. Qual laço expressa melhor essa tarefa e por quê?O registro é textual: não é necessário enviar o arquivo.
Escreva pelo menos 80 caracteres (0/80).
Esta é uma solução possível. No crescente, o início é 2 e o passo é 3: os limites 12, 13 ou 14 produzem os mesmos valores. No decrescente, o início é 9 e o passo é -3: os limites -1, -2 ou -3 também são válidos.
Se o passo decrescente virar +3, mantendo esses limites, o intervalo ficará vazio. O programa ainda exibirá Fim. Já a leitura até receber sair fica mais direta com while, pois depende de uma condição, não de uma quantidade definida de entradas.
print("Texto")
for caractere in "a a":
print(f"[{caractere}]")
print("Crescente")
for numero in range(2, 12, 3):
print(numero)
print("Decrescente")
for numero in range(9, -1, -3):
print(numero)
print("Fim")Exemplo
Texto
[a]
[ ]
[a]
Crescente
2
5
8
11
Decrescente
9
6
3
0
Fim
O limite não precisa ser alcançado: ele separa os valores permitidos do próximo salto, que já não entra.
Resumo
Use estas referências ao construir seus próximos percursos.
Parabéns! Você concluiu: Percorrer textos e intervalos com for e range
Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks