Buscar

aula02-python-iteracoes pdf

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de programação
Programação Orientada a Objetos
Python - Laços e Iterações
Repetição de Instruções
Programa:
n = 5
while n > 0 :
 print n
 n = n – 1
print 'Fim!'
print n
n > 0 ?
Laços (repetição de instruções) têm variáveis que a cada 
iteração do laço mudam seu valor. Muitas vezes uma 
sequência de números passam por essas variáveis de iteração..
Não
print 'Fim'
Sim
n = 5
print n
Saída:
5
4
3
2
1
Fim! 
0
 n = n -1
Um Laço Infinito
n = 5
while n > 0 :
 print 'Ação’
 print 'Reação'
print 'Fim!'
n > 0 ?
Não
print 'Fim!'
Sim
n = 5
print 'Ação'
print 'Reação'
O que está errado com esse laço?
Outro Laço
n = 0
while n > 0 :
 print 'Ação’
 print 'Reação'
print 'Fim!'
n > 0 ?
Não
print 'Fim!'
Sim
n = 0
print 'Ação'
print 'Reação'
O que este laço faz?
Saindo de um Laço de repetição
• O comando break finaliza o laço atual e salta imediatamente para a 
primeira instrução após o laço de repetição.
• Como um teste de repetição que pode ocorrer em qualquer parte 
dentro da estrutura do laço.
> Olá 
Olá
> terminou
terminou
> concluido
Concluido!
while True:
 linha = raw_input('> ')
 if linha == 'concluido' :
 break
 print linha
print 'Concluido!'
Saindo de um Laço de repetição
• O comando break finaliza o laço atual e salta imediatamente para a 
primeira linha de instrução após o laço de repetição.
• Como um teste de repetição que pode ocorrer em qualquer parte 
dentro da estrutura do laço.
> Olá 
Olá
> terminou
terminou
> concluído
Concluído!
while True:
 linha = raw_input('> ')
 if linha == 'concluído' :
 break
 print linha
print 'Concluído!'
True ?
Não
print 'Concluído'
Sim
....
...
break
while True:
 linha = raw_input('> ')
 if linha == 'concluído' :
 break
 print linha
print 'Concluído!'
Finalizando uma iteração com 
continue
O comando continue finaliza a iteração (repetição) atual e salta 
para o inicio do laço começando a próxima iteração.
while True:
 linha = raw_input('> ')
 if linha[0] == '#' : 
 continue
 if linha == 'concluído' :
 break
 print linha
print 'Concluído!'
> olá
olá
> # não imprima isto
> imprima isto!
imprima isto!
> concluído
Concluído!
Finalizando uma iteração com 
continue
O comando continue finaliza a iteração (repetição) atual e salta 
para o inicio do laço começando a próxima iteração.
> olá
olá
> # não imprima isto
> imprima isto!
imprima isto!
> concluído
Concluído!
while True:
 linha = raw_input('> ')
 if linha[0] == '#' : 
 continue
 if linha == 'concluído' :
 break
 print linha
print 'Concluído!'
True ?
Não
print 'Concluído'
Sim
...
....
continue
while True:
 linha = raw_input('> ')
 if linha[0] == '#' : 
 continue
 if linha == 'concluído' :
 break
 print linha
print 'Concluído!'
Laço de Repetição Condicional
• Um laço de repetição pode ser chamado de “Condicional” porque 
continuam rodando até que uma condição lógica torna-se False
• Os laços que temos vistos até agora são bastante fáceis de examinar 
e perceber se eles são finitos ou são “laços infinitos”.
• Algumas vezes é um pouco mais difícil ter certeza se o laço terá um 
fim.
Laço de Repetição Incondicional
• Frequentemente temos uma lista de itens alinhados em arquivo - 
que são na verdade um conjunto finito de coisas
• Pode-se escrever um laço de repetição para rodar o laço uma vez 
para cada item do conjunto utilizando o comando for 
• Estes laços são chamados “laços de repetição incondicionais” 
porque eles executam por um determinado número de vezes
• Dizemos que “laço de repetição itera sobre os membros de um 
conjunto”
Laço de Repetição Incondicional 
Simples
for i in [5, 4, 3, 2, 1] :
 print i
print 'Lançar!'
5
4
3
2
1
Lançar!
Um laço de Repetição 
Incondicional com Strings
friends = ['Joseph', 'Glenn', 'Sally']
for friend in friends : 
 print 'Feliz Ano Novo:', friend
