Sintaxe de loops no Python

Sintaxe de loops no Python

Overview

Olá, entusiastas da programação! Neste post vibrante, vamos desbravar juntos o mundo dos loops no Python. De maneira simples e direta, abordaremos os conceitos fundamentais dos loops While e For, além de explorar funções poderosas como range e zip. Seja para iterar sobre strings, listas, ou até mesmo dicionários, este guia tem tudo que você precisa para elevar seu código a um novo nível. Preparado para tornar seus scripts mais eficientes e suas linhas de código mais elegantes? Vamos nessa!

Neste post iremos demonstrar a utilização básica dos loops While e For. Ambas são sintaxes bem simples no Python.

*update 19/12/2017*: Incluindo utilização das funções range e zip**; *update 19/12/2017*: Explicação da iteração feita em dicionários;

While Loop:

1max = 100
2i = 0
3soma = 0 
4
5while i < max:
6    soma += i
7    i += 1

O loop acima repete 100 vezes a operação de soma e incrementa a variável i.

For Loop:

1for caractere in "Raccoon.Ninja":
2    print(caractere)

O fonte acima demonstra um loop utilizando For, mostrando na tela cada letra da string "Raccoon.Ninja".

Abaixo utilizamos o loop for para mostrar cada item de um vetor:

1linguagens = ['Python', 'PHP', 'C#', 'PowerBuilder', 'Cobol']
2
3for linguagem in linguagens:
4    print(linguagem)

Algumas vezes, precisamos fazer uma iteração em um vetor e utilizar o índice para acessar os valores. Existem algumas formas de se fazer isso. Veja abaixo duas formas de se fazer isso:

1linguagens = ['Python', 'PHP', 'C#', 'PowerBuilder', 'Cobol']
2tamanho = len(linguagens)
3indices = range(tamanho)
4
5for i in indices:
6    print(linguagens[i])

No código acima, pegamos o tamanho do vetor (utilizando a função len), depois criamos um vetor numérico sequencial (utilizando a função range).

Depois disso, basta acessar as posições dos vetores.

O próximo exemplo demonstra uma maneira mais simples de fazer isso:

1linguagens = ['Python', 'PHP', 'C#', 'PowerBuilder', 'Cobol']
2
3for i, valor in enumerate(linguagens):
4    print("Linguagem: " + valor)
5    print("Indice: " + str(i))

No fonte acima, utilizamos a função enumerate, que vai retornar um vetor de iterators.

Pode ser que a sua necessidade para criar um loop venha da quantidade de vezes que você precisa repetir uma determinada ação. Neste caso, podemos utilizar a função range.

1for i in range(10):
2    print(i)

O fonte acima fará o python mostrar no console números de 0 a 9, totalizando 10 números. Se você precisar fazer repetir n vezes uma ação, utilize o range(n) para gerar o número correto de loops.

Loop de duas (ou mais) listas ao mesmo tempo:

Outra coisa que o Python resolve muito bem é realizar a iteração entre diversas listas ao mesmo tempo.

Considere as seguintes listas:

1lista_1 = [ "bacon", "fritas", "picanha" ]
2lista_2 = [ "cerveja", "refri", "suco" ]

Para realizar uma iteração com as duas listas, basta utilizar a função zip:

1for alimento, bebida in zip(lista_1, lista_2):
2    print(alimento, bebida)

Pronto. Feita a interação. Porém, existe um cuidado para se tomar, quando utilizamos esta função.

O Python considera a menor lista informada para fazer a iteração conjunta, ou seja, se a lista_1 possuir 3 itens, mas a lista_2 possuir apenas 1 item, o loop terá apenas 1 repetição.

Realizando iterações em um dicionário:

Dicionários no Python são extremamente úteis, mas eles exigem um cuidado extra.

Considere o dict abaixo:

1lista = {
2    "alimento": "Bacon",
3    "veiculo": "Carro",
4    "animal": "Cachorro",
5    "bebida": "Cerveja"
6}

Veja o que acontece se fizermos uma iteração simples?

1>>> for item in lista:
2...    print(item)
3
4alimento
5veiculo
6animal
7bebida

Então… esta iteração não funcionou bem, pois o Python imprimiu as chaves e não os valores. Como resolver isso?

Existem algumas formas…

Primeiro, se você realmente precisar de fazer uma iteração apenas pelas chaves do dicionário, sugiro fazer conforme o exemplo abaixo:

1#Python 3
2for chave in lista.keys():
3    print(chave)
4
5#Python 2
6for chave in lista.iterkeys():
7    print(chave)

Esta sintaxe terá o mesmo resultado da tentativa anterior, mas está mais legível.

Para fazer uma iteração apenas pelos valores do dicionário:

1for item in lista.values():
2    print(item)

Com esta sintaxe, você fará a iteração pelos valores do dict, mas não terá acesso às chaves.

Abaixo está a sintaxe para realizar a iteração pela chave e pelo valor:

1#Python 3
2for chave, item in lista.items():
3    print("%s: %s" % (chave, item))
4
5#Python 2
6for chave, item in lista.iteritems():
7    print "%s: %s" % (chave, item)

Na sintaxe acima, você tem acesso a chave E ao valor de cada item do dicionário. Só para ficar mais simpático o retorno, utilizei a formatação de strings.

Atenção! Em algumas sintaxes fiz uma distinção entre Python 2 e Python 3, pois as funções iterkeys() e iteritems() foram removidas no Python 3 e as funções keys() e items() não existem no Python 2. Cuidado para não trocar as bolas e acabar fazendo seu código não compilar.

Antes de encerrar o assunto dicionario (pelo menos para este update), que tal fazer uma iteração onde você tem o indice do item, a chave E o valor?

1for i, chave, item in zip(range(len(lista)), lista.keys(), lista.values()):
2    print("%d - %s: \t%s" % (i, chave, item))

No fonte acima, utilizamos a função Zip, passando 3 argumentos:

  • range(len(lista)): Criamos um range (explicado acima neste post), passando como argumento dele o tamanho da nossa lista;
  • lista.keys(): Retorna uma lista com as chaves do dicionário;
  • lista.values(): Retorna uma lista com os valores do dicionário;

Para cada iteração deste loop, será impresso o índice, a chave e o valor. Ficará algo do tipo:

10 - alimento: 	Bacon
21 - veiculo: 	Carro
32 - animal: 	Cachorro
43 - bebida: 	Cerveja

Como sair do loop:

Para sair do Loop, utilize o comando break. Ele vai sair tanto do loop while quanto do for.

"Pular" uma repetição do loop:

Para pular uma das repetições do loop, utilize o comando continue.