Escolar Documentos
Profissional Documentos
Cultura Documentos
Rudson R. Alves
Mestre em Fsica
Prof. na UVV
25/03/10 http://rra.etc.br
Introduo
2
Cronograma
O que Python
Por que Python
Python Bsico
Estruturas de Controle
Excees
Funes
Escopo de Variveis
Funes Pr-definidas
Docstrings
Manipulao de Arquivos
Orientao a Objetos
Importando Mdulos
3
O que Python: Linguagem interpretada
4
O que Python: Linguagem interpretada
Interpretadas:
Python, Perl, Basic tradicional, Shell Script, ...
$ python hello.py
Hello World
5
O que Python: Tipagem dinmica
6
O que Python: Delimitao por indentao
exit()
7
O que Python: Tipos de alto nvel
8
O que Python: Tipos de alto nvel
10
Por que Python
11
Por que Python
12
Python Bsico
13
Python Bsico: O interpretador Python
15
Python Bsico: Criando um programa Python
$ python hello.py
Hello World
$ _
16
Python Bsico: Criando um programa Python
#!/usr/bin/python
# Primeiro programa Python: hello.py
a = Hello
b = World
print a, b
$ chmod +x hello.py
$ ./hello.py
Hello World
$ _
Se tiver dvidas quando a localizao do interpretador
Python, use o comando: which python
17
Python Bsico: Criando um programa Python
$ ./ola.py
File "./ola.py", line 3
SyntaxError: Non-ASCII character '\xe1' in file
./ola.py on line 3, but no encoding declared; see
http://www.python.org/peps/pep-0263.html for details
$ _
Isto ocorre por conta do acento no 'Ol', passado varivel
a. Para adicionar suporte aos caracteres acentuados,
adicione a linha abaixo ao incio do seu programa:
#-*- coding: iso-8859-1 -*-
18
Python Bsico: Criando um programa Python
$ ./ola.py
Ol Mundo
$ _
19
Python Bsico: Tipos numricos
20
Python Bsico: Tipos numricos
Tipagem dinmica:
>>> a = 3 >>> a = 3 + 4j
>>> type(a) >>> type(a)
<type 'int'> <type 'complex'>
>>> a = 3.1415 >>> a.real
>>> type(a) 3.0
<type 'float'> >>> a.imag
>>> a = isto e' uma string 4.0
>>> type(a) >>> abs(a)
<type 'str'> 5.0
22
Python Bsico: Listas []
24
Python Bsico: Listas [] - mtodos
26
Python Bsico: Tuplas ()
27
Python Bsico: Strings
28
Python Bsico: Strings algumas operaes
>>> b = 'klmnopqrst'
>>> a + b
'abcdefghijklmnopqrst'
>>> print a, b
abcdefghij klmnopqrst
>>> c = (a + b).upper()
>>> print c
ABCDEFGHIJKLMNOPQRST
29
Python Bsico: Dicionrios {}
>>> telefones.keys()
['pedro', 'patricia', 'fernanda']
>>> telefones.values()
[33212121, 34000022, 88222298]
>>> telefones.items()
[('pedro', 33212121), ('patricia', 34000022),
('fernanda', 88222298)]
>>> telefones.has_key('alberto')
False
30
Python Bsico: Operadores - aritmticos
>>> 7 + 3 # adio
10
>>> 7 3 # subtrao
4
>>> 8 % 3 # resto da diviso
2
>>> 8 / 3 # diviso inteira
2
>>> 8 / 3. # diviso em ponto flutuante
2.6666666666666665
>>> 8 * 3 # produto
24
>>> 8 ** 2 # exponenciao
64
31
Python Bsico: Operadores - aritmticos
Strings Listas
>>> a = 'bits' >>> a = [5, 6, 7, 8]
>>> a * 2 >>> b = [9, 10]
'bitsbits' >>> print b * 2
>>> print '64 ' + a [9, 10, 9, 10]
64 bits >>> print a + b
[5, 6, 7, 8, 9, 10]
Tuplas
>>> a = (2, 3, 4)
>>> print a + (5, 6)
(2, 3, 4, 5, 6)
32
Python Bsico: Operadores - bits
Cadeias de bits
>>> a = 0x1F
>>> b = 0x01
>>> print a, b
31, 1
>>> a & b # e
1
>>> a | b # ou
31
>>> b << 4 # 4 deslocamentos para a esquerda
16
>>> a >> 4 # 4 deslocamentos para a direita
1
>>> ~a # inverso em complemento de 2
-32
33
Python Bsico: Atribuio e condicionais
>>> a, b = 5, 3; a, b
(5, 3)
>>> 0 < a < b # avaliao feita da esquerda
False
>>> 0 < a > b # para a direita
True
Mais operadores...
>>> nome = 'pedro'
>>> idade = 25
>>> nome == 'pedro' and idade == 25
True
>>> len(nome) < 10 and idade > 30
False
>>> len(nome) < 10 or idade > 30
True
35
Python Bsico: Combinao de operadores
Se a condio for:
verdadeira: 'string_2'
falsa: 'string_1'
>>> pedro_age = 15
>>> jose_age = 20
>>> (Pedro, Jose) [ pedro_age > jose_age ]
'Pedro'
>>> pedro_age = 25
>>> (Pedro, Jose) [ pedro_age > jose_age ]
'Jose'
36
Python Bsico: Operadores %
Nome: Roberta
37
Estruturas de Controle: if
38
Estruturas de Controle: for
39
Estruturas de Controle: for
40
Estruturas de Controle: for
41
Estruturas de Controle: for
42
Estruturas de Controle: while
44
Excees
45
Excees: Tratando excees
46
Excees: Tratando excees
48
Funes
>>> imprime_cardapio(lista_pratos)
Cardapio do dia
Total de pratos: 3
>>>
>>> imprime_cardapio.__doc__
'Procedimento para impressao do cardapio'
>>> imprime_prato.__doc__
'Procedimento para impressao do prato'
50
Funes: argumento com valor padro
51
Funes: argumento com valor padro
>>> segrau(a=4)
(0.0, -0.0)
>>> segrau(b=2, c=4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: segrau() takes at least 1 non-keyword argument (0
given)
53
Funes: conjunto de argumentos
54
Funes: dois conjuntos de argumentos
56
Escopo da Varivel
57
Escopo da Varivel
58
Escopo da Varivel
60
Escopo da Varivel
62
Funes Pr-definidas
63
Funes Pr-definidas
64
Funes Pr-definidas
65
Funes Pr-definidas
68
Funes Pr-definidas: converses
>>> int(12.67)
12
>>> int('12')
12
>>> list('abacate')
['a', 'b', 'a', 'c', 'a', 't', 'e']
>>> tuple('abacate')
('a', 'b', 'a', 'c', 'a', 't', 'e')
70
Funes Pr-definidas: leitura do teclado
72
Docstring: Documentao
def fib2(n):
" Return Fibonacci series up to n "
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
73
Docstring: Documentao
print open.__doc__
open(name[, mode[, buffering]]) -> file object
74
Manipulao de Arquivos: open()
f = open("/etc/fstab")
>>> print f
<open file '/etc/fstab', mode 'r' at 0x7f800b16de00>
Lendo 10 bytes
>>> print '>>%s<<' % f.read(10)
>>/dev/sda5 <<
76
Manipulao de Arquivos: open()
Se buffering for:
0, nenhum buffer ser alocado para o arquivo;
1, um buffer de uma linha ser alocado;
nn, um buffer de nn bytes ser alocado para o arquivo.
>>> f.read()
'Em 23 de outubro de 1906, voou cerca de 60 metros e a uma
altura de dois a tr\xeas metros com seu 14 Bis, no Campo de
Bagatelle em Paris.\nMenos de um m\xeas depois, em 12 de
novembro, repetiu o feito e, diante de uma multid\xe3o de
testemunhas, percorreu 220 metros a uma altura de 6 metros.
\nO v\xf4o do 14-Bis foi o primeiro verificado pelo
Aeroclube ...\n'
78
Manipulao de Arquivos: open()
80
Manipulao de Arquivos: open()
82
Manipulao de Arquivos: open()
>>> f.next()
'Retirado http://pt.wikipedia.org/wiki/Santos_Dumont\n'
>>> f.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
84
Orientao a Objetos
85
Orientao a Objetos: classes
# Define formas
#-*- coding: iso-8859-1 -*-
class Retangulo:
lado_a = None
lado_b = None
def calcula_area(self):
return self.lado_a * self.lado_b
def calcula_perimetro(self):
return 2 * (self.lado_a + self.lado_b)
86
Orientao a Objetos: classes
87
Orientao a Objetos: classes
88
Orientao a Objetos: classes
def calcula_area(self):
return self.lado_a * self.lado_b
def calcula_perimetro(self):
return 2 * (self.lado_a + self.lado_b)
>>> r1.lado_a
2
>>> r1.lado_b
5
89
Orientao a Objetos: classes
90
Orientao a Objetos: classes
91
Orientao a Objetos: herana
92
Orientao a Objetos: herana
class Quadrado(Retangulo):
def __init__(self, lado):
self.lado_a = self.lado_b = lado
93
Orientao a Objetos: herana
94
Orientao a Objetos: herana
95
Orientao a Objetos: herana
96
Orientao a Objetos: funes teis
97
Orientao a Objetos: funes teis
98
Orientao a Objetos
>>> r.__class__
<class formas.Quadrado at 0x2b717bc48770>
99
Orientao a Objetos
>>> r.__module__
'formas'
100
Orientao a Objetos
>>> Quadrado.__bases__
(<class formas.Retangulo at 0x2abc1ac8a710>,)
>>> Quadrado.__name__
'Quadrado'
101
Importando Mdulos
102
Importando Mdulos
Exemplos:
>>> import fibonacci
>>> fibonacci.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> dir()
['__builtins__', '__doc__', '__name__', 'fibonacci']
Nas
Nas sees
sees seguintes,
seguintes, irei
irei apresentar
apresentar diversos
diversos mdulos
mdulos padres
padres
do
do Python.
Python. Para
Para conhecer
conhecer todos
todos os
os mtodos,
mtodos, funes,
funes, ...
... de
de um
um
mdulo
mdulo use
use oo comando:
comando: dir(mdulo)
dir(mdulo)
103
Mdulo - sys
104
Mdulo - sys
$ python args.py 2 5 -3
['args.py', '2', '5', '-3']
105
Mdulo - sys
>>> sys.exit()
$ _
106
Mdulo - re
>>> import re
>>> re.findall(r'\bf[a-z]*', 'which foot or hand fell
fastest')
['foot', 'fell', 'fastest']
107
Mdulo - re
>>> re.sub(r'(\b[a-z]+) \1', r'\1', 'cat cat the the hat hat,
and my my shoes')
'cat the hat, and my shoes'
108
Mdulo - math
111
Mdulos para Internet urllib2 e smtplib
112
Mdulos para Internet urllib2 e smtplib
113
Mdulo - datetime
115
Mdulo - timeit
Bibliografia:
Tutorial Python, release 2.4.2 de Guido van Rossum, Fred
L . Drake, Jr., editor, traduo: Python Brasil
Python na Prtica - Um curso objetivo de programao em
Python, http://www.async.com.br/projects/pnp/, de
Christian Robottom Reis, Async Open Source,
kiko@async.com.br
Documentao do Pyton (dir() e __doc__)
117