print 'Done!'
Feliz Ano Novo: Joseph
Feliz Ano Novo: Glenn
Feliz Ano Novo: Sally
Concluído!
Laço de Repetição Incondicional 
Simples
for i in [5, 4, 3, 2, 1] :
 print i
print 'Lançar!'
5
4
3
2
1
Lançar!
concluído
?
Sim
print 'Lançar!'
print i
Não
Siga em frente
Laço de repetição incondicional (for) tem variavéis de 
iteração explícitas que mudam cada iteração do laço. Estas 
variáveis de iteração percorrem a sequência ou conjunto. 
Olhando para In (dentro)...
• A variável de iteração “repete” 
os sucessivos valores da 
sequência (conjunto 
ordenado)
• O bloco (corpo) de código é 
executado uma vez para cada 
valor in (dentro) da sequência
• A variável de iteração move 
por todos os valores in 
(dentro) da sequência
for i in [5, 4, 3, 2, 1] :
 print i
Variável de 
Iteração
Sequência com cinco 
elementos
Concluído
?
Sim
print i
Não
Siga em frente
for i in [5, 4, 3, 2, 1] : 
 print i
• A variável de iteração “repete” 
os sucessivos valores da 
sequência (conjunto 
ordenado)
• O bloco (corpo) de código é 
executado uma vez para cada 
valor in (dentro) da sequência
• A variável de iteração move 
por todos os valores in 
(dentro) da sequência
Concluído
?
Sim
print i
Não
Siga em frente
print i
i = 5
print i
i = 4
print i
i = 3
print i
i = 2
print i
i = 1
for i in [5, 4, 3, 2, 1] :
 print i
Laços de Repetição Incondicional
• Muitas vezes temos uma lista onde os itens são linhas em um 
arquivo - efetivamente um conjunto finito de coisas.
• Podemos escrever um laço de repetição para rodar o laço uma vez 
para cada um dos itendentro do conjunto utilizando o construtor 
Python for
• Estes laços são chamados “laços de repetição incondicional” porque 
eles executam em número exato de vezes.
• Dizemos que “laços de repetição incondicional itera pelos membros 
de um conjunto”
Idiomas dos Laços:
O Que Fazemos em Laços
Nota: Mesmo que estes exemplos sejam simples, o 
padrões se aplicam em todos os tipos de laços.
Fazendo laços “inteligentes” 
O truque é “saber” alguma coisa 
sobre todo o laço de repetição 
quando você está emperrado 
escrevendo um código que 
somente vê uma entrada por vez
Definir algumas variáveis 
para valores iniciais
Procure por algo ou faça 
alguma coisa em cada 
entrada separadamente, 
atualize uma variável
for objeto in dados:
Dê uma olhada nas variáveis
Iterando através de um Conjunto
print 'Antes'
for objeto in [9, 41, 12, 3, 74, 15] :
 print objeto
print 'Depois'
$ python 
basicloop.py
Antes
9
41
12
3
74
15
Depois
Qual é o Maior Número?
3
Qual é o Maior Número?
maior_ate_agora -1
41 12 9 74 15
Encontrando o maior valor
maior_ate_agora = -1
print 'Antes', maior_ate_agora
for o_num in [9, 41, 12, 3, 74, 15] :
 if o_num > maior_ate_agora :
 maior_ate_agora = o_num
 print maior_ate_agora, o_num
print 'Depois', maior_ate_agora
$ python largest.py
Antes -1
9 9
41 41
41 12
41 3
74 74
74 15
Depois 74
Fizemos uma variável que contêm o maior valor que vimos até agora. Se o número atual 
que estamos olhando é maior, ele será o novo maior valor que vimos até agora..
Contado em um Laço
zork = 0
print 'Antes', zork
for thing in [9, 41, 12, 3, 74, 15] :
 zork = zork + 1
 print zork, thing
print 'Depois', zork
$ python countloop.py
Antes 0
1 9
2 41
3 12
4 3
5 74
6 15
Depois 6
Para contar quantas vezes executamos o laço, introduzimos um contator como 
uma variável inicializada com 0 e adicionamos and we add um cada vezes que 
passa pelo laço.
Somando em um Laço
zork = 0
print 'Antes', zork
for coisa in [9, 41, 12, 3, 74, 15] :
 zork = zork + coisa
 print zork, coisa
