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 linhafor 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]