Criando laços de repetição com o for loop e a função range()#

Neste capítulo, vamos entender como usar o for loop e a função range() e fornecer alguns exemplos de como eles podem ser utilizados na prática.

Introdução ao for loop#

O for loop é uma estrutura de repetição que permite iterar sobre uma sequência de elementos, como uma lista, uma string ou uma tupla. Ele é utilizado para executar um bloco de código várias vezes, baseado em uma condição pré-estabelecida.

numeros = [1, 2, 3, 4, 5]
for n in numeros:
    print(n)

A estrutura do for loop é a seguinte:

  1. A palavra-chave for é usada para iniciar a estrutura de repetição.

  2. Em seguida, é atribuido um nome à variável que irá armazenar os valores de cada iteração. Neste exemplo, chamamos a variável de n.

  3. Em seguida, vem a palavra-chave in, seguida da sequência sobre a qual desejamos iterar, no caso, a lista numeros.

  4. Por fim, temos a indentação que indica o bloco de código que será executado em cada iteração.

Neste exemplo, a saída seria:

1
2
3
4
5

A função range()#

A função range() é muito útil quando precisamos gerar uma sequência de números para usar em um for loop. Ela recebe três parâmetros: start, stop e step.

  • start: é o número inicial da sequência (padrão = 0)

  • stop: é o número final da sequência (não inclusivo, ou seja, não é incluído na sequência)

  • step: é o passo entre cada número (padrão = 1)

Quando receber apenas um parâmetro, a sequência começa do 0 e vai até o parâmetro fornecido, fazendo o papel do stop.

for i in range(5): # gera a sequencia 0, 1, 2, 3, 4
    print(i)

Quando dois parâmetros são passados, eles representam o start e stop.

for i in range(2, 8): # gera a sequencia 2, 3, 4, 5, 6, 7
    print(i)

Por último, quando passamos três parâmetros, temos o start, stop e o step.

for i in range(1, 10, 2): # gera a sequencia 1, 3, 5, 7, 9
    print(i)

Iterando sobre listas e dicionários#

Além de iterar sobre sequências geradas pela função range(), o for loop também pode ser utilizado para iterar sobre listas e dicionários.

Listas#

Para as listas, basta informar o nome da variável que vai receber cada item da lista, a palavra in e por último a lista de fato:

numeros = [1, 2, 3, 4, 5]
for n in numeros:
    print(n)

Também é possível iterar sobre o índice da lista com a função range.

numeros = [1, 2, 3, 4, 5]
for i in range(len(numeros)):
    print(numeros[i])

Esse método pode ser útil quando queremos fazer algo com o índice, ou trabalhar com outros itens da lista ao mesmo tempo:

numeros = [1, 2, 3, 4, 5]
for i in range(len(numeros)):
    print(f"Número atual: {numeros[i]}")
    # se existir um próximo número
    if i+1 < len(numeros):
        print(f"Próximo número: {numeros[i+1]}")
    else:
        print("Este foi o último número!")
        

Dicionários#

Para os dicionários, se você tentar fazer a mesma coisa que a lista, vai perceber que apenas os valores das chaves serão retornados.

dados_pessoais = {'nome': 'João', 'idade': 30, 'cidade': 'São Paulo'}
for dado in dados_pessoais:
    print(dado)  # Imprime apenas as chaves -> 'nome', 'idade', 'cidade'

Para obter tanto a chave quanto o valor, nós informamos dois nomes de variáveis após o for, e chamamos o método .items() do dicionário.

dados_pessoais = {'nome': 'João', 'idade': 30, 'cidade': 'São Paulo'}
for chave, valor in dados_pessoais.items():
    print(f'{chave}: {valor}')

O método .items() retorna uma lista de tuplas, onde o índice 0 de cada tupla é a chave, e o índice 1 é o valor.

Recomendo praticar a utilização de for loops com range(), listas e dicionários para fixar melhor os conceitos aprendidos.