1
Lgica de Programao
com Python
por Nilo Menezes
http://www.nilo.pro.br/python/
Python 2.7 requer PyGame Atualizada em 30/10/2012
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Objetivos Introduzir os conceitos de programao
Apresentar as principais estruturas de dados
Construir programas exemplo
Utilizar uma linguagem de programao (Python)
2 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Voc
Apresentao oNome
oCurso
oO que j sabe?
oO que espera do curso?
oAprender lgica para
que?
3 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Por que programar
difcil?
4 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
O que fazer ?
5 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Por que
Python?
6 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 1
Faa uma descrio em portugus de
como desligar o
computador.
7 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Uma abordagem grfica A programao de computadores
intimamente relacionada com a
matemtica e diversos problemas
computacionais.
Uma abordagem grfica sugerida para facilitar a introduo aos principais
conceitos.
8 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Para desenhar, precisamos definir um sistema de coordenadas para
corretamente identificar os pontos de um
desenho.
Sistema de coordenadas
Utilizaremos daqui para frente coluna e linha para indicar uma posio.
5 x 10 significa: coluna 5, linha 10
9
Uma abordagem grfica
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Uma abordagem grfica Um ponto
ponto(coluna, linha)
Trs pontos
ponto(1,1)
ponto(1,2)
ponto(1,3)
10 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 2 Faa um programa para desenhar uma linha
vertical numa tela de 5x5
11 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 3 Faa um programa para desenhar uma linha
horizontal numa tela de 5x5
12 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 4 Faa um programa para desenhar uma linha
diagonal numa tela de 5x5
13 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 5 Faa um programa para desenhar um tringulo
14 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 6 Faa um programa para desenhar um quadrado
15 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 7 Faa um programa para desenhar uma casa em
20x20
16 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tipos de Dados
Uma das principais funes de um programa a manipulao de dados.
Para entendermos corretamente como faz-lo, precisamos entender os tipos de dados e suas
diferenas.
17 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tipos de Dados
Nmrico o Inteiros (1, 2, 3...)
oPonto Flutuante ( 1.14, 3.1415, 5.0)
18 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tipo Literal Composto por letras e nmeros
Escrito entre aspas
A = texto
No confundir A com A
A a varivel A
A o literal A
19 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tipos de Dados
Lgico o Verdadeiro
o Falso
Estes valores tambm so
chamados de booleanos.
20 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operadores Aritmticos + Adio
- Subtrao
* Multiplicao
/ Diviso
Em expresses mantm-se a prioridade das operaes como na matemtica.
Parnteses () podem ser usados para alterar esta ordem.
21 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operadores Lgicos No
E
Ou
Operadores lgicos so utilizados para modificar valores como verdadeiro e falso, criando expresses lgicas.
O resultado das operaes definido pelas chamadas tabelas-verdade de cada operador
22 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operador No
Valor No Valor
Verdadeiro Falso
Falso Verdadeiro
23 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operador E
A B A e B
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Falso Verdadeiro Falso
Falso Falso Falso
24 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operador Ou
A B A ou B
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso
25 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Prioridade de Avaliao Quando mais de um operador fizer
parte de uma sentena, necessrio
seguirmos a seguinte ordem: no, e,
ou.
Para operadores aritmticos, utiliza-se o padro da matemtica:
1) Multiplicao e Diviso
2) Adio e Subtrao
26 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 8
Sendo A verdadeiro e B falso, resolva:
a) A e B
b) B e no A
c) A ou B
d) A e B ou no B
e) no B
27 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operadores Relacionais
== Igualdade
> Maior que
< Menor que
>= Maior ou igual
Prioridade de Operaes Havendo vrios tipos de
operadores em um
expresso, executam-se
nesta ordem: 1. Aritmticos
2. Relacionais
3. Lgicos
29 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 9
Resolva: a) 5 * 4 < 4 + 3
b) 6 * 2 1 > 3 * 1
c) 9 4 / 2 = 8
30 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Variveis So nomes usados para representar valores
Possuem um tipo de dados
S podem armazenar um valor de cada vez
Devem ter nomes comeando com letras ou _. Podem conter nmeros, exceto no
primeiro caractere
31 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Atribuio Varivel = expresso
Exemplo:
A = verdadeiro
B = 5 * 3
C = A e B
D = B * A 2 > 4
A atribuio a operao que modifica o valor de uma varivel.
importante notar que se atribui o resultado da expresso a varivel e no a expresso em si.
32 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Seqncia Uma seqncia de instrues ou comandos se
executa de cima para baixo.
A = 4
B = 5
C = A + B
A = 10 No final, A vale 10, B vale 5 e C vale 9.
Observe que o valor de C no foi alterado pelo novo valor de A
33 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Coordenadas Relativas Podemos definir um
desenho ou forma atravs de coordenadas relativas a um ponto. Imagine A,B como sendo as coordenadas de um ponto.
O ponto ao lado A+1,B
O ponto abaixo A, B+1
34 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 10a Defina os quatro
pontos que formam os cantos de um quadrado usando trs variveis.
Uma para a linha, outra para a coluna superior esquerda.
A terceira deve conter o tamanho do lado.
35 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 10b Defina um tringulo
de altura L.
Defina-o usando A,B como o ponto
da esquerda e
depois faa para os
outros dois pontos
36 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 10c
37
Escreva um programa para desenhar o
grfico ao lado.
Utilize coordenadas relativas, considerando
A,B o primeiro ponto.
As letras indicam a questo e o ponto que
deve ser usado como
referncia.
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Sada Instruo que indica a exibio de informao,
normalmente na tela
Escreva Al !!!
Utilizada tambm para exibir o contedo de variveis e o resultado de expresses.
Escreva A
Escreva 2 * 5
38 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Decises Decidir o que fazer com base em um
resultado lgico
Consiste na escolha do que fazer, dependendo de uma condio
Nem tudo segue uma ordem fixa
Presente na maioria dos problemas
39 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Decises A deciso composta de uma condio e um ou
dois resultados. Um para o caso da condio ser
verdadeira e outro caso falso.
Se a > b: Escreva a maior que b
Seno: Escreva a menor ou igual a b
40 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Repetio Utilizada para delimitar um nmero de
instrues ou comando que deve ser
executado mais de uma vez.
Utiliza uma condio para determinar se deve continuar a repetir (verdadeiro) ou
no (falso).
41 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exemplo de repetio
A = 1
Enquanto A < 10:
Escreva A
A = A + 1
42 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Entradas So pontos onde se pede a informao de um
valor
Leia A
43 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 11 Escreva um programa que pea 2
nmeros e exiba o maior deles.
44 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 12 Escreva um programa que pergunte
um nmero e escreva a tabuada de
multiplicar deste (1 at 10)
Reescreva o programa anterior, desta vez perguntando o limite inferior e
superior da tabela
45 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Python e Lgica Fica mais difcil separar Python de
Lgica
Introduo ao IDLE
Digitando programas
46 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Expresses Lgicas Em Python, os
operadores relacionais
so iguais aos
aprendidos em Lgica,
exceto pelo fato de
estarem escritos em
ingls.
Lembre-se sempre em minsculas.
Lgica Python
No not
E and
Ou or
47 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operadores Relacionais
> Maior == Igualdade
< Menor Diferente
= Maior ou igual
48 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operadores Aritmticos Operadores
* Multiplicao
/ Diviso
+ Adio
- Subtrao
** Exponenciao
49 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Escrevendo print Al mundo!
Imprime Al mundo! na tela
print O valor de %d x %d %d % (3,4,12)
Neste exemplo, %d como uma lacuna onde preencheremos em ordem. O 3 para o primeiro, 4 para o segundo e 12 para o terceiro.
50 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Escrevendo %d s funciona para valores inteiros
%s deve ser utilizado para valores literais
print Seu nome %s % (Jos)
Veja que o % aqui usado apenas para separar a mensagem com mscara dos valores que sero utilizados entre parnteses.
51 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Escrevendo
print Seu nome %s e voc tem %d anos % (Jos, 18)
52
Seu nome Jos e voc tem 18 anos
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Lendo A leitura em Python especial:
C = raw_input(Digite o valor de C)
Digite o valor de C ser impresso antes de pedir a digitao do valor.
raw_input sempre retorna um valor literal
53 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Lendo Valores inteiros:
tamanho = input(Digite o tamanho:)
Ou
Tamanho = int (raw_input(Digite o tamanho:))
54
Converso de tipo
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tipos Utiliza-se a funo type para saber o tipo de uma
expresso.
print type(1)
print type(2.0)
print type(Al)
55 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Repetio
Lgica Python
A=1
enquanto A
Repetio O bloco ser repetido enquanto a
condio for verdadeira.
Aps a ltima linha do bloco, a execuo volta para a linha do while
onde a condio ser novamente
avaliada.
57 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Repetio
58
A = 1
A < 5
A = A +1
A
Sim
No
INCIO
FIM
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Definindo funes Voc pode definir ou criar suas prprias funes.
def quadrado(a,b,c,d):
p = a
while p
Definindo Funes quadrado(10,8,20,15)
quadrado(a,b,c,d)
60
Seria o mesmo que:
a = 10
b = 8
c = 20
d = 15
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Cores Em Python, utiliza-se RGB (Red, Green, Blue) para
definirmos as cores.
(255, 0, 0) Vermelho
(0, 255, 0) Verde
(0, 0, 255) Azul
(255,255,0) Amarelo
(255,255,255) Branco
(0,0,0) Preto
61 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Condies O se da lgica vira if
e o seno else.
Lgica Python
se a>b:
escreva a
seno:
escreva b
if a>b:
print a
else:
print b
62 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Condies
63
A>B
A
B
Verdadeiro
Falso
Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
O utilitrio de desenho Visite o site:
http://www.nilo.pro.br/python/
Baixe os arquivos tela.py e graficos.py
tela.py o programa grfico em si.
Execute-o.
Uma janela com grade dever aparecer
64 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
graficos.py Este mdulo possui uma srie de funes que
podem ser utilizadas em seus programas.
Abra-o no IDLE.
Execute com F5
Digite: ponto(1,1)
Um ponto vermelho deve aparecer na tela
65 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
graficos.py ponto(x,y)
Exibe um ponto na cor atual na coluna x e linha y
cor(r,g,b) Altera a cor atual para a definida por r,g,b
(red = vermelho, green = verde, blue = azul)
66 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
graficos.py limpa()
Limpa todos os pontos
limpa(t) Limpa todos os pontos, redefinindo o
gradeado para t x t
67 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
graficos.py inicializa()
Estabelece a comunicao com a tela de
desenho. Deve ser o dado antes de qualquer outro
comando de desenho
finaliza() Termina a comunicao com a tela de desenho
68 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Usando o utilitrio Usar a linha de comando muito interessante no
incio, mas gravar seu desenho se torna cada vez
mais importante.
O utilitrio grfico pode ser utilizado em seus programas Python e no apenas pelo interpretador
69 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Usando o utilitrio Crie um novo programa em Python e digite:
from graficos import *
inicializa()
limpa(32)
cor(255,255,0)
ponto(1,1)
finaliza()
70 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 12 Crie uma funo que desenhe a
partir de uma coordenada (x,y): a) Uma rvore
b) Uma casa
c) Um sol
71 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 13 Faa um programa que desenhe
uma paisagem com as funes
do exerccio anterior.
Utilize mais de uma rvore e mais de uma casa em uma tela de
64x64 pontos.
72 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Listas Listas so seqncias de valores
Uma lista pode ter tamanho indeterminado
Uma lista pode ser vazia
Representa-se uma lista em Python atravs de colchetes
A = [ 1, 2, 3]
B = [ ]
73 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas Os elementos de uma lista podem
ser refernciados atravs de um
ndice, comeando com 0 at o
ltimo elemento. B = [1,2,3]
print B[0]
1
print B[2]
3
74 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas append(x)
Adiciona um item ao fim da lista.
B.append(5)
print B
[1,2,3,5]
75 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas len(L)
Imprime o nmero de elementos
da lista L.
C=[10,40,50]
print len(c)
3
76 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas extend(L)
Concatena duas listas
A = [10, 11, 12]
B.extend(A)
print B
[1,2,3,5,10,11,12]
77 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas insert(x,l)
Insere um elemento l antes da posio x
print B
[1,2,3,5,10,11,12]
B.insert(3,4)
print b
[1,2,3,4,5,10,11,12]
78 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas remove(x)
Remove a primeira ocorrncia de x na lista. Resulta em erro caso este no exista.
print B
[1,2,3,4,5,10,11,12]
B.remove(10)
print B
[1,2,3,4,5,11,12]
79 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas pop(i)
Remove o elemento i da lista. Se
usado sem valor pop() retorna o
ltimo elemento da lista. B = [1,2,3,4,5]
B.pop()
5
print B
[1,2,3,4]
80 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas index(x)
Retorna a posio do elemento
cujo valor seja igual ao de x. B = [1,2,3,4,5]
B.index(5)
4
Retorna um erro caso este no exista
81 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas count(x)
Retorna o nmero de vezes que x
aparece na lista.
C = [1,1,2,2,3,3,3,3]
c.count(3)
4
82 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas sort()
Ordena os elementos da lista
D = [ 1,9,8,7]
D.sort()
print D
[1,7,8,9]
83 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes com Listas reverse()
Inverte a ordem dos elementos
da lista.
C = [1,2,3,4,5]
C.reverse()
print C
[5,4,3,2,1]
84 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 14 1. Crie uma lista com nmeros de 1 10
2. Remova o elemento da posio 2
3. Remova o elemento de valor 5
4. Acrescente 11 e 12 ao fim da lista
5. Acrescente 0 no incio da lista
6. Exiba o tamanho da lista
85 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 15 Escreva um programa para:
o ler e imprimir 8 valores lidos do teclado.
o Escrever a mdia e a soma destes valores.
o Imprimir o menor e o maior.
o Utilize um menu para:
1. inserir valores. 2. Calcular mdia 3. Calcular soma 4. Calcular o maior 5. calcular o menor.
Faa cada opo em um funo diferente.
Ao calcular, imprima os resultados.
86 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tipos variados Uma lista pode conter elementos
de tipos diferentes.
Exemplo:
F = [ joo, 15, maria]
G = [ 10, 15, 20, True]
87 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Listas em Listas Uma lista pode conter outra lista.
F = [ 1, 2, 3, [4,5,6]]
print F[3]
[4,5,6]
print len(F(3))
3
print len(F)
4
88 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Listas em Listas Para referenciar um valor de uma
lista dentro de outra lista, utiliza-se
a mesma notao de listas com
mais um ndice.
F = [1,2,3,[4,5,6]]
print F[3][0]
4
89 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Exerccio 16 Faa um programa que utilize
listas para gerenciar uma agenda
de telefones. o A agenda deve guardar nome e telefone de
vrias pessoas.
o Operaes a suportar: incluso, excluso,
alterao, pesquisa, listagem e ordenao.
o Em todos as opes o nome do indivduo ser
utilizado como chave de pesquisa.
o Utilize menu.
90 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Funes com listas range(tamanho)
Cria uma lista de 0 at o valor
especificado em tamanho
menos 1.
range(10)
[0,1,2,3,4,5,6,7,8,9]
91 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Funes com listas range(incio, fim)
Cria uma lista iniciando no valor
especificado em incio e
terminando em fim 1
range(5,10)
[5,6,7,8,9]
92 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Funes com listas range(inicio, fim, incremento)
Igual anterior, mas com
incremento entre os elementos
range(1,10,2)
[1,3,5,7,9]
93 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Funes com listas xrange
Idntica a todas as outras formas
de range, porm otimizada
para listas grandes.
94 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
for Estrutura de repetio que percorre os elementos
de uma lista.
for elemento in lista:
Exemplo: Imprimir todos os elementos
for a in range(10):
print a
95 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Usando Listas como pilhas Uma pilha uma estrutura de dados com
uma poltica de incluso e excluso de
elementos bem definida.
Em pilhas, a incluso sempre feita no topo ou fim, assim como as excluses.
A estrutura similar a uma pilha de pratos.
Coloca-se sempre um sobre o outro e retira-se sempre pelo topo.
96 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Usando Listas como pilhas pilha = [3, 4, 5]
pilha.append(6)
pilha.append(7)
print pilha
[3,4,5,6,7]
pilha.pop()
[3,4,5,6]
pilha.pop()
[3,4,5]
97 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Usando listas como filas Filas so estruturas de dados onde se
insere no fim e retira-se no incio.
uma estrutura similar a uma fila de cinema.
O primeiro que chega o primeiro a entrar.
Os que chegam depois vo para o fim da fila.
98 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Usando listas como filas Fila = [ Joo, Maria]
Fila.append(Jos)
Fila.pop(0)
Joo
print Fila
[ Maria, Jos]
99 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
filter Formato:
filter (funo, lista)
A funo filter aplica a funo passada como parmetro a cada elemento da lista, retornando
uma outra lista onde com os elementos cujo
retorno de funo verdadeiro.
Utilizada para filtrar ou selecionar valores.
100 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
filter
def f(x):
return x % 2 == 0
print filter(f, [0,1,2,3,4,5,6,7,8])
[0,2,4,6,8]
101 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
map Formato:
map(funo, lista)
map funciona de forma semelhante a filter, porm esta retorna uma lista com o retorno de funo aplicada a cada elemento da lista.
Mais de uma lista pode ser passada como parmetro. Neste caso, o nmero de argumentos de funo deve ser igual ao de listas.
102 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
map
def fatorial(x):
if x
map Um caso especial de map passar None como
funo.
Neste caso, map retornar uma lista com os argumentos que seriam passados.
map(None, [1,2,3],[4,5,6])
[(1,4), (2,5), (3,6)]
104 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
reduce Formato:
reduce(funo, lista)
Aplica funo aos elementos da lista.
Na primeira vez, passa o primeiro e o segundo elemento.
Nas prximas, o resultado da chamada anterior com o prximo elemento.
105 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
reduce def mult(x,y):
return x * y
reduce(mult, [1,2,3,4,5])
120
Um terceiro parmetro pode ser passado, indicando o valor inicial.
106 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
del Del utilizada para remover um elemento
de uma lista atravs de seu ndice.
del lista(x)
Remove o elemento x de lista
A = [1,2,3]
del a[0]
print A
[2,3] Del tambm pode ser utilizada para apagar
variveis.
107 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tuplas Tuplas funcionam como e compartilham muitas das
propriedades de listas, porm tuplas no podem
ser alteradas.
Utilizamos ( ) invs de [] para denotar tuplas.
T = ( 1,2,3 )
J = ( joo, maria, jos )
108 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tuplas Uma tupla vazia criada por:
T = ()
Uma tupla com um elemento exige vrgula aps este:
T = ( joo, )
109 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Tuplas Tuplas podem ser usadas para atribuies mltiplas.
Exemplo:
A, B = ( 10, 15 )
equivalente a A = 10 e B = 15
110 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Strings Strings podem ser manipuladas como tuplas.
E assim como tuplas no podem ser alteradas.
Nome = Joo
print Nome[0]
J
111 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Strings Para alterar uma String pode-se convert-la em lista.
S = Joo
SL = list(S)
print SL
[J,o,,o]
112 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Strings Para converter uma lista em string, utilize o mtodo
join da string.
S = S.join(SL)
Embora no possamos alterar strings, nada nos impede de criarmos novas.
S = S + A
113 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Fatias Tuplas, listas e strings suportam um tipo de
operao chamado slicing (fatiamento).
A = [1,2,3,4,5]
print A[0:2]
[1,2]
print A[1:]
[2,3,4,5]
print A[:4]
[1, 2, 3, 4]
114 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Fatias A notao de fatia [inicio:fim] sendo incio
inclusive, mas fim no.
Isto , [1:4] inclui o elemento 1, mas no o elemento 4.
[:] pode ser utilizado para criar uma nova cpia de string ou lista.
Valores negativos indicam que a contagem se inicia do fim da seqncia.
115 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Dicionrios Dicionrios so estruturas de dados que permitem
indexar um elemento atravs de sua chave.
Dicionrios so escritos entre chaves e sempre no formato chave:valor.
Exemplo:
Telefones = { nilo:9717, joana:9784}
116 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Dicionrios Para acessar os valores de um dicionrio,
colocamos a chave entre colchetes, com em listas:
print Telefones[nilo]
9717
117 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Dicionrios O mtodo has_key pode ser utilizado para verificar
se uma chave existe.
Telefones.has_key(nilo)
True
Telefones.has_key(maria)
False
Voc tambm pode obter o mesmo efeito com in:
nilo in Telefones
True
maria in Telefones
false
118 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Dicionrios Para adicionarmos elementos a um dicionrio
basta especificar uma nova chave.
Telefones[maria] = 9784
para listar todas as chaves de um dicionrio, utilizamos o mtodo keys() que retorna uma lista.
print Telefones.keys()
[nilo, joana, maria]
119 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Dicionrios Utiliza-se del para remover um elemento de um
dicionrio.
del Telefones[nilo]
Dicionrios podem ser construdos atravs de uma lista de tuplas e do mtodo dict.
print dict( [ (nilo, 9717),(joana, 9784)])
{ nilo: 9717, joana:9784 }
120 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Dicionrios Utiliza-se o mtodo items para retornar uma lista
com tuplas chave, valor.
print Telefones.items()
[(nilo, 9717), (joana, 9784)
Utiliza-se o mtodo values para retornar um lista com os valores.
print Telefones.values()
[9717, 9784]
121 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes avanadas Criao de listas com notao de funo (List
comprehensions).
[ x * 2 for x in range(5) ]
Cria uma lista [0,2,4,6,8]
122 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Operaes Avanadas - Lambda Funes lambda so semelhantes a funes, mas
no tem nome e podem ser utilizadas como
varivel.
F = lambda x: x+5
print F(4)
9
123 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Arquivos Arquivos so estruturas de dados armazenadas em
disco.
Em Python, utiliza-se a funo open para abrir um arquivo.
F = open(nome_do_arquivo, modo)
print F.readline()
F.close()
124 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Arquivos Modos para abertura de arquivos:
Modo Funo
r Leitura
w Escrita. Apaga caso j exista
a Abre para adicionar ao final (append)
r+ Leitura e escrita
b Indica modo binrio
125 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Arquivos Todo arquivo aberto deve ser
fechado com uma chamada a
close.
126 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Arquivos read(x)
L um deterninado nmero de bytes
(x) retornando como string.
readline()
L e retorna uma linha.
readlines()
Retorna todas as linhas de um arquivo
numa lista.
127 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Arquivos xreadlines()
Semelhante ao xrange, otimizada para ler arquivos
muito grandes.
tell() Retorna a posio corrente no arquivo
seek(posio, referncia) Move o ponteiro do arquivo para posio.
Refncia (0 incio, 1 atual, 2 fim)
128 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Excees Muitas funes em Python fazem o programa
terminar em caso de erro.
Isto acontece porque uma exceo foi gerada.
Excees no tratadas causam o fim do programa.
try:
programa
except:
tratamento
129 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/
Onde aprender mais Visite o site:
http://www.nilo.pro.br/iprog/ para uma verso atualizada e completa do curso de
introduo programao.
130 Nilo Menezes Lgica de Programao http://www.nilo.pro.br/python/