• Python
  • 07. Iterando em coleções com "for"
  • Introdução

07. For#

O objetivo de aprendizado deste handout é que, ao final da atividade, você seja capaz de utilizar o for para percorrer listas e intervalos (range) em seus programas em conjunto com as estruturas que vimos nas aulas anteriores (input, if, while, etc.). Vamos começar com um exemplo.

Percorrendo listas com while#

Exercise 1

Considere a função a seguir, que recebe uma lista de números como argumento:

def soma_elementos(lista):
    soma = 0
    i = 0
    while i < len(lista):
        n = lista[i]
        soma += n
        i += 1
    return soma

O que a função retorna ao receber a lista [2, 4, 6, 8], ou seja, qual valor recebemos ao fazer a chamada soma_elementos([2, 4, 6, 8]) ?

Answer

A função soma_elementos, recebe como argumento uma lista de números e retorna a soma destes números. Desta forma, a soma dos valores da lista [2, 4, 6, 8] resulta no valor 20.

Vamos olhar em mais detalhes para a função soma_elementos:

def soma_elementos(lista):
    soma = 0
    i = 0
    while i < len(lista):
        n = lista[i]
        soma += n
        i += 1
    return soma

A função acima inicializa uma variável soma com o valor zero e, para cada elemento n da lista, adiciona o valor guardado em n na variável soma e vai para o próximo elemento. Depois disso, devolve o resultado da soma de todos os elementos. Depois de fazer muitos exercícios você pode ter percebido que em muitos casos temos uma estrutura muito parecida com essa quando estamos percorrendo uma lista:

# Faz algumas inicializações
i = 0
while i < len(lista):
    elemento = lista[i]
    # Faz alguma coisa com o elemento
    i += 1

Com essa estrutura podemos, por exemplo, imprimir ou somar todos os elementos de uma lista. Nesses casos, a lógica é sempre parecida: executa alguma ação para cada elemento da lista. Na verdade esse tipo de procedimento é tão comum que existe uma maneira mais sucinta de fazer isso em Python: a repetição for.

A repetição for#

O for percorre automaticamente todos os elementos em uma lista, caracteres em uma string, e outras estruturas que veremos no futuro:

A repetição `for`

Ele se comporta de forma semelhante ao while se considerarmos que ele executa o bloco de código múltiplas vezes, mas uma diferença importante é que o for não possui condição. Ele percorre todos os elementos e depois termina. Podemos ler o código abaixo:

Comando 'for' sobre a lista 'minha_lista'

como:

Forma de se ler o comando 'for'

Assim, podemos reescrever o código a seguir:

Percorrendo lista com 'while'

utilizando o for:

Percorrendo lista com 'for'

Cada vez que o Python for executar o bloco dentro do for a variável e será automaticamente atualizada com o valor do próximo elemento da lista.

A variável no comando for

Note que o for é seguido por uma variável (for variavel in lista). Como se trata de uma variável, podemos atribuir a ela o nome que quisermos.

Podemos utilizar elemento, item ou qualquer outro nome. Por exemplo:

  • for elemento in lista:
  • for item in lista:
  • for e in lista:

Exercise 2

Qual das alternativas abaixo NÃO é uma forma válida de se utilizar o comando for.

Answer

O código abaixo não utiliza o comando for de forma correta.

lista = [1, 2, 3]
for i in lista:
  print(lista[i])
O código acima devolve o erro que já conhecemos bem. O erro IndexError: list index out of range, que se refere aos casos em que tentamos acessar uma posição que não existe na lista.

Note, que ao utilizarmos o comando for não precisamos acessar o valor da lista passando o índice, como o exemplo lista[i]. Isso porque a variável i não representa o índice.

Exercise 3

Considere o código a seguir:

palavra = "Insper"

for letra in palavra:
  print(letra)

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

Answer

Ao testar o código acima obtemos o seguinte resultado:

I
n
s
p
e
r

Quando utilizamos o for com uma string, o Python executa o bloco para cada caractere dessa string.

Exercise 4

Resolva o exercício Soma valores da lista.

Acessar exercício

Exercise 5

Resolva o exercício Soma dos número ímpares.

Acessar exercício

Exercise 6

Resolva o exercício Filtra positivos.

Acessar exercício

O range#

Agora vamos ver a função range. 👉 Clique aqui