Ir para o conteúdo

Laços avançados

Laço for sobre elementos em uma lista

Podemos usar o laço for para correr sobre os elementos de uma lista:

Assim como os laços while, as declarações no laço devem ser indentadas!

Simulando um laço for na mão

graus = [0, 10, 20, 40, 100]
for C in graus:
    print C
print 'A lista de graus tem', len(degrees), 'elementos'

Simulando na mão:

  • Primeiro passo: C é 0
  • Segundo passo: C é 10 ...e assim por diante...
  • Terceiro passo: C é 20 ...e assim por diante...
  • Quinto passo: C é 100, agora o laço terminou e o fluxo do programa pula para a primeira declaração com a mesma indentação da linha for C in graus.

Fazendo uma tabela com um laço for

Tabela de graus Celsius e Fahrenheit:

grausC = [-20, -15, -10, -5, 0, 5, 10, 15,
             20, 25, 30, 35, 40]
for C in grausC:
    F = (9.0/5)*C + 32
    print C, F

Nota: print C, F retorna uma saída feia. Use a sintaxe do printf para deixar a formatação em duas colunas:

print '%5d %5.1f' % (C, F)

Saída:

-20  -4.0
-15   5.0
-10  14.0
 -5  23.0
  0  32.0
  ......
 35  95.0
 40 104.0

Transformando for em um while

O laço for:

for elemento in lista:
    ## processa elemento

pode sempre ser transformado em um correspondente laço while:

indice = 0
while indice < len(lista):
    elemento = lista[indice]
    ## processa elemento
    indice += 1

O recíproco nem sempre é verdadeiro

Mas nem todo laço while pode ser expressado como um laço for!

Versão em while do laço para fazer uma tabela

Cgraus = [-20, -15, -10, -5, 0, 5, 10,
            15, 20, 25, 30, 35, 40]
indice = 0
while indice < len(Cgraus):
    C = Cgraus[indice]
    F = (9.0/5)*C + 32
    print '%5d %5.1f' % (C, F)
    indice += 1

Implemente uma somatória usando laço

N = 14

S = 0
for i in range(1, N+1):
    S += i**2

Ou (menos comum):

S = 0
i = 1
while i <= N:
    S += i**2
    i += 1

Lembrete

Somatórios são recorrentes, então lembre-se da implementação!

Armazenando colunas de tabelas como listas

Vamos colocar todos os valores de Fahrenheit também em uma lista:

print Fgraus resulta em:

[-4.0, 5.0, 14.0, 23.0, 32.0, 41.0, 50.0, 59.0, 68.0, 77.0, 86.0, 95.0, 104.0]