Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 150 Ad

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

Download to read offline

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

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

Advertisement
Advertisement

More Related Content

Viewers also liked (20)

Advertisement

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

More from Marcel Caraciolo (20)

Advertisement

Recently uploaded (20)

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íço Tipagem 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
  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. Web http://www.nationalgeographic.com/ II Workshop de Software Livre - CIN/UFPE - Recife - PE 11 11
  12. 12. Web http://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 Desktop http://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 de desenvolvimento 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 Editores 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 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/'%&'()*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 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-)-#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 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 ! :::*'"#&*;*=P'P'*QQ*OQP'QQ(Q.QP'P'QP'/* 114 ?Q%P'P'/QQQ(P'&*P.-QQ'RQQ/Q*Q(QQEP'QSP'&QQP 'P'Q-P'%QQ/QT***P'QQ*P'P'P'P'= 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)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/21 5($;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 II Workshop de Software Livre - CIN/UFPE - Recife - PE ! N#?(341O 115 ! $#3?(341)C)DPP+Q('-8DR+4'42#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ções Definição da função inicia com “def ” II Workshop de Software Livre - CIN/UFPE - Recife - PE 117 117
  119. 119. Definindo Funções Definiçã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ções Definiçã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ções 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 120
  122. 122. Definindo Funções 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 121
  123. 123. Definindo Funções Definiçã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! =D Hora 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

×