0
Hello, I am Python!           Marcel Caraciolo  Mini-Curso De Introdução a Python                      II Workshop de Soft...
Quem é o instrutor ?• Marcel Pinheiro Caraciolo - @marcelcaraciolo   •   Sergipano, porém Recifense.   •   Diretor de Pesq...
!"#$O que é Python ?     Por que Python?                II Workshop de Software Livre - CIN/UFPE - Recife - PE            ...
!"#$ Por que PythonÉ fácil               II Workshop de Software Livre - CIN/UFPE - Recife - PE           4               ...
!"#$Por que é fácil• Semelhança com pseudo-código.                             II Workshop de Software Livre - CIN/UFPE - ...
Hello World Classíco... ‘hello world’ - Python vs { Java, C, PHP e Pascal }                                      II Worksh...
Hello World Classíco.... Em Python ....                      print “Hello World”                                  II Works...
Por que PythonÉ fácil          É poderoso                  II Workshop de Software Livre - CIN/UFPE - Recife - PE         ...
Canivete suíçoTipagem dinâmicaBiblioteca padrão completaMulti-paradigmaMulti-plataformaFacilmente extensívelFree Software ...
Por que é poderoso•   Python para Web    •   Web é presente -> Futuro!    •   Django (http://www.django.org)    •   Zope (...
Webhttp://www.nationalgeographic.com/                                          II Workshop de Software Livre - CIN/UFPE - ...
Webhttp://globo.com                        II Workshop de Software Livre - CIN/UFPE - Recife - PE                   12    ...
Por que é poderoso•   Python para gestão empresarial    •   PyGTK (http://www.pygtk.org)    •   PyQT (http://qt.nokia.com)...
Aplicativos Desktophttp://www.stoq.com.br/   http://taskcoach.org/                           II Workshop de Software Livre...
Aplicativos Desktop      Python + Qt + Qml                  II Workshop de Software Livre - CIN/UFPE - Recife - PE        ...
Python é multi-plataforma•   Python em dispositivos móveis    •   Python for Symbian (PyS60), PySide (Maemo), ASE (Android...
Android (ASE)http://code.google.com/p/android-scripting/                               II Workshop de Software Livre - CIN...
Por que é poderoso                                                     NetworkX        http://pypi.python.org/pypi        ...
Python é multi-plataforma•   PyMT    •   Python Multi Touch    •   Especialmente criado para        ambientes multi-touch ...
PyGame e Jogos   http://www.pygame.org/news.html                     II Workshop de Software Livre - CIN/UFPE - Recife - P...
Aplicativos Desktop      http://www.blender.org/                     II Workshop de Software Livre - CIN/UFPE - Recife - P...
Quem usa Python?              II Workshop de Software Livre - CIN/UFPE - Recife - PE         22                           ...
... e aqui no Brasil também!               II Workshop de Software Livre - CIN/UFPE - Recife - PE                         ...
Python entre as 10 + !     http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html                               ...
O que é python ?É fácil          É poderoso                 II Workshop de Software Livre - CIN/UFPE - Recife - PE        ...
O que é python ?É fácil          É poderoso                           É divertido                 II Workshop de Software ...
Fácil e poderoso!lista = [laranja, banana, uva]lista.sort() for item in lista:    print item.capitalize()                 ...
Hun, sei o que é Python!    ...E agora como eu começo ?                    II Workshop de Software Livre - CIN/UFPE - Reci...
Instaladores•   Interpretador Python disponível para diversas    plataformas.    •   Windows, Unix, Linux, etc.    •   Par...
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...
Instaladores (Windows)               II Workshop de Software Livre - CIN/UFPE - Recife - PE          30                   ...
Instaladores (Windows)•   Não esqueça de adicionar o caminho da instalação    no PATH do sistema!    •   ;C:Python2x      ...
Instaladores•   E enquanto no Linux e Unix ?    •   Estas distribuições já disponibilizam para você de forma nativa!    • ...
Vamos executar!...E agora como eu crio meu    programa em python ?                       II Workshop de Software Livre - C...
Rodando Programas no Unix•     Os arquivos python tem finalização .py!     %python filename.py•     Você pode usar qualquer ...
Ambiente IDLE• Ambiente Shell de  desenvolvimento básico• Editor de texto com  highlighting e identação  automática para c...
Desenvolvimento      ... E ambientes dedesenvolvimento para Python ?                       II Workshop de Software Livre -...
Eclipse• Aptana PyDev• Plugin para  desenvolvimento de  aplicações Python para o  Eclipse• Suporte para Debug,  UnitTests....
Netbeans• Netbeans >= 6.5• Plugin para    desenvolvimento de    aplicações Python para o    Netbeans• Suporte para Debug, ...
ActivePython• ActiveState Python• Distribuição Python    completa, instale e execute!• Diversos plug-ins e suporte    já a...
EasyClipse• Distribuição    customizada do    Eclipse!• Distribuição pronta para    uso, inclusive com o    ambiente para ...
PyCharm• IDE em Python    customizada com    suporte incluso ao    Django• Excelente IDE para    desenvolvimento WEB• 30 d...
Outros EditoresNotepad++, GEdit, VIM, Emacs, IDLE, Eric IDE,              TextMate, etc.Vários editores ao seu dispor comp...
Seu shell incrementado...• IPython (Disponível para Linux, Mac, Windows) • http://ipython.scipy.org/• BPython (Disponível ...
Chega de conversa...• É hora de por a mão na  massa!                                II Workshop de Software Livre - CIN/UF...
Por onde começo ?... Criando nosso primeiro Hello World !                         II Workshop de Software Livre - CIN/UFPE...
... em Python ...  print “Hello World”                                                               Exemplos1.py         ...
Tipos e operações Vamos ver um trecho de código em             Python!                     II Workshop de Software Livre -...
Código Base               II Workshop de Software Livre - CIN/UFPE - Recife - PE          48                              ...
... entendendo o código...• Atribuição utiliza = e comparação utiliza ==                                II Workshop de Sof...
... entendendo o código...• Atribuição utiliza = e comparação utiliza ==                                II Workshop de Sof...
... entendendo o código...• Números: + - * / % tem suas funções características •   + pode ser usado como concatenação de ...
... entendendo o código...• Números: + - * / % tem suas funções características •   + pode ser usado como concatenação de ...
... entendendo o código...• Operadores lógicos são palavras e não símbolos (||,  &&) •   and, or, not                     ...
... entendendo o código...• Operadores lógicos são palavras e não símbolos (||,  &&) •   and, or, not                     ...
... entendendo o código...• print é o comando básico para “impressão” na tela                               II Workshop de...
... entendendo o código...• print é o comando básico para “impressão” na tela                               II Workshop de...
... entendendo o código...• E se você quiser receber uma entrada diretamente  do usuário ?   • raw_input()   - retorna uma...
... entendendo o código...• A primeira atribuição em uma variável também é  responsável por cria-lá.   •   Os tipos das va...
... entendendo o código...• A primeira atribuição em uma variável também é  responsável por cria-lá.   •   Os tipos das va...
! !"#$%&&"()**+,- ... Usando o Shell !   .#/#&01)/2$3&/4#56)"7&4&481&%&")#1/2091&"%)     94&0:)1&0#"1#);)791#/&7&4#$%&<%2/...
! !"#$%&&"()**+,- ... Usando o Shell !   .#/#/)0)12/&3&4#$%&#$1)/2&/0&%)5")     ! !"#/#")1#0#/#324#     ! 62721#/89: !   ....
Whitespace• Importante para identação e novas linhas   •   Use  para quando for para uma próxima linha prematuramente.• Em...
Comentários• Comentários começam com #   •    Convenção: Você pode definir uma “documentação” em string como       primeira...
! !"#"$%&#(%)$"*+&*%),-Conhecendo a linguagem... !   .)/"0)$"0&/%&*%),"+"     ! 12&0,3-      ! 444"*5*67      ! 444"*5*8%&...
! !"#$%&%(") Conhecendo a linguagem... !   *+,-.,))/0-1"#$%&%+,-1"-20.,)      ! 3%4%        !   052-%-6-78      ! 9:2;,5  ...
Tipos Básicos• Inteiros    (padrão para números)   •   Divisão entre inteiros, resposta um inteiro!• Inteiros Longos   •  ...
Tipos Básicos• Representação numérica    •   Representação de dígitos com/sem formatação de string• Divisão clássica / bas...
Tipos Básicos• Strings    !   •   “abc” ou ‘abc’       !"#$%&&($)*"+",-.%       "#$%&&     ()*&+,&$-(.(/01(          /01  ...
Comandos básicos     !       !"#$%&()$*"+),-$.*/0&/%($.•   Alguns comandos básicos que podem ajudar no ínicio!     •    di...
Exercício 01• Faça um programa que peça 2 números e um real.   •   Calcule e mostre:       •   O produto do dobro do prime...
Atribuição  ... Vamos entender como funciona              atribuição!                      II Workshop de Software Livre -...
Atribuição•   Atribuição de uma variável em Python significa criar um rótulo    para armazenar uma referência para algum ob...
Atribuição•   Lembre-se que Python a tipagem é dinâmica!     •   Declarar variáveis sem atribuí-las irá levantar um erro! ...
Atribuição•   Você pode inicializar várias variáveis de uma só vez!     •   x = y = z = 2.0•   Rótulos de variáveis são Ca...
Atribuição•   Entendendo manipulação de atribuição de referências     •   x = y não significa que você fez uma cópia de y! ...
Atribuição•   Mas e se fizermos isso ?! Qual será o valor de x ?>>> x = “casa”>>> y = x>>> x = “fazenda”>>> print x        ...
Atribuição•    Mas e se fizermos isso ?! Qual será o valor de x ?    >>> x = “casa”    >>> y = x    >>> y = “fazenda”    >>...
Listas, Strings e Tuplas    ... O poder de python agora!                      II Workshop de Software Livre - CIN/UFPE - R...
Listas, Strings e Tuplas•   Todos os três são Sequências!     •   Podem ser indexados por algum valor ordinal posicional  ...
Listas, Strings e Tuplas•   Manipulando sequências!     •   Pelo índice a partir de 0    Ex: ti [0]     •   Índices podem ...
!Listas, Strings e Tuplas !"#$%#&&%()##%*+,&"$)*# !   -*+"()&.,#"$"/,#&)&*)0%$"/,# !!!"#$#%&()*+,#!"#$%&()*%)+$,-% !!!"%-,...
Operacões em Listas•   Operador + , *     •   a = “Hello” + “ World” (concatenação)     •   [3] * 4 (repetição)•   Operado...
Operacões em Listas•   Qual será o valor de b ?>>> a = [1,2,3]>>> b = a>>> a.append(4)>>> print b                         ...
Operacões em Listas•    Qual será o valor de b ?>>> a = [1,2,3]>>> b = a>>> a.append(4)>>> print b•    Surpresa!    >>> b ...
Operacões em Listas                 II Workshop de Software Livre - CIN/UFPE - Recife - PE            85                  ...
Operacões em Listas•   Para fazer cópias de listas     •   a = b[:] (2 cópias independentes)     •   a = b (os 2 referenci...
Tuplas x Listas!   • Listas !"#$%& são mais lentas porém mais poderosas que tuplas             •    Listas podem ser modifi...
! Exercício 02 !"#$%&%()*+* !   ,(-.$#/0#)1-)-#234.#)5-.1-6)7#$8171-)7#9     ! :;6*6<6=6>6?6@6A6B6C6*;6**6*<6*=6*>6*?D    ...
Métodos muito usados•   append(), insert(), extend(), del()•   min(), max()•   index(), count(), remove(), pop()•   revers...
Strings•   Formatação e conversão de Strings•   Usam os mesmos operadores básicos de lista•   Multi-Strings, Strings com a...
Strings•   Também uma sequência e é Imutável!     •   “42” + 1 (erro!) Use “42” + str(1)     •   float(), int() -> string p...
Métodos mais usados•   find(), replace(), join(), split()•   isdigit(), islower(), strip(),•   startswith(), upper(), lower...
Exercício 03•   Crie uma lista com o nome de 10 pessoas e sorteie uma    pessoa, depois embaralhe novamente e sorteie outr...
Dicionários    Um “hash map” pythonico!                    II Workshop de Software Livre - CIN/UFPE - Recife - PE         ...
Dicionários•   Estrutura de dados em forma de coleções onde os items são    armazenados e buscados pela chave em vez do de...
Dicionários•   Dicionários não são ordenados!     •   Uma nova chave pode aparecer em qualquerr lugar     •   Funciona com...
Arquivos Como é fácil manipular um arquivo!                      II Workshop de Software Livre - CIN/UFPE - Recife - PE   ...
Arquivos•   Apenas uma linha para abrir um arquivo!     •   file = open(“data”, ‘r’)      tipos: r, a, w•   Alguns métodos ...
Booleanos     Expressões lógicas                  II Workshop de Software Livre - CIN/UFPE - Recife - PE             99   ...
Expressões lógicas•   True e False são constantes em Python     •   False : 0, None, [] , {} , 0.0     •   True: Valores N...
Expressões lógicas•   None é similar ao NULL em linguagem C     •   L = [None] * 100 (declara uma lista de 100 items None ...
Exercício 03                     II Workshop de Software Livre - CIN/UFPE - Recife - PE               102                 ...
Exercício 04                     II Workshop de Software Livre - CIN/UFPE - Recife - PE               103                 ...
Instruções compostas      If python == “cool”:            print “Oh yeah!”                     II Workshop de Software Liv...
Fluxo de Controle•   Várias expressões Python para controlar o fluxo do programa.    Todos eles fazem uso de testes condici...
Instruções if                                                                  Exemplos4                      II Workshop ...
Instruções while                                                               Exemplos4                   II Workshop de ...
Instruções while•   Você pode usar o comando break para sair do loop mais    próximo que a envolve.•   Você pode usar o co...
Instruções for•   Loops for iteram sobre uma sequência de items (listas, tuplas,    string ou quaisquer outros objetos cuj...
Instruções for                   II Workshop de Software Livre - CIN/UFPE - Recife - PE             110                   ...
Instrução zip•   A função range() percorre sequências de maneira exaustiva. A    função interna zip permite usar loops for...
Compreensão de listas    [i for i in “python é fácil demais”]                       II Workshop de Software Livre - CIN/UF...
Compreensão de listas    !      !"#$%&&()"*+&*,-(./( linguagem Python•   Funcionalidade muito poderosa da     • 01.2"*(3$"...
Compreensão de listas•   Permite também o uso de filtros (deteminam se uma    determina expressão deve ser executada sobre ...
Exercício 05• Faça!         um programa que imprima na tela apenas os  números ímpares entre 1 e 50 (usando compreensão de...
Funções...Seu programa tendo cara de programa!                         II Workshop de Software Livre - CIN/UFPE - Recife -...
Definindo FunçõesDefinição da função inicia com “def ”                                             II Workshop de Software L...
Definindo FunçõesDefinição da função inicia com “def ”   Nome da função                                             II Works...
Definindo FunçõesDefinição da função inicia com “def ”   Nome da função                       Argumentos                    ...
Definindo FunçõesDefinição da função inicia com “def ”   Nome da função                       Argumentos   Identação        ...
Definindo FunçõesDefinição da função inicia com “def ”   Nome da função                        Argumentos   Identação       ...
Definindo FunçõesDefinição da função inicia com “def ”   Nome da função                        Argumentos   Identação       ...
Chamando uma função•   Sintaxe básica para chamar uma função:                    >>> def myfun(x, y):                     ...
Passagem de parâmetros•   Várias métricas podem ser usadas na passagem dos parâmetros    de uma função:                   ...
Parâmetros com valores padrões•   Cada parâmetro pode ter um valor padrão.    •   Utilizado quando um parâmetro é omitido ...
Parâmetros com valores padrões        def myfun(x, y = 4, prompt = True):            res = x * y            if prompt:    ...
Valor de retorno•   Toda função em Python retorna alguma valor;    •   Mesmo funções que não possuem a cláusula return.•  ...
Valor de retorno•   Uma função pode retornar mais de um valor                  >>> def teste():                          x...
Algumas funções especiais... e Python também tem seu momento funcional!                             II Workshop de Softwar...
Parâmetros args                                                                             Exemplos5.py                  ...
Funções map, reduce e filter•   Função map(func, seq)    •   Função interna que aplica uma função func a cada item de um ob...
Módulos... Módulos: o que é, como criar e como utilizar.                              II Workshop de Software Livre - CIN/...
Introdução 1/2•   Quando você encerra o interpretador, todas as definições de    variáveis e funções são perdidas;    •   S...
Introdução 2/2•       Um módulo é um arquivo .py contendo definições e comandos        Python:    •    Funções    •    Vari...
Executando módulos como scripts•   Rodar um módulo Python é similar a importar as definições do    módulo para o interpreta...
Pacotes•   Pacotes são coleções de módulos Python.    •   Qualquer diretório do sistema operacional que contém um arquivo ...
Caminho de busca dos módulos•       Quando você executa import meuModulo o interpretador        procura pelo arquivo meuMo...
Compilando um módulo Python... Compilando??? Como assim??? Python não é                interpretado???                    ...
Compilando um módulo Python•       Sim, Python é e continua sendo interpretada!    •    Python utiliza o conceito de byte-...
Compilando um módulo Python•       Compilação para byte-code pode ser um gargalo de        desempenho quando você carregar...
Exercício 06•                         II Workshop de Software Livre - CIN/UFPE - Recife - PE                   141        ...
QuickSort•   Algoritmo de ordenação bastante utilizado e muito eficiente    •   Complexidade BigO(nlogn)        1 . Escolhe...
QuickSort•   Você pensaria assim...def partition(list, l, e, g):    if list == []:        return (l, e, g)    else:       ...
QuickSort•     Agora que você sabe compreensão de listas, você pode fazer      assim!    def qsort(L):        if len(L) <=...
Ordenação•   Mas um programador Pythonico, ainda faria mais eficiente!    list.sort()•   Utiliza-se de uma implementação na...
Python é muito poderoso!•   Não precisa reinventar a roda! Molde-a para adaptar ao seu    problema!•   A documentação de P...
Chegamos ao fim! =DHora da random.choice([pergunta, dúvida, discussão]) !!                               II Workshop de Sof...
Referências•   I Workshop CINLUG de Python (Ministrado no CIN)     •   http://www.cin.ufpe.br/~cinlug/files/workshop-python...
Hello, I am Python!           Marcel Caraciolo  Mini-Curso De Introdução a Python                       II Workshop de Sof...
Upcoming SlideShare
Loading in...5
×

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

4,456

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,456
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
164
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

  1. 1. Hello, I am Python! Marcel Caraciolo Mini-Curso De Introdução a Python II Workshop de Software Livre - CIN/UFPE - Recife - PE 1 1
  2. 2. Quem é o instrutor ?• 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) II Workshop de Software Livre - CIN/UFPE - Recife - PE 2 2
  3. 3. !"#$O que é Python ? Por que Python? II Workshop de Software Livre - CIN/UFPE - Recife - PE 3 3
  4. 4. !"#$ Por que PythonÉ fácil II Workshop de Software Livre - CIN/UFPE - Recife - PE 4 4
  5. 5. !"#$Por que é fácil• Semelhança com pseudo-código. II Workshop de Software Livre - CIN/UFPE - Recife - PE 5 5
  6. 6. Hello World Classíco... ‘hello world’ - Python vs { Java, C, PHP e Pascal } II Workshop de Software Livre - CIN/UFPE - Recife - PE 6
  7. 7. Hello World Classíco.... Em Python .... print “Hello World” II Workshop de Software Livre - CIN/UFPE - Recife - PE 7
  8. 8. Por que PythonÉ fácil É poderoso II Workshop de Software Livre - CIN/UFPE - Recife - PE 8 8
  9. 9. Canivete suíçoTipagem dinâmicaBiblioteca padrão completaMulti-paradigmaMulti-plataformaFacilmente extensívelFree Software (GPL) II Workshop de Software Livre - CIN/UFPE - Recife - PE 9
  10. 10. 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) II Workshop de Software Livre - CIN/UFPE - Recife - PE 10 10
  11. 11. Webhttp://www.nationalgeographic.com/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 11 11
  12. 12. Webhttp://globo.com II Workshop de Software Livre - CIN/UFPE - Recife - PE 12 12
  13. 13. Por que é poderoso• Python para gestão empresarial • PyGTK (http://www.pygtk.org) • PyQT (http://qt.nokia.com) • MySQL, PostgreSQL, Oracle, Sqlite II Workshop de Software Livre - CIN/UFPE - Recife - PE 13 13
  14. 14. Aplicativos Desktophttp://www.stoq.com.br/ http://taskcoach.org/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 14
  15. 15. Aplicativos Desktop Python + Qt + Qml II Workshop de Software Livre - CIN/UFPE - Recife - PE 15
  16. 16. 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
  17. 17. Android (ASE)http://code.google.com/p/android-scripting/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 17 17
  18. 18. Por que é poderoso NetworkX http://pypi.python.org/pypi II Workshop de Software Livre - CIN/UFPE - Recife - PE 18
  19. 19. 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
  20. 20. PyGame e Jogos http://www.pygame.org/news.html II Workshop de Software Livre - CIN/UFPE - Recife - PE 20
  21. 21. Aplicativos Desktop http://www.blender.org/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 21
  22. 22. Quem usa Python? II Workshop de Software Livre - CIN/UFPE - Recife - PE 22 22
  23. 23. ... e aqui no Brasil também! II Workshop de Software Livre - CIN/UFPE - Recife - PE 23
  24. 24. 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
  25. 25. O que é python ?É fácil É poderoso II Workshop de Software Livre - CIN/UFPE - Recife - PE 25
  26. 26. O que é python ?É fácil É poderoso É divertido II Workshop de Software Livre - CIN/UFPE - Recife - PE 25
  27. 27. 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
  28. 28. Hun, sei o que é Python! ...E agora como eu começo ? II Workshop de Software Livre - CIN/UFPE - Recife - PE 27
  29. 29. 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/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 28 28
  30. 30. 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) II Workshop de Software Livre - CIN/UFPE - Recife - PE 29 29
  31. 31. Instaladores (Windows) II Workshop de Software Livre - CIN/UFPE - Recife - PE 30 30
  32. 32. Instaladores (Windows)• Não esqueça de adicionar o caminho da instalação no PATH do sistema! • ;C:Python2x Windows 7 • >>> 2 + 3 Approved! • >>> 5 II Workshop de Software Livre - CIN/UFPE - Recife - PE 31 31
  33. 33. 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 II Workshop de Software Livre - CIN/UFPE - Recife - PE 32 32
  34. 34. Vamos executar!...E agora como eu crio meu programa em python ? II Workshop de Software Livre - CIN/UFPE - Recife - PE 33 33
  35. 35. Rodando Programas no Unix• Os arquivos python tem finalização .py! %python filename.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 ... 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 34
  36. 36. Ambiente IDLE• 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 35
  37. 37. Desenvolvimento ... E ambientes dedesenvolvimento para Python ? II Workshop de Software Livre - CIN/UFPE - Recife - PE 36 36
  38. 38. Eclipse• 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 37
  39. 39. Netbeans• 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 38
  40. 40. ActivePython• 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 39
  41. 41. EasyClipse• 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 40
  42. 42. PyCharm• 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 41
  43. 43. Outros EditoresNotepad++, 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 42
  44. 44. Seu shell incrementado...• 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 43
  45. 45. Chega de conversa...• É hora de por a mão na massa! II Workshop de Software Livre - CIN/UFPE - Recife - PE 44 44
  46. 46. Por onde começo ?... Criando nosso primeiro Hello World ! II Workshop de Software Livre - CIN/UFPE - Recife - PE 45 45
  47. 47. ... em Python ... print “Hello World” Exemplos1.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 46 46
  48. 48. Tipos e operações Vamos ver um trecho de código em Python! II Workshop de Software Livre - CIN/UFPE - Recife - PE 47 47
  49. 49. Código Base II Workshop de Software Livre - CIN/UFPE - Recife - PE 48 48
  50. 50. ... entendendo o código...• Atribuição utiliza = e comparação utiliza == II Workshop de Software Livre - CIN/UFPE - Recife - PE 49 49
  51. 51. ... entendendo o código...• Atribuição utiliza = e comparação utiliza == II Workshop de Software Livre - CIN/UFPE - Recife - PE 50 50
  52. 52. ... entendendo o código...• 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 51
  53. 53. ... entendendo o código...• 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 52
  54. 54. ... entendendo o código...• Operadores lógicos são palavras e não símbolos (||, &&) • and, or, not II Workshop de Software Livre - CIN/UFPE - Recife - PE 53 53
  55. 55. ... entendendo o código...• Operadores lógicos são palavras e não símbolos (||, &&) • and, or, not II Workshop de Software Livre - CIN/UFPE - Recife - PE 54 54
  56. 56. ... entendendo o código...• print é o comando básico para “impressão” na tela II Workshop de Software Livre - CIN/UFPE - Recife - PE 55 55
  57. 57. ... entendendo o código...• print é o comando básico para “impressão” na tela II Workshop de Software Livre - CIN/UFPE - Recife - PE 56 56
  58. 58. ... entendendo o código...• 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 57
  59. 59. ... entendendo o código...• 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 58
  60. 60. ... entendendo o código...• 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 59
  61. 61. ! !"#$%&&"()**+,- ... Usando o Shell ! .#/#&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 60
  62. 62. ! !"#$%&&"()**+,- ... Usando o Shell ! .#/#/)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/%&()*0AC?21B ! .#/#&@1)/#*2"1#%&"4D%?*&" A4&%?*)"B ! .#/#2$1)//&40)/#*7?43&4#$%&A31/*EFB II Workshop de Software Livre - CIN/UFPE - Recife - PE 61 61
  63. 63. Whitespace• 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 62
  64. 64. Comentários• 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 63
  65. 65. ! !"#"$%&#(%)$"*+&*%),-Conhecendo a linguagem... ! .)/"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 64
  66. 66. ! !"#$%&%(") Conhecendo a linguagem... ! *+,-.,))/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 65
  67. 67. Tipos Básicos• 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.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 66 66
  68. 68. Tipos Básicos• 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 67
  69. 69. Tipos Básicos• Strings ! • “abc” ou ‘abc’ !"#$%&&($)*"+",-.% "#$%&& ()*&+,&$-(.(/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,"&#.&$<=.>$% Exemplo1.py !!!+,(-.#/&0&+1()2%3444/ ()*% II Workshop de Software Livre - CIN/UFPE - Recife - PE 68 68
  70. 70. Comandos básicos ! !"#$%&()$*"+),-$.*/0&/%($.• Alguns comandos básicos que podem ajudar no ínicio! • dir(element) - todos ! 1$"()$*"#$%& os atributos e métodos que estão associados a elemento. ! 20/3,&*&,)$*4,/*/.&56/%*/"*#%5"/5%$* • 7-$3$*($*"+),-$ type(element) - Descobrir o tipo do objeto! • import - importe módulos para uso no seu código! ! 8$%(*65.96/-*$7:/&$.*/*./,.*%/.#/3&56$.* ";&$)$. !"#$%& !"#$%&# !"#$%& !"#$%&#(&)# !"#$%& !"#$%&#(&)#!(!"(&) ) !"#$%&#!!"#$%& !* ) !"#$%&#!!"#$%& !(&)# ) !"#$%&#!!"#$%& !(&)#+,-"!(!(+, II Workshop de Software Livre - CIN/UFPE - Recife - PE 69 69
  71. 71. Exercício 01• 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 70
  72. 72. Atribuição ... Vamos entender como funciona atribuição! II Workshop de Software Livre - CIN/UFPE - Recife - PE 71 71
  73. 73. Atribuição• 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 72
  74. 74. Atribuição• 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 73
  75. 75. Atribuição• 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 74
  76. 76. Atribuição• 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 75
  77. 77. Atribuição• 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 76
  78. 78. Atribuição• Mas e se fizermos isso ?! Qual será o valor de x ? >>> x = “casa” >>> y = x >>> y = “fazenda” >>> print x• Do mesmo jeito que nós esperávamos! Dados nativos são imutáveis! (String, Inteiros, float, complexos).>>> 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 77
  79. 79. Listas, Strings e Tuplas ... O poder de python agora! II Workshop de Software Livre - CIN/UFPE - Recife - PE 78 78
  80. 80. Listas, Strings e Tuplas• 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 79
  81. 81. Listas, Strings e Tuplas• 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 80
  82. 82. !Listas, Strings e Tuplas !"#$%#&&%()##%*+,&"$)*# ! -*+"()&.,#"$"/,#&)&*)0%$"/,# !!!"#$#%&()*+,#!"#$%&()*%)+$,-% !!!"%-, & !!!"%(, ) !!!"%.&, + !!!"%.), ) !!!"%&/, %()*+, !!!"%/), %&(), !!!"%&/*/(,#!%"#.,"$*()()/%,,(0)"(+.-%1,.)/2+%3*()*.)4).5)4 %(*, !!!"%//.&, %+*)(&,#!/%,,()3.6%-$7()$37.#-.)%),.8293"$% Exemplos2 II Workshop de Software Livre - CIN/UFPE - Recife - PE 81 81
  83. 83. Operacões em Listas• 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 82
  84. 84. Operacões em Listas• 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 83
  85. 85. Operacões em Listas• Qual será o valor de b ?>>> a = [1,2,3]>>> b = a>>> a.append(4)>>> print b• Surpresa! >>> b = [1,2,3,4]• Dados do tipo listas, dicionarios e pré-definidos pelo usuário são mutáveis! II Workshop de Software Livre - CIN/UFPE - Recife - PE 84 84
  86. 86. Operacões em Listas II Workshop de Software Livre - CIN/UFPE - Recife - PE 85 85
  87. 87. Operacões em Listas• 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 86
  88. 88. Tuplas x Listas! • Listas !"#$%& são mais lentas porém mais poderosas que tuplas • Listas podem ser modificadas e tem diversos operadores que podem ser utilizados ! (%)*+%,-.)-/*0"%*&/%/$*&)%&1/+2,/",%/3*4-(-.5%/&")*$1/ • Tuplas são imutáveis e tem menos funcionalidades! &62/*,")78-*& ! /9&%:&-/%/4".562/)"#$-;</#%(%/)(%.&42(,%(/2")(2&/)*#2&/ • -,/)"#$%& converter entre listas e tuplas ? Para !!!"#$#%&()*+, !!!-./012"3 2&()*+3 !!!045-2-./012"33 %&()*+, !!!610/2-./013#!"#$%&%#"()) Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 87 87
  89. 89. ! Exercício 02 !"#$%&%()*+* ! ,(-.$#/0#)1-)-#234.#)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 88
  90. 90. Métodos muito usados• 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 89
  91. 91. Strings• 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 90
  92. 92. Strings• 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 91
  93. 93. Métodos mais usados• find(), replace(), join(), split()• isdigit(), islower(), strip(),• startswith(), upper(), lower()• etc. Exemplos2.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 92 92
  94. 94. Exercício 03• 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 93
  95. 95. Dicionários Um “hash map” pythonico! II Workshop de Software Livre - CIN/UFPE - Recife - PE 94 94
  96. 96. Dicionários• 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 95
  97. 97. Dicionários• 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 96
  98. 98. Arquivos Como é fácil manipular um arquivo! II Workshop de Software Livre - CIN/UFPE - Recife - PE 97 97
  99. 99. Arquivos• 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 98
  100. 100. Booleanos Expressões lógicas II Workshop de Software Livre - CIN/UFPE - Recife - PE 99 99
  101. 101. Expressões lógicas• 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 100
  102. 102. Expressões lógicas• 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 101
  103. 103. Exercício 03 II Workshop de Software Livre - CIN/UFPE - Recife - PE 102 102
  104. 104. Exercício 04 II Workshop de Software Livre - CIN/UFPE - Recife - PE 103 103
  105. 105. Instruções compostas If python == “cool”: print “Oh yeah!” II Workshop de Software Livre - CIN/UFPE - Recife - PE 104 104
  106. 106. Fluxo de Controle• 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 105
  107. 107. Instruções if Exemplos4 II Workshop de Software Livre - CIN/UFPE - Recife - PE 106 106
  108. 108. Instruções while Exemplos4 II Workshop de Software Livre - CIN/UFPE - Recife - PE 107 107
  109. 109. Instruções while• 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 108
  110. 110. Instruções for• 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 109
  111. 111. Instruções for II Workshop de Software Livre - CIN/UFPE - Recife - PE 110 110
  112. 112. Instrução zip• 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 111
  113. 113. Compreensão de listas [i for i in “python é fácil demais”] II Workshop de Software Livre - CIN/UFPE - Recife - PE 112 112
  114. 114. Compreensão de listas ! !"#$%&&()"*+&*,-(./( linguagem Python• Funcionalidade muito poderosa da • 01.2"*(3$"%./*4"#$%&(()"*+&*,-(./(5*4%-/*,-(./(*+&*6"%#/* da lista original. Gera uma lista nova aplicando uma função para cada elemento • 674-,*&*%7$-+/8*9*3("*+&*4"#$%&(()"*+&*,-(./(*:*;&#* de código!) ! Muito usado por programadores Python! (Economia 4"#3#*&#*#/.&#7.-4/8• A !sintaxe da compreensão de lista usa-se de palavra-chaves: 0"%*&<&#$," ! =*>*?<@*A*<*-*?B*888*CDD • [expression for name in list] ! E*>*?<*F*<*-*=*/+*<*&G&D ! H#*$1.2"*.&#"( ! III(*>*J<KKL*6"%*<*-*%/M&NOBPQ ! III#*>*J<*6"%*<*-*(*-6*<RL*>>*BQ Exemplos4.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 113 113
  115. 115. Compreensão de listas• Permite também o uso de filtros (deteminam se uma determina expressão deve ser executada sobre um membro da ! lista) !"#$%&&()"*+&*,-(./(012 ! • [expression for name in list if filter ] 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 Exemplos4.py ! O#*(.%->( II Workshop de Software Livre - CIN/UFPE - Recife - PE ! :::*"#&*;*=PP*QQ*OQPQQ(Q.QPPQP/* 114 ?Q%PP/QQQ(P&*P.-QQRQQ/Q*Q(QQEPQSP&QQP PQ-P%QQ/QT***PQQ*PPPP= 114
  116. 116. Exercício 05• Faça! um programa que imprima na tela apenas os números ímpares entre 1 e 50 (usando compreensão de !"#$%&%()*+* listas!) ! ,#-.()/01)2341)5#)-(0#3)5#)%2133#3)(3)6/13)#347() #3%$4(3)-()#342()/-5#$2-#)89-(0#:(/4$(:-(0#;<)#) 1=($1)0/5(/>3#)()?15$7()?1$1)@10#2@13#+)A#5#>3#)/0) 2341)%(0)(3)-(0#3)4(5(3)#0)@10#2@13#+ ! BBB2341:-(0#:%2133#3CD94#21:?$-%?12;E;01?1:5 #:53?(34F(3;E;%2133#:-#=(%(:?#315(;E;1%/0/21 5($;E;G0:51:2341:5#):5#:%2133#3:5(:#"#$%%(;H ! I%1J ! K3#)13)G/-LM#3)34$+442#)#)34$+3?24 II Workshop de Software Livre - CIN/UFPE - Recife - PE ! N#?(341O 115 ! $#3?(341)C)DPP+Q(-8DR+442#8<)G($)R)-)SH<)G($)S)-) 115
  117. 117. Funções...Seu programa tendo cara de programa! II Workshop de Software Livre - CIN/UFPE - Recife - PE 116 116
  118. 118. Definindo FunçõesDefinição da função inicia com “def ” II Workshop de Software Livre - CIN/UFPE - Recife - PE 117 117
  119. 119. Definindo FunçõesDefinição da função inicia com “def ” Nome da função II Workshop de Software Livre - CIN/UFPE - Recife - PE 118 118
  120. 120. Definindo FunçõesDefinição da função inicia com “def ” Nome da função Argumentos II Workshop de Software Livre - CIN/UFPE - Recife - PE 119 119
  121. 121. Definindo FunçõesDefinição da função inicia com “def ” Nome da função Argumentos Identação II Workshop de Software Livre - CIN/UFPE - Recife - PE 120 120
  122. 122. Definindo FunçõesDefiniçã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 121
  123. 123. Definindo FunçõesDefinição da função inicia com “def ” Nome da função Argumentos Identação “return” indica o retorno da função Sem header file Sem declaração do tipo de retorno da função ou do tipo dos argumentos II Workshop de Software Livre - CIN/UFPE - Recife - PE 122 122
  124. 124. Chamando uma função• Sintaxe básica para chamar uma função: >>> def myfun(x, y): return x * y >>> myfun(3, 4) 12 Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 123 123
  125. 125. Passagem de parâmetros• 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 124
  126. 126. Parâmetros com valores padrões• 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 125
  127. 127. Parâmetros com valores padrões 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 é 12 12 >>> myfun(x=3, prompt = False) 12 >>> myfun(5, 2, False) 10 Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 126 126
  128. 128. Valor de retorno• 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 127
  129. 129. Valor de retorno• Uma função pode retornar mais de um valor >>> def teste(): x = 1 y = 2 z = 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 128
  130. 130. Algumas funções especiais... e Python também tem seu momento funcional! II Workshop de Software Livre - CIN/UFPE - Recife - PE 129 129
  131. 131. Parâmetros args Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 130 130
  132. 132. Funções map, reduce e filter• 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 131
  133. 133. Módulos... Módulos: o que é, como criar e como utilizar. II Workshop de Software Livre - CIN/UFPE - Recife - PE 132 132
  134. 134. Introdução 1/2• 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 133
  135. 135. Introdução 2/2• 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 134
  136. 136. Executando módulos como scripts• 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__ : if __name__ == “__main__”: print “Execute algum código” Exemplos5.py II Workshop de Software Livre - CIN/UFPE - Recife - PE 135 135
  137. 137. Pacotes• 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 136
  138. 138. Caminho de busca dos módulos• 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 137
  139. 139. Compilando um módulo Python... Compilando??? Como assim??? Python não é interpretado??? II Workshop de Software Livre - CIN/UFPE - Recife - PE 138 138
  140. 140. Compilando um módulo Python• 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 139
  141. 141. Compilando um módulo Python• 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 140
  142. 142. Exercício 06• II Workshop de Software Livre - CIN/UFPE - Recife - PE 141 141
  143. 143. QuickSort• 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 vez produzirão novos segmentos; 5. O processo deve ser aplicado sucessivamente às seqüências enquanto elas tiverem tamanho ≥ 1; II Workshop de Software Livre - CIN/UFPE - Recife - PE 142 142
  144. 144. QuickSort• 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 143
  145. 145. QuickSort• 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 144
  146. 146. Ordenação• 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 145
  147. 147. Python é muito poderoso!• 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 146
  148. 148. Chegamos ao fim! =DHora da random.choice([pergunta, dúvida, discussão]) !! II Workshop de Software Livre - CIN/UFPE - Recife - PE 147 147
  149. 149. Referências• 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 148
  150. 150. Hello, I am Python! Marcel Caraciolo Mini-Curso De Introdução a Python II Workshop de Software Livre - CIN/UFPE - Recife - PE 149 149
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×