• Python
  • 08. Iterando em coleções com "for"

For#

O range#

Outra estratégia bastante comum em programação é o uso de contadores para percorrer números em um intervalo. Executamos uma determinada operação para o valor 0, depois para o valor 1, depois para o valor 2, e assim por diante. O Python possui uma função chamada range que gera essa sequência de números naturais. Existem 3 maneiras de utilizar o range:

Comando 'range'

Uso do range com um argumento#

Ao utilizar o comando range passando apenas um argumento, são gerados números que vão desde o zero até o antes do argumento. Exemplo: range(3) gera a sequência 0, 1, 2 (note que o 3 não pertence à sequência gerada);

Exercício 1

Qual a sequência de números gerada pelo código a seguir: range(10)

Resposta

A sequência gerada pelo comando range(10) é 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

O comando range(10) gera uma sequência de números que começa em 0 e termina um número antes do argumento passado. No nosso caso, o argumento é o número 10, então o último número da sequência é o 9.

Exercício 2

Considere o código a seguir:

soma = 0
for valor in range(5):
  soma = soma + valor
print(soma)
Antes de testar o código, reflita o que o código está fazendo e qual será o resultado.

Ao testar o código acima, o que será impresso no terminal?

Resposta

Ao testar o código acima, obtemos o valor 10 impresso no terminal.

Isso porque, o for percorre e soma os valores 0, 1, 2, 3, 4, gerados pelo comando range(5)

E por fim, o resultado é impresso no terminal.

Exercício 3

Resolva o exercício Soma dos n primeiros termos.

Acessar exercício

Uso do range com dois argumentos#

Ao utilizar o comando range passando dois argumentos, são gerados números que vão desde o primeiro argumento até antes do segundo argumento. Exemplo: range(13, 17) gera a sequência 13, 14, 15, 16 (note que o 13 pertence à sequência, mas o 17, não);

Exercício 4

Qual a sequência de números gerada pelo código a seguir: range(5, 10)

Resposta

A sequência gerada pelo comando range(5, 10) é 5, 6, 7, 8, 9.

Ao utilizar o comando range(5, 10), estamos passando dois valores como argumento. O primeiro argumento indica em qual número a sequência irá começar e o segundo argumento indica em qual número a sequência irá terminar. Lembrando que o segundo argumento não é incluído na sequência.

Desta forma, como o segundo argumento é o valor 10, a sequência termina no valor 9.

Exercício 5

Considere o código a seguir:

soma = 0
for valor in range(1, 5):
  soma = soma + valor
print(soma)
Antes de testar o código, reflita o que o código está fazendo e qual será o resultado.

Ao testar o código acima, o que será impresso no terminal?

Resposta

Ao testar o código acima, obtemos o valor 10 impresso no terminal.

Isso porque, o for percorre e soma os valores 1, 2, 3, 4, gerados pelo comando range(1, 5)

E por fim, o resultado é impresso no terminal.

Exercício 6

Resolva o exercício Primos no intervalo.

Acessar exercício

Uso do range com três argumentos#

Ao utilizar o comando range passando três argumentos, são gerados números que vão desde o primeiro argumento até antes do segundo argumento e o terceiro argumento é o salto de um elemento gerado para o próximo. Exemplo: range(2, 13, 3) gera a sequência 2, 5, 8, 11 (note que o 2 pertence à sequência, mas o próximo elemento da sequência, o 14, não).

Exercício 7

Qual a sequência de números gerada pelo código a seguir: range(0, 10, 2)

Resposta

A sequência gerada pelo comando range(0, 10, 2) é 0, 2, 4, 6, 8.

Ao utilizar o comando range(0, 10, 2), estamos passando três valores como argumento. O primeiro argumento indica em qual número a sequência irá começar, o segundo argumento indica em qual número a sequência irá terminar (lembrando que o segundo argumento não é incluído na sequência) e o último argumento indica quantos números pular de um valor para o outro.

Desta forma, o comando range(0, 10, 2) gera uma sequência que começa em 0, vai até 9 pulando de dois em dois os valores dentro da sequência.

Note, que o valor 9 não entra na sequência, pois estamos pulando os valores de dois em dois e o valor 10 também não entra na sequência, pois a sequência deve para antes do 10.

Exercício 8

Considere o código a seguir:

soma = 0
for valor in range(3, 12, 3):
  soma = soma + valor
print(soma)
Antes de testar o código, reflita o que o código está fazendo e qual será o resultado.

Ao testar o código acima, o que será impresso no terminal?

Resposta

Ao testar o código acima, obtemos o valor 18 impresso no terminal.

Isso porque, o for percorre e soma os valores 3, 6, 9, gerados pelo comando range(3, 12, 3)

E por fim, o resultado é impresso no terminal.

EXERCÍCIOS ADICIONAIS#

Exercício 9

Faça uma função chamada devolve_maior que recebe uma lista de inteiros e retorna o maior deles.

Arraste blocos daqui

if numero > maior:
for numero in range(numeros):
for numero in range(len(numeros)):
for numero in numeros:
maior = numeros[0]
return maior
def devolve_maior(numeros):
maior = numero
Solte os blocos aqui
def devolve_maior(numeros):
    maior = numeros[0]
    for numero in numeros:
        if numero > maior:
            maior = numero
    return maior

Resposta

Resposta errada

Resposta correta

Refaça os exercícios a seguir utilizando for e, quando necessário range:

Exercício 10

Resolva o exercício Calcula fatorial.

Acessar exercício

Exercício 11

Resolva o exercício Diferença de listas.

Acessar exercício

Exercício 12

Resolva o exercício Junta nome e sobrenome.

Acessar exercício

Exercício 13

Resolva o exercício Valor da nota fiscal.

Acessar exercício

Exercício 14

Resolva o exercício Verifica lista crescente.

Acessar exercício

Exercício 15

Resolva o exercício Máximo de uma matriz.

Acessar exercício

Pratique mais! 💪#

Refaça os outros exercícios já feitos das seções 👉 while e 👉 lista agora utilizando o for.

Importante

Nem todos os exercícios podem ser resolvidos com o for.