Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

150
Hello, I am Python! Marcel Caraciolo Mini-Curso De Introdução a Python II Workshop de Software Livre - CIN/UFPE - Recife - PE 1 1

description

Mini-Course introducing Python for beginners presented at II workshop of open source software at Centro de Informática/UFPE - 21/03/2011.

Transcript of Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Page 1: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Hello, I am Python!Marcel Caraciolo

Mini-Curso De Introdução a Python

II Workshop de Software Livre - CIN/UFPE - Recife - PE

1

1

Page 2: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Quem é o instrutor ?

2II Workshop de Software Livre - CIN/UFPE - Recife - PE

• Marcel Pinheiro Caraciolo - @marcelcaraciolo

• Sergipano, porém Recifense.

• Diretor de Pesquisa e Desenvolvimento da Orygens

• Mestrando em Ciência da Computação no CIN/UFPE na área de mineração de dados

• Membro e Moderador da Celúla de Usuários Python de Pernambuco (PUG-PE)

• Minhas áreas de interesse: Computação móvel e Computação inteligente

• Meus blogs: http://www.mobideia.com (sobre Mobilidade desde 2006)

http://aimotion.blogspot.com (sobre I.A. desde 2009)

Jovem Aprendiz ainda nas artes pythonicas.... (desde 2007)

2

Page 3: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

O que é Python ?

Por que Python?

3

!"#$

II Workshop de Software Livre - CIN/UFPE - Recife - PE

3

Page 4: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Por que Python

4

É fácil

!"#$

II Workshop de Software Livre - CIN/UFPE - Recife - PE

4

Page 5: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Por que é fácil

5

• Semelhança com pseudo-código.

!"#$

II Workshop de Software Livre - CIN/UFPE - Recife - PE

5

Page 6: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Hello World Classíco... ‘hello world’ - Python vs { Java, C, PHP e Pascal }

II Workshop de Software Livre - CIN/UFPE - Recife - PE

6

Page 7: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Hello World Classíco.... Em Python ....

print “Hello World”

II Workshop de Software Livre - CIN/UFPE - Recife - PE

7

Page 8: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Por que Python

8

É fácil

É poderoso

II Workshop de Software Livre - CIN/UFPE - Recife - PE

8

Page 9: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Canivete suíçoTipagem dinâmica

Biblioteca padrão completa

Multi-paradigma

Multi-plataforma

Facilmente extensível

Free Software (GPL)

II Workshop de Software Livre - CIN/UFPE - Recife - PE

9

Page 10: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Por que é poderoso• Python para Web

• Web é presente -> Futuro!

