Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao Python

Introdução ao Python

Introdução a linguagem de programação Python

Elyézer Rezende

March 08, 2013
Tweet

Other Decks in Programming

Transcript

  1. EXECUTANDO CÓDIGOS PYTHON Utilizando o interpretador Como script executável Obs.:

    O arquivo precisa ter permissão de execução. $ p y t h o n $ p y t h o n - m m o d u l o $ p y t h o n a r q u i v o . p y # ! / u s r / b i n / e n v p y t h o n
  2. APRENDENDO COM O PYTHON t y p e ( o

    b j ) # d e t e r m i n a o t i p o d o o b j e t o h e l p ( l i s t ) # d o c u m e n t a ç ã o d e c l a s s e o u c o m a n d o h e l p ( ' i f ' ) # d o c u m e n t a ç ã o d e u m t ó p i c o , m o d u l o o u p a l a v r a - c h a v e d i r ( l i s t ) # l i s t a ( q u a s e ) t o d o s o s a t r i b u t o s d e u m o b j e t o d i r ( ) # l i s t a o s í m b o l o s d o e s c o p o a t u a l
  3. MÃO NA MASSA Hello World Um pouco além do Hello

    World p r i n t ' H e l l o W o r l d ! ' f r o m d a t e t i m e i m p o r t d a t e t i m e f r o m t i m e i m p o r t s l e e p w h i l e T r u e : h o r a = d a t e t i m e . n o w ( ) p r i n t h o r a . s t r f t i m e ( ' % H : % M : % S ' ) s l e e p ( 1 )
  4. FERRAMENTAS DE CONTROLE DE FLUXO IF / ELIF / ELSE

    > > > x = 1 0 > > > i f x < 0 : . . . p r i n t ' M e n o r q u e z e r o ' . . . e l i f x > 0 : . . . p r i n t ' M a i o r q u e z e r o ' . . . e l s e : . . . p r i n t ' I g u a l a z e r o ' . . . M a i o r q u e z e r o
  5. FERRAMENTAS DE CONTROLE DE FLUXO FOR / ELSE > >

    > l i s t a = [ 1 , ' i t e m 2 ' ] > > > f o r i t e m i n l i s t a : . . . p r i n t i t e m . . . e l s e : . . . p r i n t ' f i m d a l i s t a ' . . . 1 i t e m 2 f i m d a l i s t a
  6. FERRAMENTAS DE CONTROLE DE FLUXO WHILE / ELSE > >

    > x = 1 > > > w h i l e x < 5 : . . . p r i n t x . . . x + = 1 . . . e l s e : . . . p r i n t 5 . . . 1 2 3 4 5
  7. FUNÇÕES Para definir uma função basta utilizar a palavra reservada

    def > > > d e f f i b ( n ) : # e s c r e v e s é r i e d e F i b o n a c c i a t é n . . . " " " E x i b e s é r i e d e F i b o n a c c i a t é n " " " . . . a , b = 0 , 1 . . . w h i l e a < n : . . . p r i n t a , . . . a , b = b , a + b . . . > > > # A g o r a i n v o c a m o s a f u n ç ã o q u e a c a b a m o s d e d e f i n i r : . . . f i b ( 2 0 0 0 ) 0 1 1 2 3 5 8 1 3 2 1 3 4 5 5 8 9 1 4 4 2 3 3 3 7 7 6 1 0 9 8 7 1 5 9 7
  8. FUNÇÕES PARÂMETROS COM VALORES DEFAULT > > > d e

    f p r i n t _ n o m e ( n o m e , s o b r e n o m e = ' ' ) : . . . p r i n t n o m e , s o b r e n o m e . . . > > > p r i n t _ n o m e ( ) T r a c e b a c k ( m o s t r e c e n t c a l l l a s t ) : F i l e " " , l i n e 1 , i n T y p e E r r o r : p r i n t _ n o m e ( ) t a k e s a t l e a s t 1 a r g u m e n t ( 0 g i v e n ) > > > p r i n t _ n o m e ( u ' E l y é z e r ' ) E l y é z e r > > > p r i n t _ n o m e ( u ' E l y é z e r ' , u ' R e z e n d e ' ) E l y é z e r R e z e n d e
  9. FUNÇÕES ARGUMENTOS NOMEADOS > > > d e f p

    r i n t _ u s u a r i o ( n o m e , s o b r e n o m e = ' ' , i d a d e = ' ' ) : . . . p r i n t n o m e , s o b r e n o m e , i d a d e . . . > > > p r i n t _ u s u a r i o ( ) T r a c e b a c k ( m o s t r e c e n t c a l l l a s t ) : F i l e " " , l i n e 1 , i n T y p e E r r o r : p r i n t _ u s u a r i o ( ) t a k e s a t l e a s t 1 a r g u m e n t ( 0 g i v e n ) > > > p r i n t _ u s u a r i o ( u ' E l y é z e r ' ) E l y é z e r > > > p r i n t _ u s u a r i o ( u ' E l y é z e r ' , i d a d e = 2 5 ) E l y é z e r 2 5 > > > p r i n t _ u s u a r i o ( u ' E l y é z e r ' , i d a d e = 2 5 , s o b r e n o m e = u ' R e z e n d e ' ) E l y é z e r R e z e n d e 2 5 > > > p r i n t _ u s u a r i o ( u ' E l y é z e r ' , u ' R e z e n d e ' , 2 5 ) E l y é z e r R e z e n d e 2 5
  10. FUNÇÕES FUNÇÕES COM NÚMERO ARBITRÁRIO DE ARGUMENTOS > > >

    d e f p r i n t _ i t e m s ( * a r g s ) : . . . f o r i t e m i n a r g s : . . . p r i n t i t e m . . . > > > p r i n t _ i t e m s ( ) > > > p r i n t _ i t e m s ( 1 ) 1 > > > p r i n t _ i t e m s ( 1 , 2 ) 1 2 > > > p r i n t _ i t e m s ( n u m e r o = 1 0 ) T r a c e b a c k ( m o s t r e c e n t c a l l l a s t ) : F i l e " " , l i n e 1 , i n T y p e E r r o r : p r i n t _ i t e m s ( ) g o t a n u n e x p e c t e d k e y w o r d a r g u m e n t ' n u m e r o '
  11. FUNÇÕES FUNÇÕES ANÔNIMAS > > > d e f f

    a z e r _ i n c r e m e n t a d o r ( n ) : . . . r e t u r n l a m b d a x : x + n . . . > > > i n c r e m e n t a d o r = f a z e r _ i n c r e m e n t a d o r ( 4 2 ) > > > i n c r e m e n t a d o r ( 0 ) 4 2 > > > i n c r e m e n t a d o r ( 1 ) 4 3
  12. FUNÇÕES DOCSTRINGS > > > d e f f u

    n c a o ( ) : . . . " " " N ã o f a z n a d a , m a s é d o c u m e n t a d a . . . . . . . R e a l m e n t e n ã o f a z n a d a . . . " " " . . . p a s s . . . > > > p r i n t f u n c a o . _ _ d o c _ _ N ã o f a z n a d a , m a s é d o c u m e n t a d a . R e a l m e n t e n ã o f a z n a d a > > > h e l p ( f u n c a o )
  13. TIPOS DE DADOS BÁSICOS Números: int, long*, float, complex Strings:

    str* e unicode* Listas e tuplas: list, tuple Dicionário: dict Aquivos: file Booleanos: bool (True, False) Conjuntos: set, frozenset None * Existe diferença entre as versões 2 e 3 do Python
  14. LISTAS FATIANDO AS LISTAS > > > l i s

    t a = r a n g e ( 1 0 ) > > > l i s t a [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] > > > l i s t a [ 1 : ] [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] > > > l i s t a [ : 5 ] [ 0 , 1 , 2 , 3 , 4 ] > > > l i s t a [ 2 : 5 ] [ 2 , 3 , 4 ] > > > l i s t a [ : ] [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] > > > l i s t a [ : - 1 ] [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
  15. LISTAS LIST COMPREHENSIONS O código abaixo: É equivalente ao seguinte

    código: > > > q u a d r a d o s = [ ] > > > f o r x i n r a n g e ( 1 0 ) : . . . q u a d r a d o s . a p p e n d ( x * * 2 ) . . . > > > q u a d r a d o s [ 0 , 1 , 4 , 9 , 1 6 , 2 5 , 3 6 , 4 9 , 6 4 , 8 1 ] q u a d r a d o s = [ x * * 2 f o r x i n r a n g e ( 1 0 ) ]
  16. LISTAS LIST COMPREHENSIONS COM FILTRO Utilizando operador ternário > >

    > l i s t a = r a n g e ( 1 , 2 1 ) > > > l i s t a [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 , 1 1 , 1 2 , 1 3 , 1 4 , 1 5 , 1 6 , 1 7 , 1 8 , 1 9 , 2 0 ] > > > [ n f o r n i n l i s t a i f n % 2 = = 0 ] [ 2 , 4 , 6 , 8 , 1 0 , 1 2 , 1 4 , 1 6 , 1 8 , 2 0 ] > > > [ n + 1 i f n % 2 = = 0 e l s e n - 1 f o r n i n l i s t a ] [ 0 , 3 , 2 , 5 , 4 , 7 , 6 , 9 , 8 , 1 1 , 1 0 , 1 3 , 1 2 , 1 5 , 1 4 , 1 7 , 1 6 , 1 9 , 1 8 , 2 1 ]
  17. LISTAS LIST COMPREHENSIONS ANINHADAS Dado a matriz: A matriz transposta

    pode ser obtida utilizando: > > > m a t r i z = [ . . . [ 1 , 2 , 3 , 4 ] , . . . [ 5 , 6 , 7 , 8 ] , . . . [ 9 , 1 0 , 1 1 , 1 2 ] , . . . ] > > > [ [ l i n h a [ i ] f o r l i n h a i n m a t r i z ] f o r i i n r a n g e ( l e n ( m a t r i z [ 0 ] ) ) ] [ [ 1 , 5 , 9 ] , [ 2 , 6 , 1 0 ] , [ 3 , 7 , 1 1 ] , [ 4 , 8 , 1 2 ] ]
  18. TÉCNICAS DE ITERAÇÃO ITERANDO SOBRE AS CHAVES DE UM DICIONÁRIO

    > > > u s u a r i o = { . . . ' n o m e ' : u ' E l y é z e r ' , . . . ' s o b r e n o m e ' : u ' R e z e n d e ' , . . . ' i d a d e ' : 2 5 . . . } > > > f o r k i n u s u a r i o : . . . p r i n t k . . . i d a d e s o b r e n o m e n o m e
  19. TÉCNICAS DE ITERAÇÃO ITERANDO SOBRE AS CHAVES E VALORES DE

    UM DICIONÁRIO > > > u s u a r i o = { . . . ' n o m e ' : u ' E l y é z e r ' , . . . ' s o b r e n o m e ' : u ' R e z e n d e ' , . . . ' i d a d e ' : 2 5 . . . } > > > f o r k , v i n u s u a r i o . i t e r i t e m s ( ) : . . . p r i n t ' % s : % s ' % ( k , v ) . . . i d a d e : 2 5 s o b r e n o m e : R e z e n d e n o m e : E l y é z e r
  20. TÉCNICAS DE ITERAÇÃO ITERANDO SOBRE UMA SEQUÊNCIA UTILIZANDO ÍNDICE >

    > > f o r i , v i n e n u m e r a t e ( [ ' t i c ' , ' t a c ' , ' t o e ' ] ) : . . . p r i n t i , v . . . 0 t i c 1 t a c 2 t o e
  21. TÉCNICAS DE ITERAÇÃO ITERANDO SOBRE DUAS SEQUÊNCIAS SIMULTANEAMENTE > >

    > q u e s t i o n s = [ ' n a m e ' , ' q u e s t ' , ' f a v o r i t e c o l o r ' ] > > > a n s w e r s = [ ' l a n c e l o t ' , ' t h e h o l y g r a i l ' , ' b l u e ' ] > > > f o r q , a i n z i p ( q u e s t i o n s , a n s w e r s ) : . . . p r i n t ' W h a t i s y o u r { 0 } ? I t i s { 1 } . ' . f o r m a t ( q , a ) . . . W h a t i s y o u r n a m e ? I t i s l a n c e l o t . W h a t i s y o u r q u e s t ? I t i s t h e h o l y g r a i l . W h a t i s y o u r f a v o r i t e c o l o r ? I t i s b l u e .
  22. TÉCNICAS DE ITERAÇÃO ITERANDO SOBRE UMA SEQUÊNCIA EM ORDEM INVERSA

    > > > f o r i i n r e v e r s e d ( x r a n g e ( 1 , 1 0 , 2 ) ) : . . . p r i n t i . . . 9 7 5 3 1
  23. TÉCNICAS DE ITERAÇÃO ITERANDO SOBRE UMA SEQUÊNCIA DE MANEIRA ORDENADA

    > > > c e s t a = [ ' u v a ' , ' l a r a n j a ' , ' u v a ' , ' a b a c a x i ' ] > > > f o r f r u t a i n s o r t e d ( c e s t a ) : . . . p r i n t f r u t a . . . a b a c a x i l a r a n j a u v a u v a > > > f o r f r u t a i n s o r t e d ( s e t ( c e s t a ) ) : # s e m d u p l i c a ç õ e s . . . p r i n t f r u t a . . . a b a c a x i l a r a n j a u v a
  24. MÓDULOS Um módulo é um arquivo Python contendo definições e

    instruções. O nome do arquivo é o módulo com o sufixo .py adicionado.
  25. MÓDULOS IMPORTANDO UM MÓDULO > > > i m p

    o r t m o d u l o > > > m o d u l o . f u n c a o ( ) f u n ç ã o d o m ó d u l o > > > m o d u l o . v a r 1 0
  26. MÓDULOS IMPORTANDO DEFINIÇÕES OU INSTRUÇÕES DE UM MÓDULO > >

    > f r o m m o d u l o i m p o r t f u n c a o , v a r > > > f u n c a o ( ) f u n ç ã o d o m ó d u l o > > > v a r 1 0
  27. MÓDULOS EXECUTANDO MÓDULOS COMO SCRIPTS Ao executar o módulo dessa

    forma: O código no módulo será executado, da mesma forma como você estivesse apenas importado, mas com a variável global __name__ com o valor "__main__". $ p y t h o n m o d u l o . p y < a r g u m e n t o s > i f _ _ n a m e _ _ = = " _ _ m a i n _ _ " : p r i n t " e x e c u t a n d o "
  28. MÓDULOS PACOTES Pacotes são uma maneira de estruturar espaços de

    nomes para módulos Python utilizando a sintaxe de “nomes pontuados” (dotted names). O uso de pacotes permite que os autores de pacotes com muitos módulos. Arquivos __init__.py são necessários para que Python trate os diretórios como pacotes.
  29. EXCEÇÕES TRATAMENTO DE EXCEÇÕES > > > d e f

    d i v i d e ( x , y ) : . . . t r y : . . . r e s u l t a d o = x / y . . . e x c e p t Z e r o D i v i s i o n E r r o r : . . . p r i n t " d i v i s ã o p o r z e r o ! " . . . e l s e : . . . p r i n t " r e s u l t a d o é " , r e s u l t a d o . . . f i n a l l y : . . . p r i n t " e x e c u t a n d o a c l á u s u l a f i n a l l y " . . . > > > d i v i d e ( 2 , 1 ) r e s u l t a d o é 2 e x e c u t a n d o a c l á u s u l a f i n a l l y > > > d i v i d e ( 2 , 0 ) d i v i s ã o p o r z e r o ! e x e c u t a n d o a c l á u s u l a f i n a l l y > > > d i v i d e ( " 2 " , " 1 " )
  30. EXCEÇÕES LANÇANDO EXCEÇÕES > > > r a i s

    e N a m e E r r o r ( ' H i T h e r e ' ) T r a c e b a c k ( m o s t r e c e n t c a l l l a s t ) : F i l e " " , l i n e 1 , i n ? N a m e E r r o r : H i T h e r e
  31. TWITTER CLIENT Fonte: i m p o r t u

    r l l i b . r e q u e s t i m p o r t j s o n d e f b u s c a _ t w e e t s ( t e x t o = ' p y t h o n ' ) : u r l = ' h t t p : / / s e a r c h . t w i t t e r . c o m / s e a r c h . j s o n ? q = ' + t e x t o r e s p = u r l l i b . r e q u e s t . u r l o p e n ( u r l ) . r e a d ( ) d a t a = j s o n . l o a d s ( r e s p . d e c o d e ( ' u t f - 8 ' ) ) r e t u r n d a t a [ ' r e s u l t s ' ] d e f p r i n t _ t w e e t s ( t w e e t s ) : f o r t i n t w e e t s : p r i n t t [ ' f r o m _ u s e r ' ] + ' : ' + t [ ' t e x t ' ] + ' \ n ' r e s u l t a d o s = b u s c a _ t w e e t s ( ) p r i n t _ t w e e t s ( r e s u l t a d o s ) https://gist.github.com/fmasanori/4666428
  32. TWITTER PROFILE PHOTO Fonte: i m p o r t

    u r l l i b . r e q u e s t i m p o r t j s o n u r l = ' h t t p s : / / a p i . t w i t t e r . c o m / 1 / u s e r s / p r o f i l e _ i m a g e ? s c r e e n _ n a m e = ' u s e r = ' f m a s a n o r i ' s i z e = ' & s i z e = b i g g e r ' r e s p = u r l l i b . r e q u e s t . u r l o p e n ( u r l + u s e r + s i z e ) . r e a d ( ) a r q u i v o = ' F o t o p e r f i l ' + u s e r + ' . j p g ' f = o p e n ( a r q u i v o , ' w b ' ) f . w r i t e ( r e s p ) f . c l o s e ( ) p r i n t a r q u i v o , ' g r a v a d o n o d i r e t ó r i o a t u a l . . . ' https://gist.github.com/fmasanori/4666602
  33. ONDE ENCONTRAR MAIS INFORMAÇÕES? Tutorial em português Comunidade Brasileira Documentação

    oficial do Python 2 Documentação oficial do Python 3 Introdução a linguagem Python Python: a primeira mordida Hackeando o Facebook e o Twitter com Python 3