Trilha de aprendizado · Nível 2 · Tutorial 5

Percorrer textos e intervalos com for e range

Executar uma ação para cada caractere de um texto ou número de um intervalo, escolhendo limites e passos adequados.

  • Nível: Iniciante
  • Duração: 20 min
  • 8 passos
Percorrer textos e intervalos com for e range

O que você vai percorrer

  1. Um caractere por vez com for Percorra um texto diretamente com for e acompanhe o caractere recebido em cada passagem. 3 min
  2. Começar em zero com range(fim) Percorra inteiros com range e escolha quantas vezes uma ação será repetida. 2 min
  3. 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
  4. 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
  5. Percorrer intervalos em ordem decrescente Use passos negativos e ajuste o limite final para incluir o último valor desejado, inclusive zero. 2 min
  6. 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
  7. 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
  8. 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

O que você vai aprender

  • Usar for para percorrer um texto caractere por caractere, sem índices.
  • Prever os valores produzidos por range com um, dois ou três argumentos.
  • Construir intervalos crescentes e decrescentes, respeitando a exclusão do limite final.
  • Reconhecer intervalos vazios e explicar por que o passo não pode ser zero.
  • Escolher entre for e while conforme a repetição dependa de um percurso ou de uma condição.

Antes de começar

  • Repetir ações com while

Passo 1 de 8

Um caractere por vez com for

Percorra um texto diretamente com for e acompanhe o caractere recebido em cada passagem.

O texto entrega um caractere por vez

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.

python
for letra in "sol":
    print(letra)
Três passagens pelo texto sol. Na primeira, s está destacado e é exibido; na segunda, o; na terceira, l.

Em cada passagem, letra recebe apenas o caractere destacado, não o texto inteiro.

Complete o percurso

Complete com o nome da variável que deve receber cada caractere:

texto = "lua"
for ___ in texto:
    print(letra)

Espaços e repetições também contam

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.

Observe o recuo

python
for caractere in "a a":
    print(f"[{caractere}]")
print("Fim")

Exemplo

Saída

[a]
[ ]
[a]
Fim

caractere tem o mesmo papel que letra no exemplo anterior: o nome pode mudar, desde que o bloco use o nome escolhido.

Preveja a ordem da saída

Leia o código e acompanhe cada passagem.

python
for simbolo in "o i":
    print(f"[{simbolo}]")
print("Fim")

Coloque as linhas na ordem em que serão exibidas.

  1. Fim
  2. [ ]
  3. [o]
  4. [i]

Passo 2 de 8

Começar em zero com range(fim)

Percorra inteiros com range e escolha quantas vezes uma ação será repetida.

Do zero até antes do fim

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.

python
for numero in range(4):
    print(numero)
Percurso de range(4): os valores 0, 1, 2 e 3 estão preenchidos e ligados por setas para a direita. O 4 aparece apenas como limite, em um círculo vazio separado do percurso.

Quatro valores são percorridos: 0, 1, 2 e 3. O limite 4 fica de fora.

Preveja os valores

python
for valor in range(3):
    print(valor)

Quais valores serão exibidos, nessa ordem, um por linha?

Repetir sem exibir o número

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.

python
for numero in range(5):
    print("Pronto!")

Escolha a quantidade

Preencha com um inteiro para exibir a mensagem exatamente 6 vezes:

for numero in range(___):
    print("Vamos praticar!")

Passo 3 de 8

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.

Agora você escolhe o início

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.

De 3 até 6

Exibe 3, 4, 5 e 6, um número por linha. O limite 7 não aparece.

python
for numero in range(3, 7):
    print(numero)
Reta numérica com 3, 4, 5 e 6 destacados por círculos preenchidos e 7 marcado com círculo vazio. Setas avançam uma unidade para a direita entre os valores incluídos.

Em range(3, 7), o 3 é incluído e o 7 é excluído.

Dica

Do último valor ao limite

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.

Escolha os dois argumentos

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)

O início também pode ser negativo

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.

Atravessando o zero

python
for numero in range(-2, 3):
    print(numero)

Exemplo

Saída

-2
-1
0
1
2

O zero faz parte do percurso, assim como os outros inteiros entre o início e o limite.

Ajuste o fim

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

Avançar com um passo positivo

Use o terceiro argumento de range para percorrer inteiros com saltos e prever onde o percurso termina.

O terceiro argumento define o salto

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.

De três em três

A saída é 1, 4 e 7, um número por linha. O próximo seria 10: como ultrapassa 9, ele não é produzido.

python
for numero in range(1, 9, 3):
    print(numero)
Reta numérica com saltos de três unidades: 1, 4 e 7 destacados. O limite 9 está marcado entre 7 e 10. Um salto tracejado até 10 indica um valor que não faz parte do percurso.

O limite não precisa ser alcançado exatamente: o percurso para antes de produzir um valor igual ou maior que ele.

Associe cada percurso à saída

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.

Construa a partir dos valores desejados

Para exibir 2, 6, 10 e 14, escolha:

  • Início 2: é o primeiro valor desejado.
  • Passo 4: é a diferença entre cada valor e o seguinte.
  • Limite 15: deixa o 14 entrar e impede o próximo salto, que chegaria a 18.

Percurso construído

Este laço exibe os quatro valores desejados, um por linha.

python
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 passo

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

Percorrer intervalos em ordem decrescente

Use passos negativos e ajuste o limite final para incluir o último valor desejado, inclusive zero.

O passo define a direção

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.

Diminuir de dois em dois

O passo -2 subtrai duas unidades a cada passagem.

python
for numero in range(8, 1, -2):
    print(numero)
