Slide 1

Slide 1 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 1

Slide 2

Slide 2 text

Regis Santos [email protected] @rg3915 rg3915.github.io grandeportal.github.io pythonclub.com.br meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 2

Slide 3

Slide 3 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 3

Slide 4

Slide 4 text

Grupy­SP apresenta FS2W ­ Full Stack Web Workshops FS2W #5 Introdução ao Git Sábado, 11/03 a partir das 10:00 na IBM meetup.com/Grupy­SP ­ rg3915.github.io/fs2w meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 4

Slide 5

Slide 5 text

Django Girls SP Sábado, 25/03 djangogirls.org/saopaulo/ meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 5

Slide 6

Slide 6 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 6

Slide 7

Slide 7 text

meetup.com/PyData­Sao­Paulo meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 7

Slide 8

Slide 8 text

http://pythonsudeste.org/ 5 a 7 de Maio meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 8

Slide 9

Slide 9 text

http://2017.pythonbrasil.org.br/ meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 9

Slide 10

Slide 10 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 10

Slide 11

Slide 11 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 11

Slide 12

Slide 12 text

O que é Python? É uma linguagem interpretada, com tipagem dinâmica e forte. meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 12

Slide 13

Slide 13 text

Python foi criado por Guido van Rossum em 1991. @gvanrossum Working at Dropbox. meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 13

Slide 14

Slide 14 text

Python vem de Monty Python's Flying Circus Grupo humorístico britânico meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 14

Slide 15

Slide 15 text

Vantagens do Python Legível Fácil de aprender Se faz muito escrevendo pouco Baterias inclusas Multiplataforma meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 15

Slide 16

Slide 16 text

Tipagem Dinâmica A identificação do tipo acontece em Runtime. > > > n = 4 2 > > > t y p e ( n ) < c l a s s ' i n t ' > > > > p i = 3 . 1 4 > > > t y p e ( p i ) < c l a s s ' f l o a t ' > > > > t = ' T e x t o ' > > > t y p e ( t ) < c l a s s ' s t r ' > > > > b = T r u e > > > t y p e ( b ) < c l a s s ' b o o l ' > meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 16

Slide 17

Slide 17 text

Tipagem Forte O Python não transforma um tipo em outro implicitamente. Exemplo, '1' + 1 dá erro. Em outras linguagens retorna '11'. meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 17

Slide 18

Slide 18 text

Pra que serve Python? meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 18

Slide 19

Slide 19 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 19

Slide 20

Slide 20 text

Como usar Python? www.python.org/shell pythontutor.com meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 20

Slide 21

Slide 21 text

Instalação Windows www.python.org/downloads meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 21

Slide 22

Slide 22 text

Mac Mac OS X 64­bit/32­bit installer Guia definitivo para organizar meu ambiente Python by @henriquebastos https://medium.com/@henriquebastos/guia­definitivo­para­organizar­meu­ambiente­python­ a16e2479b753#.mq4be8r1h meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 22

Slide 23

Slide 23 text

Linux Simple Python Version Management: pyenv https://github.com/yyuu/pyenv Tutorial Instalando o pyenv by @rg3915 https://github.com/rg3915/django­experience/wiki/Instalando­o­pyenv Instalando qualquer versão do Python no Linux/Mac OSX utilizando pyenv by @rafaelhenrique http://blog.abraseucodigo.com.br/instalando­qualquer­versao­do­python­no­linux­macosx­ utilizando­pyenv.html meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 23

Slide 24

Slide 24 text

O mínimo para usar o Python Terminal (em Windows use o Cmder) Editor de texto Vim Nano Gedit Atom Sublime Text Notepad ++ IDE PyCharm meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 24

Slide 25

Slide 25 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 25

Slide 26

Slide 26 text

