Universidade do Estado do Rio de Janeiro
Instituto de Química
Prof André Luís Alberton
Índice

Loops¶

As estruturas de repetição no python podem ser do tipo for e while.

Estrutura for¶

A estrutura for faz com que o contador assuma todos os valores em lista, conjunto, tupla, range ou até mesmo textos. Considere os exemplos:

# em uma lista
for i in ['a','b','c']:
    print(i)
# em uma conjunto
for i in {'a','b','c'}:
    print(i)
# em uma tupla
for i in ('a','b','c'):
    print(i)
# em um string
for i in ('abc'):
    print(i)

Em todos estes casos o resultado gerado é:

a
b
c

Se a sequência for um range, ela é obrigatoriamente numérica.

# em um range, informado apenas o limite superior (que não é incluído)
for i in range(3):
    print(i)

Que gera os resultados:

0
1
2

Outraa formas de range está apresentada abaixo (com início, fim e passo)

# em um range, informado o ínicio, fim e passo (o fim não é incluído)
for i in range(4,12,2):
    print(i)

Que gera os resultados:

4
6
8
10

Estrutura while¶

É absolutamente análoga ao for; contudo, possui uma inicialização do contador e atualização do contador (ou outro critério de parada).

i = 1 # inicialização do contador
while i<5:
    print(i)
    i=i+1 # atualização do contador

Que retorna os resultados

1
2
3
4

Os comandos continue, break e pass¶

Os comandos break, continue e pass na estrutura dos loops com os seguintes objetivos:

  • continue - não executa as linhas de comando abaixo do loop passa para a próxima iteração
  • break - sai do loop
  • pass - usado quando o loop não contiver procedimentos e ficaria vazio, o que não seria permitido.

No exemplo abaixo, o comando continue faz com que, quando i==3, não se executa a linha de imprimir (i) (que está abaixo do continue), e continua o loop a partir do próximo contador.

  • Na estrutura while a seguir
i = 0
while i<=5:
    i = i+1
    if i==3:
        continue
    print(i)

O programa retorna:

1
2
4
5
6


O comando break nos casos abaixo, quando i==3, faz com que se interrompa a execução do loop e (saindo do loop).

  • Na estrutura while a seguir
i = 0
while i<=5:
    i = i+1
    if i==3:
        break
    print(i)
  • Ou no caso da estrutura for a seguir
for i in range(1,7):
    if i==3:
        break
    print(i)

Nos dois casos, o programa retorna:

1
2


O comando pass é usado para não deixar o loop em branco (o que não seria permitido).

for i in range(1,7):
    pass

Loops implícitos¶

No python, é possível montar loops implícitos, retornando um gerador de listas. A sintaxe é a seguinte:

(procedimento  for elemento in conjunto)

No procedimento não é possível atribuir uma variável; contudo, é possível computar um resultado a partir do contador. Os resultados serão armazenados na lista de saída.


Exemplo
Por exemplo, suponha que se tenha uma lista [2,3,4] que queiramos multiplicar cada elemento por 2. Na estrutura de loop implícito, podemos escrever:

lista = [3,4,5]
list(2*i for i in lista)

Para cada elemento i da lista ele irá multiplicar por 2*i, e retornar a lista com os estes valores. Ele retorna

[6,8,10]


Exemplo
Suponha que tenhamos uma lista lista = [3,4,5,6,7,8] que queremos saber se todos são pares. A função int(i/2)==i/2 pergunta se o inteiro da divisão do i/2 é igual ao número i/2; se isto ocorrer o número é par. Para perguntar se toda a lista é par, fazemos:

lista = [3,4,5,6,7,8]
list(int(i/2)==i/2 for i in lista)

Ele retorna:

[False, True, False, True, False, True]

Exemplo

Outro exemplo é a geração de vetores linearmente espaçados entre dois limites (a,b), com n pontos de espaçamento.

a =5;b = 7; n = 8; #limites inferior, superior e número de pontos
dx = (b-a)/(n-1) # calcula o espaçamento
lista  = list(a+i*dx for i in range(n)) # cria uma lista igualmente espaçada
print(lista)

O resultado gerado é

[5.0, 5.285714285714286, 5.571428571428571, 5.857142857142857, 6.142857142857142, 6.428571428571429, 6.714285714285714, 7.0]