Covil Do Dev

Loops em Python: estruturas de repetição(for e while)

Aprenda a realizar laços de repetição em Python, como funciona o for e o while e exemplos práticos de como utilizar e qual escolher para resolver diferentes problemas.


Lindomar Rodrigues
Lindomar Rodrigues

Atualizado

As estruturas de repetição for e while do Python são responsáveis por fazer algo que na ciência da computação é normalmente chamado iteração.

Iteração

Iteração(“Iteration”) significa que um bloco de código será executado repetidas vezes.

A implementação de uma estrutura de iteração é comumente chamada loop.

Existem dois estilos de iteração: indefinida e definida.

Iteração indefinida

Também chamada indeterminada, significa que a quantidade de vezes que o bloco de código será executado não está previamente definida, o código será executado enquanto uma condição não for atendida.

Em Python a estrutura while é utilizada nesses casos, traduzindo do inglês, while significa “enquanto”.

Iteração definida

Também chamada determinada, significa que a quantidade de vezes que o bloco de código será executado já está previamente definida quando o loop for iniciado.

Em Python, a estrutura for é utilizada nesses casos, traduzindo do inglês, for significa “para”.

Utilizando o while em Python

A estrutura while é muito útil, um exemplo básico de como utilizar está apresentado logo abaixo:

contador = 0

while contador <= 5:
    contador += 1 
    print(contador)

Nesse exemplo, a variável contador foi iniciada com 0, em cada iteração será adicionado um ao seu valor e será exibido na tela logo em seguida, esse bloco será executado enquanto contador for menor ou igual a cinco.

A verificação é realizada ao final de cada execução do bloco de código dentro do while.

break: encerrando a execução do while

O operador break em Python é utilizado para interromper o loop imediatamente, poderíamos refazer o exemplo mostrado anteriormente utilizando o break da seguinte forma:

contador = 0

while contador:
    contador += 1
    print(contador)
    
    if contador <= 5:
        break

O resultado ao executar o código será o mesmo.

continue: pulando uma iteração do while

A utilização do continue é semelhante ao break, porém o loop não é encerrado, apenas a execução daquela iteração é encerrada.

Caso queiramos não executar o print caso o contador seja 2, poderíamos realizar da seguinte forma:

contador = 0

while contador <= 5:
    contador += 1

    if contador == 2:
        continue

    print(contador)

Nesse caso, quando o contador for igual a dois a iteração é finalizada e a execução retorna para o início do bloco, sem exibir o contador.

Loop infinito

Às vezes temos como objetivo executar um bloco de código uma quantidade indefinida de vezes, ou seja, realizar uma repetição que teoricamente nunca será finalizada.

Observe o exemplo abaixo que irá exibir a hora atual a cada 5 segundos.

import datetime
import time

while True:
   print(datetime.datetime.now())

   time.sleep(5)

Para finalizar a execução do programa basta apertar CTRL e C simultaneamente no teclado.

Qual a utilidade disso? Bem, desse exemplo acima nenhum, mas essa forma de utilização do while é extremamente comum.

Às vezes um código necessita ser executado como um serviço, ou seja, será inicializado com a máquina e irá executar um bloco de código específico a cada tempo pré-determinado até o desligamento da máquina.

Loop while em uma linha

Um while pode ser definido em apenas uma linha de código, isso pode ser bastante útil em alguns casos, pois permite simplificar o código.

cont = 0

while cont <= 5: cont += 1

Para executar duas instruções, o ponto e vírgula(;) pode ser utilizado separando as instruções, no exemplo utilizaremos para exibir a variável cont na tela.

cont = 0

while cont <= 5: cont += 1; print(cont)

Mesmo que seja possível utilizar para lógicas mais complexas, isso não é recomendado e nem incentivado, o ideal é utilizar a definição em uma linha apenas para lógicas simples, como chamar apenas uma função ou exibir uma informação no terminal.

Utilizando o for em Python

O for é a forma de iteração definida padrão do Python.

Assim como em outras linguagens, existem alguns padrões de formas de utilizar a iteração definida adotada por várias linguagens, porém Python abstrai todas e simplifica em uma única sintaxe que será constatado no decorrer deste tópico.

Algumas coisas demonstradas na seção sobre while também se aplicam ao for, como a instrução break e continue, então estes tópicos não serão repetidos nessa seção sobre o for.

Percorrendo uma sequência de números

Percorrer uma sequência de números é extremamente útil, e talvez seja a forma de utilização do for mais comumente vista em códigos em Python.

Para percorrer e exibir os números de um a cinco, poderíamos efetuar da seguinte forma:

for i in range(5):
   print(i)

Foi utilizado a função range com apenas um parâmetro sendo fornecido, nesse caso a contagem será iniciada em 0 e irá até 5, adicionando 1 a i em cada execução.

Caso o objetivo seja iniciar a contagem em 1, basta fazer conforme o exemplo abaixo:

for i in range(1, 5):
   print(i)

Um terceiro parâmetro também pode ser fornecido, esse parâmetro é denominado passo.

O passo padrão é 1, mas caso queira que a contagem seja feita adicionando 2 a i em cada execução, o código ficará da seguinte forma:

for i in range(1, 5, 2):
   print(i)

Percorrendo uma lista

O for também pode ser utilizado para percorrer uma lista em Python.

numeros = [897, 412, 314, 19, 7]

for numero in numeros:
   print(numero)

Percorrendo um dicionário

Por mais que seja menos comum, também é possível percorrer um dicionário com for.

Uma forma simples de executar essa tarefa está no exemplo abaixo:

dicionario = {'site': 'covil do dev',
          'autor': 'Lindomar Rodrigues'}

for chave in dicionario:
   print(f"{chave} --> {dicionario[chave]}")

Além dessa existem diversas outras formas de iterar sobre um dicionário com o for, para não duplicar conteúdo recomendo seriamente este artigo completo sobre dicionários em Python, que abordou várias formas de iteração sobre dicionários.