• Django (http://www.django.org)

• Zope (http://www.zope.org)

• Plone (http://www.plone.org)

• Turbogears (http://www.turbogears.org)

• Web2Py (http://www.web2py.com)

10

II Workshop de Software Livre - CIN/UFPE - Recife - PE

10

Page 11: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Web

11

http://www.nationalgeographic.com/

II Workshop de Software Livre - CIN/UFPE - Recife - PE

11

Page 12: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Web

12

http://globo.com

II Workshop de Software Livre - CIN/UFPE - Recife - PE

12

Page 13: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Por que é poderoso• Python para gestão empresarial

• PyGTK (http://www.pygtk.org)

• PyQT (http://qt.nokia.com)

• MySQL, PostgreSQL, Oracle, Sqlite

13

II Workshop de Software Livre - CIN/UFPE - Recife - PE

13

Page 14: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Aplicativos Desktop

http://www.stoq.com.br/ http://taskcoach.org/

II Workshop de Software Livre - CIN/UFPE - Recife - PE

14

Page 15: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Aplicativos Desktop

Python + Qt + Qml

II Workshop de Software Livre - CIN/UFPE - Recife - PE

15

Page 16: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Python é multi-plataforma• Python em dispositivos móveis

• Python for Symbian (PyS60), PySide (Maemo), ASE (Android)

II Workshop de Software Livre - CIN/UFPE - Recife - PE

16

Page 17: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Android (ASE)

17

http://code.google.com/p/android-scripting/II Workshop de Software Livre - CIN/UFPE - Recife - PE

17

Page 18: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Por que é poderoso

NetworkXhttp://pypi.python.org/pypi

II Workshop de Software Livre - CIN/UFPE - Recife - PE

18

Page 19: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Python é multi-plataforma

• PyMT

• Python Multi Touch

• Especialmente criado para ambientes multi-touch

http://pymt.eu/

II Workshop de Software Livre - CIN/UFPE - Recife - PE

19

Page 20: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

PyGame e Jogos

http://www.pygame.org/news.htmlII Workshop de Software Livre - CIN/UFPE - Recife - PE

20

Page 21: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Aplicativos Desktop

http://www.blender.org/

II Workshop de Software Livre - CIN/UFPE - Recife - PE

21

Page 22: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Quem usa Python?

22

II Workshop de Software Livre - CIN/UFPE - Recife - PE

22

Page 23: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... e aqui no Brasil também!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

23

Page 24: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Python entre as 10 + !

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

II Workshop de Software Livre - CIN/UFPE - Recife - PE

24

Page 25: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

O que é python ?

É fácil

É poderosoÉ poderoso

II Workshop de Software Livre - CIN/UFPE - Recife - PE

25

Page 26: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

O que é python ?

É fácil

É poderosoÉ poderoso

É divertido

II Workshop de Software Livre - CIN/UFPE - Recife - PE

25

Page 27: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Fácil e poderoso!

lista = ['laranja', 'banana', 'uva']

lista.sort()

 

for item in lista:

    print item.capitalize()

II Workshop de Software Livre - CIN/UFPE - Recife - PE

26

Page 28: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Hun, sei o que é Python!

...E agora como eu começo ?

II Workshop de Software Livre - CIN/UFPE - Recife - PE

27

Page 29: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instaladores• Interpretador Python disponível para diversas

plataformas.

• Windows, Unix, Linux, etc.

• Para usuários Windows, é necessário o download do SDK!

• http://www.python.org/download/

28II Workshop de Software Livre - CIN/UFPE - Recife - PE

28

Page 30: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instaladores

• Atualmente Python está na versão 2.7.1 / 3.2

• No Python 3.0 houve mudanças críticas! 2.7.x suaviliza a transição para os desenvolvedores (Muitos frameworks ainda escritos para Python 2.x)

29II Workshop de Software Livre - CIN/UFPE - Recife - PE

29

Page 31: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instaladores (Windows)

30II Workshop de Software Livre - CIN/UFPE - Recife - PE

30

Page 32: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instaladores (Windows)• Não esqueça de adicionar o caminho da instalação

no PATH do sistema!

• ;C:\Python2x

• >>> 2 + 3

• >>> 5

31

Windows 7Approved!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

31

Page 33: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instaladores• E enquanto no Linux e Unix ?

• Estas distribuições já disponibilizam para você de forma nativa!

• Prompt do python “>>>”:

• Para sair:

• No Unix, digite CONTROL-D

• No Windows, digite CONTROL-Z + ENTER

32II Workshop de Software Livre - CIN/UFPE - Recife - PE

32

Page 34: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Vamos executar!...E agora como eu crio meu

programa em python ?

33II Workshop de Software Livre - CIN/UFPE - Recife - PE

33

Page 35: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Rodando Programas no Unix• Os arquivos python tem finalização .py!

• Você pode usar qualquer editor de texto para codificar o seu código!

• No Windows : Clássico Notepad ou o IDLE...

• No Mac OS/Linux: VI, TextEdit, GEdit, TextMate ...

34

%python filename.py

Para tornar o arquivo *.py executável: #!/usr/bin/python

Para aceitar textos com acentos e caracteres especiais:

# -*- coding: utf-8 -*-

II Workshop de Software Livre - CIN/UFPE - Recife - PE

34

Page 36: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Ambiente IDLE

35

• Ambiente Shell de desenvolvimento básico

• Editor de texto com highlighting e identação automática para criação de arquivos python

• Comandos para alterar propriedades e execução de programas

II Workshop de Software Livre - CIN/UFPE - Recife - PE

35

Page 37: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Desenvolvimento... E ambientes de

desenvolvimento para Python ?

36II Workshop de Software Livre - CIN/UFPE - Recife - PE

36

Page 38: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Eclipse

37

• Aptana PyDev

• Plugin para desenvolvimento de aplicações Python para o Eclipse

• Suporte para Debug, UnitTests.

• http://pydev.org/

II Workshop de Software Livre - CIN/UFPE - Recife - PE

37

Page 39: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Netbeans

38

• Netbeans >= 6.5

• Plugin para desenvolvimento de aplicações Python para o Netbeans

• Suporte para Debug, UnitTests, etc.

• http://wiki.netbeans.org/PythonInstall

II Workshop de Software Livre - CIN/UFPE - Recife - PE

38

Page 40: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

ActivePython

39

• ActiveState Python

• Distribuição Python completa, instale e execute!

• Diversos plug-ins e suporte já ao Python 3.0

• http://www.activestate.com/activepython/

II Workshop de Software Livre - CIN/UFPE - Recife - PE

39

Page 41: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

EasyClipse

40

• Distribuição customizada do Eclipse!

• Distribuição pronta para uso, inclusive com o ambiente para Python!

• Pydev já vem instalado !

• http://www.easyeclipse.org/

II Workshop de Software Livre - CIN/UFPE - Recife - PE

40

Page 42: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

PyCharm

41

• IDE em Python customizada com suporte incluso ao Django

• Excelente IDE para desenvolvimento WEB

• 30 dias gratuito

• http://www.jetbrains.com/pycharm/

II Workshop de Software Livre - CIN/UFPE - Recife - PE

41

Page 43: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Outros Editores

42

Notepad++, GEdit, VIM, Emacs, IDLE, Eric IDE, TextMate, etc.

Vários editores ao seu dispor compatíveis com Python!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

42

Page 44: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Seu shell incrementado...

43

• IPython (Disponível para Linux, Mac, Windows)

• http://ipython.scipy.org/

• BPython (Disponível para Linux e Mac OS)

• http://bpython-interpreter.org/

• Incrementam o shell do seu interpretador Python com auto-complete, highlighting, etc.

II Workshop de Software Livre - CIN/UFPE - Recife - PE

43

Page 45: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Chega de conversa...

44

• É hora de por a mão na massa!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

44

Page 46: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Por onde começo ?

... Criando nosso primeiro Hello World !

45II Workshop de Software Livre - CIN/UFPE - Recife - PE

45

Page 47: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... em Python ...

46

print “Hello World”

Exemplos1.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

46

Page 48: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Tipos e operaçõesVamos ver um trecho de código em

Python!

47II Workshop de Software Livre - CIN/UFPE - Recife - PE

47

Page 49: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Código Base

48II Workshop de Software Livre - CIN/UFPE - Recife - PE

48

Page 50: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

49

• Atribuição utiliza = e comparação utiliza ==

II Workshop de Software Livre - CIN/UFPE - Recife - PE

49

Page 51: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

50

• Atribuição utiliza = e comparação utiliza ==

II Workshop de Software Livre - CIN/UFPE - Recife - PE

50

Page 52: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

51

• Números: + - * / % tem suas funções características

• + pode ser usado como concatenação de Strings;

• % pode ser usado para formatar Strings (assim como em C).

II Workshop de Software Livre - CIN/UFPE - Recife - PE

51

Page 53: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

52

• Números: + - * / % tem suas funções características

• + pode ser usado como concatenação de Strings;

• % pode ser usado para formatar Strings (assim como em C).

II Workshop de Software Livre - CIN/UFPE - Recife - PE

52

Page 54: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

53

• Operadores lógicos são palavras e não símbolos (||, &&)

• and, or, not

II Workshop de Software Livre - CIN/UFPE - Recife - PE

53

Page 55: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

54

• Operadores lógicos são palavras e não símbolos (||, &&)

• and, or, not

II Workshop de Software Livre - CIN/UFPE - Recife - PE

54

Page 56: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

55

• print é o comando básico para “impressão” na tela

II Workshop de Software Livre - CIN/UFPE - Recife - PE

55

Page 57: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

56

• print é o comando básico para “impressão” na tela

II Workshop de Software Livre - CIN/UFPE - Recife - PE

56

Page 58: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

57

• E se você quiser receber uma entrada diretamente do usuário ?

• raw_input() - retorna uma string !

Exemplos1.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

57

Page 59: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

58

• A primeira atribuição em uma variável também é responsável por cria-lá.• Os tipos das variáveis não precisam ser informados;

• Python descobre o tipo da variável por conta própria!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

58

Page 60: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... entendendo o código...

59

• A primeira atribuição em uma variável também é responsável por cria-lá.• Os tipos das variáveis não precisam ser informados;

• Python descobre o tipo da variável por conta própria!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

59

Page 61: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... Usando o Shell

60

!!"#$%&'&'"()**+,-

! .#/#'&01)/'2$3&/4#56)"'7&4&'481&%&"')'#1/2091&"'%)'94'&0:)1&'0#"1#');)791#/'&'7&4#$%&'<%2/=>'?0">@'A9%&')4'.B1(&$'8'&0:)1&C

!DDD%2/+<"1/2$E'%)'1)"1)=-

!F19%&'"&0/)'"1/2$E"CD

!DDD

! .#/#'G2"9#*2H#/'#'%&794)$1#5I&'%)'94'?0:)1&'0#"1#');)791#/'&'7&4#$%&'<()*J=

!DDD()*J+KLLL-

!FM&794)$1#5I&'%&'&0:)1&'N$1)2/&D

!DDD

II Workshop de Software Livre - CIN/UFPE - Recife - PE

60

Page 62: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

... Usando o Shell

61

!!"#$%&'&'"()**+,-

! .#/#'/)0)12/'&'3&4#$%&'#$1)/2&/'0&%)5")

!!"#/'#'")1#'0#/#'324#!62721#/'89:

! .#/#'$#;)7#/')$1/)'&"'3&4#$%&'<=')>)3?1#%&"'@#"1#'?"#/'#"'")1#"'0#/#'324#')'0#/#'@#2>&

! .#/#'&@1)/'#<?%#'7)/#*')>)3?1#5")'&'3&4#$%&'A()*0+-B

!.#/#'"#2/'%&'()*0'AC?21B!.#/#'&@1)/'#'*2"1#'%&"'4D%?*&"'A4&%?*)"B

! .#/#'2$1)//&40)/'#*7?4'3&4#$%&'A31/*'E'FB

II Workshop de Software Livre - CIN/UFPE - Recife - PE

61

Page 63: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Whitespace

62

• Importante para identação e novas linhas• Use \ para quando for para uma próxima linha prematuramente.

• Em Python não há { } !! Isso é para definição de dicionários (dict)

• Blocos de código definidos por identação!

Exemplos1.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

62

Page 64: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Comentários

63

• Comentários começam com #• Convenção: Você pode definir uma “documentação” em string como

primeira linha de qualquer nova função que você definir.

• Muito importante para o desenvolvedor, crítico para o usuário!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

63

Page 65: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Conhecendo a linguagem...

64

!!"#"$%&#'(%)$"*+&*%),-

! .)/"0)$"0&/%&*%),"+"

!12&0,3-!444"*5*67

!444"*5*8%&(%&9

!444

! :-#%&0&/%&*%),"+";*/<-*&2)(%&*$"(%=

!>&*?@)(&#*0@+"#*-*%),-;*@(&*@0"*A@/B<-!12&0,3-

! 444"*5*C)/%D*6=7*E*1FFGHHH

! 444"*5*)/%C6=7D

II Workshop de Software Livre - CIN/UFPE - Recife - PE

64

Page 66: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Conhecendo a linguagem...

65

!!"#$%&%'(")

! *+,-.,))/0-1"#$%&%'+,-1"-20.,)