> > > p r i n t ( ' H e l l o W o r d ' ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 26

Slide 27

Slide 27 text

Além do Hello Word 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 ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 27

Slide 28

Slide 28 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 28

Slide 29

Slide 29 text

Vamos para o pythontutor.com l i s t a = l i s t ( r a n g e ( 1 , 1 1 ) ) i m p a r e s = [ ] p a r e s = [ ] f o r i i n l i s t a : i f i % 2 : i m p a r e s . a p p e n d ( i ) e l s e : p a r e s . a p p e n d ( i ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 29

Slide 30

Slide 30 text

Servidor local em Python p y t h o n ­ m h t t p . s e r v e r 8 0 8 0 meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 30

Slide 31

Slide 31 text

Enviar e­mail Show me the code: send_email.py meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 31

Slide 32

Slide 32 text

i m p o r t s m t p l i b i m p o r t g e t p a s s o b j = s m t p l i b . S M T P ( ' s m t p . g m a i l . c o m ' , 5 8 7 ) o b j . e h l o ( ) o b j . s t a r t t l s ( ) m y _ e m a i l = ' r e g i s . s a n t o s . 1 0 0 @ g m a i l . c o m ' p a s s w o r d = g e t p a s s . g e t p a s s ( ) o b j . l o g i n ( m y _ e m a i l , p a s s w o r d ) e m a i l _ f r o m = ' r e g i s . s a n t o s . 1 0 0 @ g m a i l . c o m ' e m a i l _ t o = ' r e g i s . s a n t o s . 1 0 0 @ g m a i l . c o m ' s u b j e c t = ' S u b j e c t : B e m ­ v i n d o a o T h i n k U P ' m e s s a g e = ' B e m ­ v i n d o a o T h i n k U P d e I n t r o d u c a o a o P y t h o n . ' o b j . s e n d m a i l ( e m a i l _ f r o m , e m a i l _ t o , ' % s \ n % s ' % ( s u b j e c t , m e s s a g e ) ) o b j . q u i t ( ) p r i n t ( ' E ­ m a i l e n v i a d o c o m s u c e s s o . ' ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 32

Slide 33

Slide 33 text

TDD: Test Driven Development github.com/rg3915/test­first Obey the Testing Goat! github.com/hjwp/book­example meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 33

Slide 34

Slide 34 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 34

Slide 35

Slide 35 text

# t e m p e r a t u r e . p y d e f t e s t _ c e l s i u s _ k e l v i n ( ) : a s s e r t c e l s i u s _ k e l v i n ( 0 ) = = 2 7 3 a s s e r t c e l s i u s _ k e l v i n ( 1 0 ) = = 2 8 3 i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : t e s t _ c e l s i u s _ k e l v i n ( ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 35

Slide 36

Slide 36 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 36

Slide 37

Slide 37 text

d e f c e l s i u s _ k e l v i n ( n ) : r e t u r n n + 2 7 3 d e f t e s t _ c e l s i u s _ k e l v i n ( ) : a s s e r t c e l s i u s _ k e l v i n ( 0 ) = = 2 7 3 a s s e r t c e l s i u s _ k e l v i n ( 1 0 ) = = 2 8 3 a s s e r t c e l s i u s _ k e l v i n ( 2 0 ) = = 2 9 3 i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : t e s t _ c e l s i u s _ k e l v i n ( ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 37

Slide 38

Slide 38 text

Nota final de provas meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 38

Slide 39

Slide 39 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 39

Slide 40

Slide 40 text

Nota final de provas # n o t a s . p y i m p o r t u n i t t e s t c l a s s G r a d e T e s t ( u n i t t e s t . T e s t C a s e ) : d e f t e s t _ g r a d e ( s e l f ) : s e l f . a s s e r t E q u a l ( g r a d e ( 1 0 ) , ' A p r o v a d o ' ) s e l f . a s s e r t E q u a l ( g r a d e ( 7 ) , ' A p r o v a d o ' ) s e l f . a s s e r t E q u a l ( g r a d e ( 6 . 9 ) , ' R e c u p e r a ç ã o ' ) s e l f . a s s e r t E q u a l ( g r a d e ( 4 ) , ' R e c u p e r a ç ã o ' ) s e l f . a s s e r t E q u a l ( g r a d e ( 3 . 9 ) , ' R e p r o v a d o ' ) s e l f . a s s e r t E q u a l ( g r a d e ( 0 ) , ' R e p r o v a d o ' ) i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : u n i t t e s t . m a i n ( ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 40

Slide 41

Slide 41 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 41

Slide 42

Slide 42 text

i m p o r t u n i t t e s t d e f n o t a ( v a l o r ) : i f v a l o r > = 7 : r e t u r n ' A p r o v a d o ' e l i f v a l o r > = 4 : r e t u r n ' R e c u p e r a ç ã o ' e l s e : r e t u r n ' R e p r o v a d o ' c l a s s G r a d e T e s t ( u n i t t e s t . T e s t C a s e ) : d e f t e s t _ g r a d e ( s e l f ) : s e l f . a s s e r t E q u a l ( n o t a ( 1 0 ) , ' A p r o v a d o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 7 ) , ' A p r o v a d o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 6 . 9 ) , ' R e c u p e r a ç ã o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 4 ) , ' R e c u p e r a ç ã o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 3 . 9 ) , ' R e p r o v a d o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 0 ) , ' R e p r o v a d o ' ) i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : u n i t t e s t . m a i n ( ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 42

Slide 43

Slide 43 text

Soma de Vetores Definição: Dados dois vetores u = (u , u , ..., u ) e v = (v , v , ..., v ) de R , a soma de u e v é o vetor dado por u + v = (u + v , u + v , ..., u + v ) 1 2 n 1 2 n n 1 1 2 2 n n meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 43

Slide 44

Slide 44 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 44

Slide 45

Slide 45 text

' ' ' > > > v 1 = [ 1 , 2 , 3 ] > > > v 2 = [ 9 , 1 8 , 2 7 ] > > > s u m _ v e c t o r ( v 1 , v 2 ) [ 1 0 , 2 0 , 3 0 ] ' ' ' d e f s u m _ v e c t o r ( v 1 , v 2 ) : v e t o r = [ ] f o r i i n r a n g e ( m i n ( l e n ( v 1 ) , l e n ( v 2 ) ) ) : v e t o r . a p p e n d ( v 1 [ i ] + v 2 [ i ] ) r e t u r n v e t o r i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : v 1 = [ 1 , 2 , 3 ] v 2 = [ 9 , 1 8 , 2 7 ] p r i n t ( s u m _ v e c t o r ( v 1 , v 2 ) ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 45

Slide 46

Slide 46 text

p y t h o n ­ m d o c t e s t v e c t o r . p y meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 46

Slide 47

Slide 47 text

Multiplicação por Escalar Definição: Dado um vetor v ∈ R e um escalar α ∈ R, o produto de α por v é dado por αv = α(v , v , ..., v ) = (αv , αv , ..., αv ) n 1 2 n 1 2 n meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 47

Slide 48

Slide 48 text

' ' ' > > > m u l _ v e c t o r ( 3 , v 1 ) [ 3 , 6 , 9 ] ' ' ' d e f m u l _ v e c t o r ( a , v ) : v e t o r = [ ] f o r i i n v : v e t o r . a p p e n d ( a * i ) r e t u r n v e t o r meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 48

Slide 49

Slide 49 text

p y t h o n ­ m d o c t e s t v e c t o r . p y meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 49

Slide 50

Slide 50 text

Zen of Python by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Bonito é melhor que feio. Explícito é melhor que implícito. Simples é melhor que complexo. Complexo é melhor que complicado. Linear é melhor do que aninhado. Esparso é melhor que denso. Legibilidade conta. meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 50

Slide 51

Slide 51 text

Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one­­ and preferably only one ­­obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Casos especiais não são especiais o bastante para quebrar as regras. Ainda que praticidade vença a pureza. Erros nunca devem passar silenciosamente. A menos que sejam explicitamente silenciados. Diante da ambigüidade, recuse a tentação de adivinhar. Deveria haver um — e preferencialmente só um — modo óbvio para fazer algo. Embora esse modo possa não ser óbvio a princípio a menos que você seja holandês. meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 51

Slide 52

Slide 52 text

Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea ­­ let's do more of those! Agora é melhor que nunca. Embora nunca freqüentemente seja melhor que *já*. Se a implementação é difícil de explicar, é uma má idéia. Se a implementação é fácil de explicar, pode ser uma boa idéia. Namespaces são uma grande idéia — vamos ter mais dessas! meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 52

Slide 53

Slide 53 text

List Compreenshions (Abrangência de listas) Soma de vetores p r i n t ( [ i + j f o r i , j i n z i p ( v 1 , v 2 ) ] ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 53

Slide 54

Slide 54 text

Multiplicação por escalar p r i n t ( [ 3 * x f o r x i n v 2 ] ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 54

Slide 55

Slide 55 text

Dicionários São coleções de valores identificados por chaves únicas. { ' c h a v e ' : v a l o r } u f = { ' S P ' : ' S ã o P a u l o ' , ' R J ' : ' R i o d e J a n e i r o ' , ' M G ' : ' M i n a s G e r a i s ' } u f [ ' S P ' ] u f [ ' R J ' ] u f [ ' P R ' ] u f [ ' P R ' ] = ' P a r a n á ' u f [ ' P R ' ] meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 55

Slide 56

Slide 56 text

Nota final de provas i m p o r t u n i t t e s t d e f n o t a ( v a l o r ) : i f v a l o r > = 7 : r e t u r n ' A p r o v a d o ' e l i f v a l o r > = 4 : r e t u r n ' R e c u p e r a ç ã o ' e l s e : r e t u r n ' R e p r o v a d o ' c l a s s G r a d e T e s t ( u n i t t e s t . T e s t C a s e ) : d e f t e s t _ g r a d e ( s e l f ) : s e l f . a s s e r t E q u a l ( n o t a ( 1 0 ) , ' A p r o v a d o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 7 ) , ' A p r o v a d o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 6 . 9 ) , ' R e c u p e r a ç ã o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 4 ) , ' R e c u p e r a ç ã o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 3 . 9 ) , ' R e p r o v a d o ' ) s e l f . a s s e r t E q u a l ( n o t a ( 0 ) , ' R e p r o v a d o ' ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 56

Slide 57

Slide 57 text

d e f m a i n ( ) : a l u n o s = { ' R e g i s ' : 9 , ' M a r c i a ' : 9 . 5 , ' F e r n a n d o ' : 8 , ' P e d r i n h o ' : 2 , ' A n i n h a ' : 4 , } f o r a l u n o , v a l o r i n a l u n o s . i t e m s ( ) : p r i n t ( a l u n o , v a l o r , n o t a ( v a l o r ) ) i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : m a i n ( ) u n i t t e s t . m a i n ( ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 57

Slide 58

Slide 58 text

Programação Funcional É um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. http://www.u.arizona.edu/~erdmann/mse350/topics/list_comprehensions.html#map­lambda­ and­filter m a p ( ) , f i l t e r ( ) , r e d u c e ( ) e z i p ( ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 58

Slide 59

Slide 59 text

zip Definição: Dados os vetores u = (u , u , ..., u ) e v = (v , v , ..., v ) zip(u, v) = ((u , v ), (u , v ), ..., (u , v )) 1 2 n 1 2 n 1 1 2 2 n n meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 59

Slide 60

Slide 60 text

Exemplo > > > u = ( 1 , 2 , 3 ) > > > v = ( 1 0 , 2 0 , 3 0 ) > > > w = ( 1 0 0 , 2 0 0 , 3 0 0 ) > > > l i s t ( z i p ( u , v , w ) ) [ ( 1 , 1 0 , 1 0 0 ) , ( 2 , 2 0 , 2 0 0 ) , ( 3 , 3 0 , 3 0 0 ) ] meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 60

Slide 61

Slide 61 text

map Definição: Dado o vetor v = (v , v , ..., v ) e a função y = f(x) map(f(x), v) = (y , y , ..., y ) 1 2 n 1 2 n meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 61

Slide 62

Slide 62 text

Exemplo > > > v = ( 1 , 2 , 3 , 4 , 5 ) > > > l i s t ( m a p ( l a m b d a x : x * * 2 , v ) ) [ 1 , 4 , 9 , 1 6 , 2 5 ] meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 62

Slide 63

Slide 63 text

Soma de vetores > > > v 1 = [ 1 , 2 , 3 ] > > > v 2 = [ 9 , 1 8 , 2 7 ] > > > p r i n t ( l i s t ( m a p ( s u m , z i p ( v 1 , v 2 ) ) ) ) [ 1 0 , 2 0 , 3 0 ] Multiplicação por escalar > > > p r i n t ( l i s t ( m a p ( l a m b d a x : 3 * x , v 1 ) ) ) [ 3 , 6 , 9 ] meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 63

Slide 64

Slide 64 text

filter Definição: Dado o vetor v = (v , v , ..., v ) e a função y = f(x), se f(x) for verdadeiro, então filter(f(x), v) = (y , y , ..., y ), ∀y ∈ T 1 2 n 1 2 n meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 64

Slide 65

Slide 65 text

Exemplo > > > v = l i s t ( r a n g e ( 1 , 1 1 ) ) > > > p r i n t ( v ) [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 ] > > > p r i n t ( l i s t ( f i l t e r ( l a m b d a x : x % 2 = = 0 , v ) ) ) [ 2 , 4 , 6 , 8 , 1 0 ] > > > p r i n t ( l i s t ( f i l t e r ( l a m b d a x : x % 2 , v ) ) ) [ 1 , 3 , 5 , 7 , 9 ] meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 65

Slide 66

Slide 66 text

reduce Definição: Dado o vetor v = (v , v , ..., v ) e a função y = f(x) reduce(f(x), v) = z Onde z é um único valor. 1 2 n meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 66

Slide 67

Slide 67 text

Exemplo # P y t h o n 2 . 7 v = ( ' o t o r r i n o ' , ' l a r i n g o ' , ' l o g i s t a ' ) p r i n t r e d u c e ( l a m b d a x , y : x + y , v ) # P y t h o n 3 . 6 i m p o r t f u n c t o o l s v = ( ' o t o r r i n o ' , ' l a r i n g o ' , ' l o g i s t a ' ) p r i n t ( f u n c t o o l s . r e d u c e ( l a m b d a x , y : x + y , v ) ) functools meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 67

Slide 68

Slide 68 text

Exemplo # P y t h o n 2 . 7 p r i n t r e d u c e ( l a m b d a x , y : x + y , r a n g e ( 1 , 1 1 ) ) # P y t h o n 3 . 6 i m p o r t f u n c t o o l s p r i n t ( f u n c t o o l s . r e d u c e ( l a m b d a x , y : x + y , r a n g e ( 1 , 1 1 ) ) ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 68

Slide 69

Slide 69 text

Programação Estruturada ou Funcional? meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 69

Slide 70

Slide 70 text

Orientação a Objetos meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 70

Slide 71

Slide 71 text

Dusty Phillips ­ Packt Publishing meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 71

Slide 72

Slide 72 text

pythonclub.com.br/introducao­classes­metodos­python­basico.html meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 72

Slide 73

Slide 73 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 73

Slide 74

Slide 74 text

No interpretador Python: c l a s s T e l e v i s a o ( ) : d e f _ _ i n i t _ _ ( s e l f ) : s e l f . l i g a d a = F a l s e s e l f . c a n a l = 2 t v _ q u a r t o = T e l e v i s a o ( ) t v _ s a l a = T e l e v i s a o ( ) t v _ q u a r t o . l i g a d a t v _ q u a r t o . c a n a l t v _ s a l a . l i g a d a = T r u e t v _ s a l a . c a n a l = 5 t v _ s a l a . l i g a d a t v _ s a l a . c a n a l meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 74

Slide 75

Slide 75 text

# t v . p y c l a s s T e l e v i s a o ( ) : d e f _ _ i n i t _ _ ( s e l f ) : s e l f . l i g a d a = F a l s e s e l f . c a n a l = 2 d e f m u d a _ c a n a l _ p a r a _ b a i x o ( s e l f ) : s e l f . c a n a l ­ = 1 d e f m u d a _ c a n a l _ p a r a _ c i m a ( s e l f ) : s e l f . c a n a l + = 1 meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 75

Slide 76

Slide 76 text

i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : t v = T e l e v i s a o ( ) p r i n t ( ' C a n a l i n i c i a l : ' , t v . c a n a l ) p r i n t ( ' L i g a d a : ' , t v . l i g a d a ) t v . l i g a d a = T r u e t v . c a n a l = 5 p r i n t ( ' L i g a d a : ' , t v . l i g a d a ) p r i n t ( ' C a n a l i n i c i a l : ' , t v . c a n a l ) t v . m u d a _ c a n a l _ p a r a _ c i m a ( ) p r i n t ( ' C a n a l + ' , t v . c a n a l ) t v . m u d a _ c a n a l _ p a r a _ c i m a ( ) p r i n t ( ' C a n a l + ' , t v . c a n a l ) t v . m u d a _ c a n a l _ p a r a _ b a i x o ( ) p r i n t ( ' C a n a l ­ ' , t v . c a n a l ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 76

Slide 77

Slide 77 text

meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 77

Slide 78

Slide 78 text

Herança de Classes # v e i c u l o . p y c l a s s V e i c u l o ( o b j e c t ) : d e f _ _ i n i t _ _ ( s e l f ) : s e l f . p o r t a = 0 s e l f . r o d a = 2 c l a s s V e i c u l o M o t o r i z a d o ( V e i c u l o ) : d e f _ _ i n i t _ _ ( s e l f ) : V e i c u l o . _ _ i n i t _ _ ( s e l f ) s e l f . l i g a d o = F a l s e d e f l i g a r _ m o t o r ( s e l f ) : s e l f . l i g a d o = T r u e meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 78

Slide 79

Slide 79 text

i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : b i c i c l e t a = V e i c u l o ( ) p r i n t ( ' B i c i c l e t a : ' ) p r i n t ( ' P o r t a : ' , b i c i c l e t a . p o r t a ) p r i n t ( ' R o d a : ' , b i c i c l e t a . r o d a ) t r i c i c l o = V e i c u l o ( ) p r i n t ( ' T r i c i c l o : ' ) t r i c i c l o . r o d a = 3 p r i n t ( ' P o r t a : ' , t r i c i c l o . p o r t a ) p r i n t ( ' R o d a : ' , t r i c i c l o . r o d a ) m o t o = V e i c u l o M o t o r i z a d o ( ) p r i n t ( ' M o t o : ' ) p r i n t ( ' P o r t a : ' , m o t o . p o r t a ) p r i n t ( ' R o d a : ' , m o t o . r o d a ) p r i n t ( ' M o t o r : ' , m o t o . l i g a d o ) m o t o . l i g a r _ m o t o r ( ) p r i n t ( ' M o t o r : ' , m o t o . l i g a d o ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 79

Slide 80

Slide 80 text

c a r r o = V e i c u l o M o t o r i z a d o ( ) c a r r o . p o r t a = 4 c a r r o . r o d a = 4 c a r r o . l i g a r _ m o t o r ( ) p r i n t ( ' C a r r o : ' ) p r i n t ( ' P o r t a : ' , c a r r o . p o r t a ) p r i n t ( ' R o d a : ' , c a r r o . r o d a ) p r i n t ( ' M o t o r : ' , c a r r o . l i g a d o ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 80

Slide 81

Slide 81 text

Salas # r o o m s . p y c l a s s P e r s o n ( o b j e c t ) : d e f _ _ i n i t _ _ ( s e l f , u s e r n a m e ) : s e l f . u s e r n a m e = u s e r n a m e c l a s s R o o m ( o b j e c t ) : d e f _ _ i n i t _ _ ( s e l f , r o o m ) : s e l f . r o o m = r o o m s e l f . p e r s o n s = [ ] d e f a d d _ p e r s o n ( s e l f , p e r s o n ) : i f i s i n s t a n c e ( p e r s o n , ( l i s t , t u p l e ) ) : s e l f . p e r s o n s . e x t e n d ( p e r s o n ) e l s e : s e l f . p e r s o n s . a p p e n d ( p e r s o n ) d e f c o u n t _ p e r s o n s ( s e l f ) : # C o n t a o s i t e m s d a l i s t a ' p e r s o n s ' . r e t u r n l e n ( s e l f . p e r s o n s ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 81

Slide 82

Slide 82 text

i f _ _ n a m e _ _ = = ' _ _ m a i n _ _ ' : s a l a 1 = R o o m ( ' T h i n k L a b ' ) p r i n t ( s a l a 1 . r o o m ) p r i n t ( s a l a 1 . p e r s o n s ) s a l a 1 . a d d _ p e r s o n ( ' R e g i s ' ) s a l a 1 . a d d _ p e r s o n ( ' F e r n a n d o ' ) p r i n t ( s a l a 1 . r o o m , s a l a 1 . c o u n t _ p e r s o n s ( ) , s a l a 1 . p e r s o n s ) s a l a 2 = R o o m ( ' W a t s o n ' ) s a l a 2 . a d d _ p e r s o n ( ' M a r c i a ' ) p r i n t ( s a l a 2 . r o o m , s a l a 2 . c o u n t _ p e r s o n s ( ) , s a l a 2 . p e r s o n s ) s a l a 3 = R o o m ( ' A u d i t ó r i o ' ) p e r s o n s = [ ' A n a ' , ' B e a t r i z ' , ' C a r l o s ' , ' D a n i e l ' , ' E d u a r d o ' , ' F r e d e r i c o ' ] s a l a 3 . a d d _ p e r s o n ( p e r s o n s ) p r i n t ( s a l a 3 . r o o m , s a l a 3 . c o u n t _ p e r s o n s ( ) , s a l a 3 . p e r s o n s ) meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 82

Slide 83

Slide 83 text

Rodando Python em outros lugares Jython ports do Python para Java Ironpython ports do Python para .NET MicroPython para microcontroladores ESP8266 Raspberry Pi tem SO Debian Python no Processing meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 83

Slide 84

Slide 84 text

Livros Python para Desenvolvedores Luiz Eduardo Borges Ed. Novatec meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 84

Slide 85

Slide 85 text

Pense em Python Allen B. Downey https://penseallen.github.io/PensePython2e/ meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 85

Slide 86

Slide 86 text

Python Eficaz Brett Slatkin Ed. Novatec meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 86

Slide 87

Slide 87 text

Python Fluente Luciano Ramalho @ramalhoorg Ed. Novatec meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 87

Slide 88

Slide 88 text

Automatize Tarefas Maçantes com Python Al Sweigart Ed. Novatec Automate the Boring Stuff https://automatetheboringstuff.com/ meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 88

Slide 89

Slide 89 text

Links https://goo.gl/hhpTpW meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 89

Slide 90

Slide 90 text

Vagas pyjob.info apinfo groups.google.com/forum/#!forum/python­brasil groups.google.com/forum/#!forum/grupy­sp meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 90

Slide 91

Slide 91 text

Dúvidas? @rg3915 meetup.com/thinkup ­ meetup.com/grupy­sp ­ Twitter: @grupysp ­ Telegram: @grupysaopaulo 91