print 'Depois', zork
$ python countloop.py 
Antes 0
9 9
50 41
62 12
65 3
139 74
154 15
Depois 154
Para adicionar valores encontrados em um laço, acrescentamos uma a variável soma 
inicializada com zero e a cada passagem pelo laço adiciona o valor à soma .
 Valor médio em Laço
conta = 0
soma = 0
print 'Antes', conta, valor
for value in [9, 41, 12, 3, 74, 15] :conta = conta + 1
 soma = soma + value
 print conta, soma, value
print 'Depois', conta, soma, soma/conta
$ python averageloop.py 
Antes 0 0
1 9 9
2 50 41
3 62 12
4 65 3
5 139 74
6 154 15
Depois 6 154 25
Uma média utiliza os padrões de contagem e soma e então os 
dividem depois de completado o Laço.
Filtro em um Laço
print 'Antes'
for value in [9, 41, 12, 3, 74, 15] :
 if value > 20:
 print 'Número maior',value
print 'Depois'
$ python search1.py 
Antes
Número maior 41
Número maior 74
Depois
Usamos uma declaração if em um laço para capturar / 
filtrar o valor que estamos procurando.
Busca usando variável Booleana 
found = False
print 'Antes', found
for value in [9, 41, 12, 3, 74, 15] : 
 if value == 3 :
 found = True
 print found, value
print 'Depois', found
$ python search1.py 
Antes False
False 9
False 41
False 12
True 3
True 74
True 15
Depois True
Se somente queremos buscar e saber se um variável foi encontrada, usamos uma 
variável com valor inicial False e mudamos para True assim que encontramos o 
que estávamos procurando.
Qual é o Menor Número?
9
Qual é o Menor Número?
smallest_so_far -1
41 12 3 74 15
9
Qual é o Menor Número?
None
41 12 3 74 15
smallest_so_far
smallest = None
print 'Antes'
for value in [9, 41, 12, 3, 74, 15] :
 if smallest is None : 
 smallest = value
 elif value < smallest : 
 smallest = value
 print smallest, value
print 'Depois', smallest
$ python smallest.py 
Antes
9 9
9 41
9 12
3 3
3 74
3 15
Depois 3
Sempre temos uma variável que é a menor até o momento. A primeira passagem pelo 
Laço smallest é None, então smallest recebe o primeiro valor que pegamos.
Encontrando o menor valor
Os Operadores “is” e “is not”
• Python tem um operador is que 
pode ser utilizado em expressões 
lógicas
• Significa “é o mesmo que”
• Similar, mas mais forte que ==
• is not também é um operador 
lógico.
smallest = None
print 'Antes'
for value in [3, 41, 12, 9, 74, 15] :
 if smallest is None : 
 smallest = value
 elif value < smallest : 
 smallest = value
 print smallest, value
print 'Depois', smallest
• Laço While (indefinido)
• Laço infinito
• Usando break
• Usando continue
• Laço For (definido)
• Variável de iteração
• Idioma dos Laços
• Maior ou menor
Summary
Acknowledgements / Contributions
These slides are Copyright 2010- Charles R. Severance 
(www.dr-chuck.com) of the University of Michigan School of 
Information and open.umich.edu and made available under a 
Creative Commons Attribution 4.0 License. Please maintain this 
last slide in all copies of the document to comply with the 
attribution requirements of the license. If you make a change, 
feel free to add your name and organization to the list of 
contributors on this page as you republish the materials.
Initial Development: Charles Severance, University of Michigan 
School of Information
...Estes slides estão protegidos por direitos autorais ( Copyright 
2010)- Charles R. Severance (www.dr-chuck.com) da Escola de 
Informação da Universidade de Michigan e open.umich.edu e 
disponibilizado sob uma licença Creative Commons Attribution 
4.0 . Por favor mantenha este último slide em todas as cópias 
do documento em conformidade com os requisitos de atribuíção 
da licença. Se você efetuou uma alteração, sinta-se livre para 
adicionar seu nome e organização na lista de contribuidores 
nesta página ao republicar o material. 
Desenvolvimento inicial: Charles Severance, University of 
Michigan School of Information
Tradução para Português (Brazil) - Valquiria Fenelon Pereira 
http://www.dr-chuck.com
http://open.umich.edu/
http://www.dr-chuck.com
http://open.umich.edu/

Continue navegando