! 3%4%! 052-%-6-78

!9:2;,5! %-6-7

! *+,-.,))/0-#,<%51,)-1"#$%&%204,)-=>?@40,)AB

! 3%4%! C$D,-5-6-5"E-C$D,=B8

!9:2;,5! 5-6-C$D,=B

II Workshop de Software Livre - CIN/UFPE - Recife - PE

65

Page 67: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Tipos Básicos

66

• Inteiros (padrão para números)• Divisão entre inteiros, resposta um inteiro!

• Inteiros Longos • L ou l no final. (Convertido automaticamente com precisão de inteiros >

32 bits)

• Floats (ponto flutuante)• 1.23, 3.4e-10

• Complexas • >> 2 + 3j

Exemplos1.pyII Workshop de Software Livre - CIN/UFPE - Recife - PE

66

Page 68: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Tipos Básicos

67

• Representação numérica• Representação de dígitos com/sem formatação de string

• Divisão clássica / base • Uso dos operadores // e /

• Operações em nível de bit• 1 << 2 , 1| 2 , 1&2

• Notações hexadecimal / octal• 2 , 0x10 , 0100 , oct(64), hex(255) , int(‘200’), int(‘0100’,8) , int(‘0x40’,16)

• Operações válidas: +, *, >> , ** , pow, abs, round, etc.Exemplos1.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

67

Page 69: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Tipos Básicos

68

• Strings• “abc” ou ‘abc’

Exemplo1.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

!!"#$%&'&($)*"+",-.%

"#$%&'& ()*&+,&$-(.(/01(

/01 2.3$+&45.

/061 ).3$+&$5&785"9

/:1 )"7$+&45.

/:61 )"7$+&$5&785"9

/661 785"9&;$<=.>$&':+.?.+@3(7"A

/B61 #7?.+.3>.

/0:1 #7?.+.3>.

/7%1 785"9#"#.&#.&$<=.>$%

/7%&3$>1 #7?.+.3,"&#.&$<=.>$%

!!!"#$%&!&'()*%

!"#$%&'()*$&+&)('#%,$-+.../

!!!+,(-.#/&0&+1()2%3444/

'()*%

68

Page 70: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Comandos básicos

69

• Alguns comandos básicos que podem ajudar no ínicio!• dir(element) - todos os atributos e métodos que estão associados a

elemento.

• type(element) - Descobrir o tipo do objeto!

• import - importe módulos para uso no seu código!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

!

!"#$%&'()$*"+),-$.*/0&/%($.

! 1$"'()$*"#$%&'

!20/3,&'*&,)$*4,/*/.&56/%*/"*#%5"/5%$*7-$3$*($*"+),-$

!8$%('*65.96/-*$7:/&$.*/*./,.*%/.#/3&56$.*";&$)$.

!"#$%& !"#$%&#

!"#$%& !"#$%&#'(&)#

!"#$%& !"#$%&#'(&)#!'(!"(&)

) %$"!"#$%&#!!"#$%& !*

) %$"!"#$%&#!!"#$%& !(&)#

) %$"!"#$%&#!!"#$%& !(&)#'+,-"!'(!(+,

69

Page 71: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Exercício 01

70

• Faça um programa que peça 2 números e um real.• Calcule e mostre:

• O produto do dobro do primeiro com a metade do segundo

• A soma do triplo do primeiro com o terceiro

• O terceiro elevado ao cubo

II Workshop de Software Livre - CIN/UFPE - Recife - PE

70

Page 72: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Atribuição... Vamos entender como funciona

atribuição!

71II Workshop de Software Livre - CIN/UFPE - Recife - PE

71

Page 73: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Atribuição

72

• Atribuição de uma variável em Python significa criar um rótulo para armazenar uma referência para algum objeto.• Atribuição cria referências e não cópias!

• Inferência do tipo da referência baseado no tipo de dado atribuído

• A referência é deletada por meio de Garbage Collection• Quando o objeto deixa de ser referenciado por nenhum outro

rótulo(variável).

II Workshop de Software Livre - CIN/UFPE - Recife - PE

72

Page 74: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Atribuição

73

• Lembre-se que Python a tipagem é dinâmica!• Declarar variáveis sem atribuí-las irá levantar um erro!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

73

Page 75: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Atribuição

74

• Você pode inicializar várias variáveis de uma só vez!• x = y = z = 2.0

• Rótulos de variáveis são Case Sensitive e não podem iniciar com número. Números, letras e underscores são permitidos!• bob bob_2 _bob _2_bob bob_2 BoB

• Não esquecer das palavras reservadas!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

74

Page 76: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Atribuição

75

• Entendendo manipulação de atribuição de referências• x = y não significa que você fez uma cópia de y!

• x = y o que realmente faz é x referencia ao objeto que y referencia!

• O que realmente acontece por trás dessa simples atribuição:

II Workshop de Software Livre - CIN/UFPE - Recife - PE

75

Page 77: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Atribuição

76

• Mas e se fizermos isso ?! Qual será o valor de x ?

>>> x = “casa”

>>> y = x

>>> x = “fazenda”

>>> print x

II Workshop de Software Livre - CIN/UFPE - Recife - PE

76

Page 78: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Atribuição

77

• Mas e se fizermos isso ?! Qual será o valor de x ?

• Do mesmo jeito que nós esperávamos! Dados nativos são imutáveis! (String, Inteiros, float, complexos).

>>> x = “casa”

>>> y = x

>>> y = “fazenda”

>>> print x

>>> x = “casa” #cria 3, x referencia ao objeto string “casa”

>>> y = x # Cria variavel y, referencia ao objeto string “casa”

>>> y = “fazenda” #Cria referencia ao objeto string “fazenda”

>>> print x # Nenhum efeito em x, ainda referencia “casa”

>>> casa

II Workshop de Software Livre - CIN/UFPE - Recife - PE

77

Page 79: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Listas, Strings e Tuplas

... O poder de python agora!

78II Workshop de Software Livre - CIN/UFPE - Recife - PE

78

Page 80: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Listas, Strings e Tuplas

79

• Todos os três são Sequências!• Podem ser indexados por algum valor ordinal posicional

• Todas as operações apresentadas aqui nesta seção podem ser aplicadas em todos os tipos de sequência

• Listas• li = [1,2,3, ‘abc’]

• Tuplas• li = (23, ‘abc’, 4.56, (2,3), ‘def’)

• Strings• st = “Hello World” st = ‘Hello World’

Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

79

Page 81: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Listas, Strings e Tuplas

80

• Manipulando sequências!• Pelo índice a partir de 0 Ex: ti [0]

• Índices podem ser positivos ou negativos! Ex: ti[1] (esq.) ti[-4] (dir.)

• Fracionamento e matrizes!• li[1:3] L[1:] matrix = [[1,3,4] , [3,5,6] , [7,8,9]]

• Operador in• retorna um booleano. Checa se um valor está em uma sequência!

• 4 in li

Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

80

Page 82: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Listas, Strings e Tuplas

81

Exemplos2

!

!"#$%#&'&%()##%*+,&"$)*#

! -*+"()&.,#"$"/,#&)&*)0%$"/,#

!!!"#$#%&'(')'*'+,#!"#$%&'()*%)+$,-%

!!!"%-,

&

!!!"%(,

)

!!!"%.&,

+

!!!"%.),

)

!!!"%&/,

%(')'*'+,

!!!"%/),

%&'('),

!!!"%&/*/(,#!%"#.,"$*()()/%,,(0)"(+.-%1,.)/2+%3*()*.)4).5)4

%('*,

!!!"%//.&,

%+'*')'('&,#!/%,,()3.6%-$7()$37.#-.)%),.8293"$%

II Workshop de Software Livre - CIN/UFPE - Recife - PE

81

Page 83: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Operacões em Listas

82

• Operador + , *• a = “Hello” + “ World” (concatenação)

• [3] * 4 (repetição)

• Operador len() e append()• len() - retorna um inteiro com o tamanho da sequência!

• append() - adiciona um elemento ao final da lista!

• Atribuição• list[0] = ‘3’

• Fazendo cópias de sequência , Cuidado!!!Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

82

Page 84: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Operacões em Listas

83

• Qual será o valor de b ?

>>> a = [1,2,3]

>>> b = a

>>> a.append(4)

>>> print b

II Workshop de Software Livre - CIN/UFPE - Recife - PE

83

Page 85: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Operacões em Listas

84

• Qual será o valor de b ?

• Surpresa!

• Dados do tipo listas, dicionarios e pré-definidos pelo usuário são mutáveis!

>>> a = [1,2,3]

>>> b = a

>>> a.append(4)

>>> print b

>>> b = [1,2,3,4]

II Workshop de Software Livre - CIN/UFPE - Recife - PE

84

Page 86: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Operacões em Listas

85II Workshop de Software Livre - CIN/UFPE - Recife - PE

85

Page 87: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Operacões em Listas

86

• Para fazer cópias de listas• a = b[:] (2 cópias independentes)

• a = b (os 2 referenciam o mesmo objeto)

• Qual a diferença entre listas e tuplas ?• Listas são mutáveis e Tuplas imutáveis!

• l = [1,‘abc’,4] t = (1,‘abc’,4,5)

• Atribuição em listas e tuplas• list[0] = ‘3‘ ok!

• t[0] = 3 NOK!!! (Deve-se criar uma nova tupla! - t = (3, ‘abc’,4,5)

Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

86

Page 88: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Tuplas x Listas

87

• Listas são mais lentas porém mais poderosas que tuplas• Listas podem ser modificadas e tem diversos operadores que podem ser

utilizados

• Tuplas são imutáveis e tem menos funcionalidades!

• Para converter entre listas e tuplas ?

Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

!

!"#$%&

! '(%)*+%,-.)-/*0"%*&/%/$*&)%&1/+2,/",%/3*4-(-.5%/&")*$1/&62/*,")78-*&

! /9&%:&-/%/4".562/)"#$-;</#%(%/)(%.&42(,%(/2")(2&/)*#2&/-,/)"#$%&

!!!"#$#%&'(')'*'+,

!!!-./012"3

2&'(')'*'+3

!!!045-2-./012"33

%&'(')'*'+,

!!!610/2-./013#!"#$%&%'#"())

87

Page 89: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Exercício 02

88

!

!"#$%&%'()*+*

! ,(-.$#/0#)1-)-#23'4.#)5'-.1-6)7#$'8171-)7#9

!:;6*6<6=6>6?6@6A6B6C6*;6**6*<6*=6*>6*?D! E4.#$815()7#)*)1)C

! E4.#$815()7#)B)1)*=

! FG0#$(-)H1$#-

! FG0#$(-)&0H1$#-

! I(7(-)(-)0G5.'H5(-)7#)<6)=)#)>

! J'-.1)$#8#$-1

! K1LM()#4.$#)1)-(01)7()'4.#$815()7#)*;)1)*?)H#5()'4.#$815()7#)=)1)C)#0)N5(1.O

II Workshop de Software Livre - CIN/UFPE - Recife - PE

88

Page 90: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Métodos muito usados

89

• append(), insert(), extend(), del()

• min(), max()

• index(), count(), remove(), pop()

• reverse() , sort()

• etc.

Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

89

Page 91: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Strings

90

• Formatação e conversão de Strings

• Usam os mesmos operadores básicos de lista

• Multi-Strings, Strings com aspas simples e duplas

• Caracteres Speciais e str() e unicode()

Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

90

Page 92: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Strings

91

• Também uma sequência e é Imutável!• “42” + 1 (erro!) Use “42” + str(1)

• float(), int() -> string para numéro

• Atribuição • S = ‘spam’ S[0] = ‘x’ ERRO!!!

• Strings são imutáveis!

• String -> Lista -> String (.join)

• Formatação de string

Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

91

Page 93: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Métodos mais usados

92

• find(), replace(), join(), split()

• isdigit(), islower(), strip(),

• startswith(), upper(), lower()

• etc.

Exemplos2.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

92

Page 94: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Exercício 03

93

• Crie uma lista com o nome de 10 pessoas e sorteie uma pessoa, depois embaralhe novamente e sorteie outra (sem repetição)

• Dica: help(random) - módulo para aleatoriedade.

• Faça um programa que permita ao usuário digitar o nome e em seguida mostrar ao usuário de trás pra frente somente em letras maiúsculas.

• Dica: Procure pela documentação do help(“”) !

II Workshop de Software Livre - CIN/UFPE - Recife - PE

93

Page 95: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Dicionários

Um “hash map” pythonico!

94II Workshop de Software Livre - CIN/UFPE - Recife - PE

94

Page 96: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Dicionários

95

• Estrutura de dados em forma de coleções onde os items são armazenados e buscados pela chave em vez do deslocamento posicional. • Chaves podem ser quaisquer objetos do tipo imutável

• Valores podem ser de qualquer tipo

• Um dicionário pode armazenar diferentes tipos de valores e é mutável!

• Criando e modificando dicionários!• d = {“user” : “Marcel” , “password”: 2342}

Exemplos3.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

95

Page 97: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Dicionários

96

• Dicionários não são ordenados!• Uma nova chave pode aparecer em qualquerr lugar

• Funciona como “hashing”

• Algums métodos:• has_key(‘eggs’) , clear() , del d[‘key’] , keys(), values(), items(), get() , update()

• copy() fazer cópias de dicionários ! (Lembre-se que dicionario é mutável!)

Exemplos3.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

96

Page 98: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Arquivos

Como é fácil manipular um arquivo!

97II Workshop de Software Livre - CIN/UFPE - Recife - PE

97

Page 99: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Arquivos

98

• Apenas uma linha para abrir um arquivo!• file = open(“data”, ‘r’) tipos: r, a, w

• Alguns métodos para operações em arquivos:• file.read(), readline(), readlines(),

• file.write(), writelines(),

• file.close()

Exemplos3.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

98

Page 100: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Booleanos

Expressões lógicas

99II Workshop de Software Livre - CIN/UFPE - Recife - PE

99

Page 101: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Expressões lógicas

100

• True e False são constantes em Python• False : 0, None, [] , {} , 0.0

• True: Valores Numéricos exceto 0, objeto não vazios

• Um dicionário pode armazenar diferentes tipos de valores e é mutável!

• Operadores de comparação: ==, != , < , <=, etc.• X == Y ( efetua teste de equivalência de valor)

• X is Y (Testa a identidade do objeto)

Exemplos3.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

100

Page 102: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Expressões lógicas

101

• None é similar ao NULL em linguagem C• L = [None] * 100 (declara uma lista de 100 items None )

• Operações com or e and• not -> inversão lógica (true -> false , false -> true)

• and e or (&& e II)

• isinstance(element,type)• Verifica se um elemento é do tipo type

Exemplos3

II Workshop de Software Livre - CIN/UFPE - Recife - PE

101

Page 103: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Exercício 03

102II Workshop de Software Livre - CIN/UFPE - Recife - PE

102

Page 104: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Exercício 04

103II Workshop de Software Livre - CIN/UFPE - Recife - PE

103

Page 105: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instruções compostasIf python == “cool”:

print “Oh yeah!”

104II Workshop de Software Livre - CIN/UFPE - Recife - PE

104

Page 106: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Fluxo de Controle

105

• Várias expressões Python para controlar o fluxo do programa. Todos eles fazem uso de testes condicionais booleanos.• ifs, else

• loops while, for

II Workshop de Software Livre - CIN/UFPE - Recife - PE

105

Page 107: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instruções if

106

Exemplos4

II Workshop de Software Livre - CIN/UFPE - Recife - PE

106

Page 108: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instruções while

107

Exemplos4

II Workshop de Software Livre - CIN/UFPE - Recife - PE

107

Page 109: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instruções while

108

• Você pode usar o comando break para sair do loop mais próximo que a envolve.

• Você pode usar o comando continue para pular para o ínicio do loop mais próximo que a envolve e pular para a próxima iteração.

• Você pode usar o comando pass quando você não quer que se faça nada (instrução vazia)

• Você pode o o bloco else do loop para quando se quer executar um código quando se sai normalmente do loop (sem ser por comando break)

Exemplos4.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

108

Page 110: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instruções for

109

• Loops for iteram sobre uma sequência de items (listas, tuplas, string ou quaisquer outros objetos cuja a linguagem considere como um “iterator”)

• Várias maneiras de iterar sobre um conjunto de items!

• Também possui o bloco else quando se sai normalmente do loop (similar ao while)

• Função muito usada nos loops for: range()• range() - Retorna uma lista de números que varia de 0 a ao número passado

como parâmetro.Exemplos4.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

109

Page 111: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instruções for

110II Workshop de Software Livre - CIN/UFPE - Recife - PE

110

Page 112: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Instrução zip

111

• A função range() percorre sequências de maneira exaustiva. A função interna zip permite usar loops for para visitar várias sequências em paralelo.

• zip() é bastante poderoso, pode unir sequências onde retorna uma lista de tuplas que se distribuem em pares os items paralelos extraídos dessas sequências.

• Permite também facilitar a construção de dícionarios!• x = dict(zip(kes,vals))

Exemplos4.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

!

� � � � � � � � � � � � � � � � � � � � � � � � �

! � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

! � � � � � � �! % % % � � � � & � � ! ' & " # ( ' �! & � � � " � � � � � # � � � ! � ( � '! % % % � � � � & � � ! ' & " # ( ' & ) * $ ' �! & � � � " � ) � � � � � # � * � � � ! � ( � $ � '! % % % � � � � & � � ! ' & " # ( ' & ) * ' �! & � � � " � ) � � � � � # � * � '

111

Page 113: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Compreensão de listas

[i for i in “python é fácil demais”]

112II Workshop de Software Livre - CIN/UFPE - Recife - PE

112

Page 114: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Compreensão de listas

113

• Funcionalidade muito poderosa da linguagem Python• Gera uma lista nova aplicando uma função para cada elemento da lista original.

• Muito usado por programadores Python! (Economia de código!)

• A sintaxe da compreensão de lista usa-se de palavra-chaves:

• [expression for name in list]

Exemplos4.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

!

!"#$%&&'()"*+&*,-(./(

! 01.2"'*(3$"%./*4"#$%&(()"*+&*,-(./(5*4%-/*,-(./(*+&*6"%#/*674-,*&*%7$-+/8*9*3("*+&*4"#$%&(()"*+&*,-(./(*:*;&#*4"#3#*&#*#/.&#7.-4/8

! 0"%*&<&#$,"

!=*>*?<@*A*<*-'*?B*888*CDD!E*>*?<*F*<*-'*=*/'+*<*&G&'D

! H#*$1.2"'*.&#"(

!III(*>*J<KKL*6"%*<*-'*%/'M&NOBPQ!III#*>*J<*6"%*<*-'*(*-6*<RL*>>*BQ

113

Page 115: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Compreensão de listas

114

• Permite também o uso de filtros (deteminam se uma determina expressão deve ser executada sobre um membro da lista)

• [expression for name in list if filter ]

Exemplos4.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

!

!"#$%&&'()"*+&*,-(./(012

! 3.-,-4/%*+-5-"'6%-"(7*&8&#$,"9

! :::+;<=>",?=9@AAAA7=5&,./=9BCAAA7=D-,E8=9FGAAA7=?E(5/=91AAAH

! :::$"((-I-,-+/+&(J%-5"*;*K5/%*?"%*5/%*-'*+*-?*+K5/%L*M*NAAAAL

! :::$"((-I-,-+/+&(J$"I%&*;*K5/%*?"%*5/%*-'*+*-?*+K5/%L*M*1AAL

! O#*(.%-'>(

! :::*'"#&*;*=P'P'*QQ*OQP'QQ(Q.QP'P'QP'/*?Q%P'P'/QQQ(P'&*P.-QQ'RQQ/Q*Q(QQEP'QSP'&QQP'P'Q-P'%QQ/QT***P'QQ*P'P'P'P'=

! :::==TS"-'0K8*?"%*8*-'*'"#&*-?*8U;=Q=*/'+*8U;=P'=L2T(.%-$02

114

Page 116: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Exercício 05

115

• Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50 (usando compreensão de listas!)

!

!"#$%&%'()*+*

! ,#-.()/01)2'341)5#)-(0#3)5#)%2133#3)(3)6/1'3)#347()#3%$'4(3)-()#34'2()/-5#$2'-#)89-(0#:(/4$(:-(0#;<)#)1=($1)0/5(/>3#)()?15$7()?1$1)@10#2@13#+)A#5#>3#)/0)2'341)%(0)(3)-(0#3)4(5(3)#0)@10#2@13#+

! BBB2'341:-(0#:%2133#3CD94#21:?$'-%'?12;E;01?1:5#:5'3?(3'4'F(3;E;%2133#:-#=(%'(:?#315(;E;1%/0/215($;E;G'0:51:2'341:5#):5#:%2133#3:5(:#"#$%'%'(;H

!I'%1J!K3#)13)G/-LM#3)34$+4'42#)#)34$+3?2'4

! N#?(341O

! $#3?(341)C)DPP+Q('-8DR+4'42#8<)G($)R)'-)SH<)G($)S)'-)D"+3?2'48P:P<)G($)")'-)2'341:-(0#:%2133#3HH

II Workshop de Software Livre - CIN/UFPE - Recife - PE

115

Page 117: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Funções

...Seu programa tendo cara de programa!

116II Workshop de Software Livre - CIN/UFPE - Recife - PE

116

Page 118: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Definindo Funções

117

Definição da função inicia com “def ”

II Workshop de Software Livre - CIN/UFPE - Recife - PE

117

Page 119: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Definindo Funções

118

Definição da função inicia com “def ” Nome da função

II Workshop de Software Livre - CIN/UFPE - Recife - PE

118

Page 120: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Definindo Funções

119

Definição da função inicia com “def ” Nome da função Argumentos

II Workshop de Software Livre - CIN/UFPE - Recife - PE

119

Page 121: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Definindo Funções

120

Definição da função inicia com “def ” Nome da função Argumentos

Identação

II Workshop de Software Livre - CIN/UFPE - Recife - PE

120

Page 122: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Definindo Funções

121

Definição da função inicia com “def ” Nome da função Argumentos

Identação

“return” indica o retorno da função

II Workshop de Software Livre - CIN/UFPE - Recife - PE

121

Page 123: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Definindo Funções

122

Definição da função inicia com “def ” Nome da função Argumentos

Identação

“return” indica o retorno da função

Sem header fileSem declaração do tipo de retorno da função ou do tipo dos argumentos

II Workshop de Software Livre - CIN/UFPE - Recife - PE

122

Page 124: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Chamando uma função

123

>>> def myfun(x, y): return x * y>>> myfun(3, 4)12

• Sintaxe básica para chamar uma função:

Exemplos5.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

123

Page 125: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Passagem de parâmetros

124

• Várias métricas podem ser usadas na passagem dos parâmetros de uma função:

>>> def myfun(x, y): return x * y>>> myfun(3, 4)12>>> myfun(y=3, x=4)12>>> myfun(3, y=4)12

Exemplos5.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

124

Page 126: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Parâmetros com valores padrões

125

• Cada parâmetro pode ter um valor padrão.

• Utilizado quando um parâmetro é omitido na chamada da função

def myfun(x, y = 0.3, prompt = True): res = x * y if prompt: print “Resposta é %f”, res return res

Exemplos5.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

125

Page 127: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Parâmetros com valores padrões

126

def myfun(x, y = 4, prompt = True): res = x * y if prompt: print “Resposta é %i”, res return res

• Esta função pode ser invocada de várias formas:

>>> myfun(3)Resposta é 1212>>> myfun(x=3, prompt = False)12>>> myfun(5, 2, False)10 Exemplos5.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

126

Page 128: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Valor de retorno

127

• Toda função em Python retorna alguma valor;

• Mesmo funções que não possuem a cláusula return.

• Funções que não possuem return retornam None.

• None é uma constante especial definida na linguagem;

• Similar a NULL, void, ou nil em outras linaguagens;

• É lógicamente equivalente à False;

• O interpretador não imprime None.

II Workshop de Software Livre - CIN/UFPE - Recife - PE

127

Page 129: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Valor de retorno

128

• Uma função pode retornar mais de um valor

>>> def teste(): x = 1

y = 2z = 3

return x, y, z

>>> x, y, z = teste()>>> ret = teste()>>> ret(1, 2, 3)

Exemplos5.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

128

Page 130: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Algumas funções especiais

129

... e Python também tem seu momento funcional!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

129

Page 131: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Parâmetros args

130

Exemplos5.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

130

Page 132: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Funções map, reduce e filter

131

• Função map(func, seq)

• Função interna que aplica uma função func a cada item de um objeto sequência (seq) e retorna uma lista com os resultados da chamada da função.

• Função filter(func, seq)

• Função interna que aplica uma função filtro func a cada item de um objeto sequência (seq) e retorna uma lista com os resultados que satisfazem os critérios

da função de teste seq.

Exemplos5.py

II Workshop de Software Livre - CIN/UFPE - Recife - PE

131

Page 133: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Módulos

132

... Módulos: o que é, como criar e como utilizar.

II Workshop de Software Livre - CIN/UFPE - Recife - PE

132

Page 134: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Introdução 1/2

133

• Quando você encerra o interpretador, todas as definições de variáveis e funções são perdidas;

• Solução é gerar um script e roda-lo.

• Mas e se você desejar utilizar um determinada função do script em outro programa?

• Solução são os módulos!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

133

Page 135: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Introdução 2/2

134

• Um módulo é um arquivo .py contendo definições e comandos Python:

• Funções

• Variáveis e constantes

• Classes

• ...

• Vantagem é a possibilidade de adicionar todas estas definições em outros arquivos ou módulos.

• Isto é feito utilizando a cláusula import

II Workshop de Software Livre - CIN/UFPE - Recife - PE

134

Page 136: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Executando módulos como scripts

135

• Rodar um módulo Python é similar a importar as definições do módulo para o interpretador.

• Se você fizer python meuModulo.py irá carregar as definições e destruir logo em seguida!

• Para executar algum determinado código de maneira similar à um script você deve testar a cláusula __name__ :

Exemplos5.py

if __name__ == “__main__”: print “Execute algum código”

II Workshop de Software Livre - CIN/UFPE - Recife - PE

135

Page 137: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Pacotes

136

• Pacotes são coleções de módulos Python.

• Qualquer diretório do sistema operacional que contém um arquivo __init__.py dentro é considerado um pacote.

• Pacotes organizam módulos e permitem que programadores importem módulos da seguinte maneira:

• import meuPacote.meuSubPacote.meuModulo

# meuPacote/# __init__.py -- vazio# meuSubPacote/# __init__.py -- vazio# meuModulo.py -- modulo importado

II Workshop de Software Livre - CIN/UFPE - Recife - PE

136

Page 138: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Caminho de busca dos módulos

137

• Quando você executa import meuModulo o interpretador procura pelo arquivo meuModulo.py seguindo uma determinada regra.

• Primeiramente ele procura pelo arquivo no diretório corrente (onde o interpretador foi executado).

• Caso ele não encontre o arquivo no diretório corrente, a busca prossegue em uma lista de diretórios que é especificada na variável sys.path

• Você pode atribuir novos diretórios de busca na variável sys.path (ela é uma lista dentro do módulo sys da biblioteca padrão)

• Útil quando você quer instalar seu módulo na máquina de um usuário.

II Workshop de Software Livre - CIN/UFPE - Recife - PE

137

Page 139: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Compilando um módulo Python

138

... Compilando??? Como assim??? Python não é interpretado???

II Workshop de Software Livre - CIN/UFPE - Recife - PE

138

Page 140: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Compilando um módulo Python

139

• Sim, Python é e continua sendo interpretada!

• Python utiliza o conceito de byte-code (muito conhecido em Java).

• O que acontece quando você importa um módulo:

• 1) - Interpretador busca pelo arquivo .py correspondente;

• 2) - Arquivo .py é “compilado” para o byte-code reconhecido pelo interpretador;

• 3) - Byte-Code é incorporado a tabela de símbolos correntes do interpretador.

II Workshop de Software Livre - CIN/UFPE - Recife - PE

139

Page 141: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Compilando um módulo Python

140

• Compilação para byte-code pode ser um gargalo de desempenho quando você carregar um programa!

• Especialmente se você utiliza muitos módulos em seu programa.

• Solução é pré-compilar os módulos antes de rodar seu programa!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

140

Page 142: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Exercício 06

141

II Workshop de Software Livre - CIN/UFPE - Recife - PE

141

Page 143: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

QuickSort

142

• Algoritmo de ordenação bastante utilizado e muito eficiente

• Complexidade BigO(nlogn)

1 . Escolher um pivô inicial x;

2. Colocar todos itens com chave menor que a de x à esquerda de x, formando uma seqüência S1;

3. Colocar todos itens com chave maior que a de x à direita de x, formando uma seqüência S2;

4. Isto feito, o mesmo processo é aplicado às seqüências S1 e S2, que por sua vezproduzirão novos segmentos;

5. O processo deve ser aplicado sucessivamente às seqüências enquantoelas tiverem tamanho ≥ 1;

II Workshop de Software Livre - CIN/UFPE - Recife - PE

142

Page 144: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

QuickSort

143

• Você pensaria assim...

def partition(list, l, e, g): if list == []: return (l, e, g) else: head = list[0] if head < e[0]: return partition(list[1:], l + [head], e, g) elif head > e[0]: return partition(list[1:], l, e, g + [head]) else: return partition(list[1:], l, e + [head], g)

II Workshop de Software Livre - CIN/UFPE - Recife - PE

143

Page 145: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

QuickSort

144

• Agora que você sabe compreensão de listas, você pode fazer assim!

def qsort(L): if len(L) <= 1: return L return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) + [ L[0] ] + \ qsort( [ ge for ge in L[1:] if ge >= L[0] ] )

• E não é que lembra a linguagem funcional Haskel ?!# qsort [] = [] # qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x# where # elts_lt_x = [y | y <- xs, y < x] # elts_greq_x = [y | y <- xs, y >= x]

II Workshop de Software Livre - CIN/UFPE - Recife - PE

144

Page 146: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Ordenação

145

• Mas um programador Pythonico, ainda faria mais eficiente!

list.sort()

• Utiliza-se de uma implementação nativa de Python para ordenação de sequências! Mais eficiente, híbrido com complexidade no pior caso de nlogn.

II Workshop de Software Livre - CIN/UFPE - Recife - PE

145

Page 147: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Python é muito poderoso!

146

• Não precisa reinventar a roda! Molde-a para adaptar ao seu problema!

• A documentação de Python é bastante vasta e há muitas funcionalidades prontas!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

146

Page 148: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Chegamos ao fim! =D

147

Hora da random.choice([pergunta, dúvida, discussão]) !!

II Workshop de Software Livre - CIN/UFPE - Recife - PE

147

Page 149: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Referências

148

• I Workshop CINLUG de Python (Ministrado no CIN)• http://www.cin.ufpe.br/~cinlug/files/workshop-python.1.pdf

• http://www.cin.ufpe.br/~cinlug/files/workshop-python.2.pdf

• Mini-Curso de Introdução a Python (Avaty Tecnologia e Info.)• http://www.avaty.com.br/artigos/CURSO-PYTHON.pdf

II Workshop de Software Livre - CIN/UFPE - Recife - PE

148

Page 150: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE

Hello, I am Python!Marcel Caraciolo

Mini-Curso De Introdução a Python

149II Workshop de Software Livre - CIN/UFPE - Recife - PE

149