Reta numérica com setas de 8 para 6, de 6 para 4 e de 4 para 2. O limite 1 está marcado separadamente. O próximo salto chegaria a 0, que não é produzido.

Saída: 8, 6, 4 e 2, um por linha. O próximo valor seria 0, que já não é maior que 1.

Siga os saltos

Coloque os valores de range(9, 2, -3) na ordem em que serão percorridos.

  1. 6
  2. 9
  3. 3

Como incluir zero

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.

Contagem regressiva até zero

Exibe 3, 2, 1 e 0, cada um em uma linha. O -1 não aparece.

python
for numero in range(3, -1, -1):
    print(numero)

Dica

O limite não muda os saltos

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.

Escolha o limite

Complete com um limite inteiro para produzir exatamente 6, 4, 2 e 0:

range(6, ___, -2)

Passo 6 de 8

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.

Vazio: nenhuma passagem pelo corpo

Um intervalo fica vazio quando o início já está fora dos limites permitidos para a direção escolhida:

  • Passo positivo: início maior ou igual a fim.
  • Passo negativo: início menor ou igual a fim.

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 programa continua após o laço

O passo padrão é +1, mas o início 5 já é maior que o limite 2. A única saída será Fim.

python
for numero in range(5, 2):
    print(numero)
print("Fim")
Fluxo do exemplo: range(5, 2) não fornece valores, então print(numero) é ignorado e a execução segue para print("Fim").

Intervalo vazio não é erro: o corpo é executado zero vezes.

Corrija a contagem regressiva

Uma tentativa que não exibe números

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

Passo zero: o intervalo nem é criado

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.

Erro antes da primeira passagem

Neste script, ocorre ValueError na primeira linha. Nenhum número é exibido, e a linha que exibiria Fim não é executada.

python
for numero in range(1, 4, 0):
    print(numero)
print("Fim")

Atenção

Limites iguais não tornam o passo zero válido

range(2, 2, 1) é vazio. Já range(2, 2, 0) gera ValueError: o passo zero é inválido independentemente dos limites.

Valores, vazio ou erro?

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

Escolher entre for e while

Escolha o laço mais direto conforme a repetição percorra valores ou dependa de uma condição.

Percurso ou condição?

Pergunte o que determina a repetição:

  • Há valores a percorrer? for expressa diretamente esse percurso, como nos caracteres de um texto ou nos inteiros de range.
  • É preciso continuar enquanto uma condição for verdadeira? while deixa essa condição explícita, como na leitura de entradas até receber um valor sentinela.
Comparação: for percorre uma sequência finita de elementos; while testa uma condição, executa a ação se ela for verdadeira e retorna ao teste. Se for falsa, sai do laço.

No for, o percurso orienta a repetição. No while, a condição decide se ela continua.

Associe a tarefa ao laço

Associe cada tarefa à forma mais direta de expressar a repetição.

Toque em um item e depois no par correspondente.

Quantidade fixa, intenção explícita

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.

Três repetições

python
for numero in range(3):
    print("Confira os dados.")

Dica

Escolha pela clareza

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.

Justifique sua escolha

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

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.

Construa antes de consultar

Seu desafio local

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:

  • Crescente: 2, 5, 8 e 11.
  • Decrescente: 9, 6, 3 e 0.

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.

Script-base executável

Os colchetes tornam visível a passagem pelo espaço do texto.

python
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

Execute no seu computador

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.

Registre sua tentativa

Previsão, observação e justificativa

Depois de executar sua tentativa, registre:

  1. As duas chamadas de range que você escreveu e por que escolheu esses limites.
  2. A saída prevista e a observada. Você pode usar vírgulas para representar as quebras de linha. Se precisou corrigir algo, conte o que mudou.
  3. Sem executar: o que aconteceria se você trocasse apenas o passo do seu percurso decrescente pelo correspondente positivo? A mensagem Fim apareceria?
  4. Uma tarefa complementar pede textos com 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).

Confira uma solução

Compare com suas escolhas

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.

Solução completa

python
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

Saída esperada

Texto
[a]
[ ]
[a]
Crescente
2
5
8
11
Decrescente
9
6
3
0
Fim

O último salto permitido

Duas retas numéricas. Na superior, saltos de mais três ligam 2, 5, 8 e 11; o limite 12 fica antes do próximo candidato, 14. Na inferior, setas para a esquerda ligam 9, 6, 3 e 0; o limite menos um fica antes do próximo candidato, menos três, na direção do percurso.

O limite não precisa ser alcançado: ele separa os valores permitidos do próximo salto, que já não entra.

Revisão final

Resumo

Percorrer textos e intervalos com for e range

Use estas referências ao construir seus próximos percursos.

  • for percorre o texto diretamente, um caractere por passagem, incluindo espaços e repetições.
  • range(fim) começa em 0 e usa passo 1; range(inicio, fim) escolhe o início; range(inicio, fim, passo) também escolhe o avanço.
  • O limite final é sempre excluído. Com passo positivo, os valores ficam abaixo dele; com passo negativo, ficam acima dele.
  • Com passo válido, início maior ou igual ao fim torna o percurso positivo vazio; início menor ou igual ao fim torna o negativo vazio. O corpo não executa, mas o programa segue após o laço.
  • Passo zero gera ValueError ao criar o range: não é intervalo vazio nem laço infinito.
  • Prefira for para um percurso definido e while quando a continuidade depender de uma condição. A escolha busca clareza, não uma única solução possível.

Tutorial concluído

Parabéns! Você concluiu: Percorrer textos e intervalos com for e range

Você chegou ao fim da aplicação de for e range. Ao conferir um percurso, verifique primeiro valor, último valor e passo — e lembre que o limite final fica de fora.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso