é uma linguagem
                         interpretada, interativa,
                         funcional, orientada a objetos,
                         dinamicamente tipada e com
                         gerenciamento automático de
                         memória
                         Similar em certos aspectos a
                         Perl, Ruby, Scheme, Smalltalk
                         e Tcl

Prof. Fabio Alexandre Spanhol, M.Sc.
                                                      2
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       3
Guido van Rossum é referido
                                  pela comunidade python,
                                  desde 1995, como Benevolent
                                  Dictator For Life (BDFL)
                                  ◦ Desde dezembro de 2005 Guido
                                    trabalha na Google, dedicando
                                    50% do seu tempo com a
                                    linguagem
                                  ◦ www.python.org/~guido
                                  ◦ neopythonic.blogspot.com/




Prof. Fabio Alexandre Spanhol, M.Sc.
                                                                    4
Não veio da cobra!
                                       ◦ "Over six years ago, in December 1989,
                                        I was looking for a "hobby"
                                        programming project that would keep
                                        me occupied during the week around
                                        Christmas. My office ... would be
                                        closed, but I had a home computer,
                                        and not much else on my hands. I
                                        decided to write an interpreter for the
                                        new scripting language I had been
                                        thinking about lately: a descendant of
                                        ABC that would appeal to Unix/C
                                        hackers. I chose Python as a working
                                        title for the project, being in a slightly
                                        irreverent mood (and a big fan of
                                        Monty Python´s Flying Circus)”.

Prof. Fabio Alexandre Spanhol, M.Sc.
                                                                                 5
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       6
NADA!
Python foi desenvolvido como um projeto
open source, sem fins lucrativos e
gerenciado pela PSF (Python Software
Foundation)




Prof. Fabio Alexandre Spanhol, M.Sc.
                                          7
Para obter o interpretador Python
acessar
http://www.python.org/download/
Versões
◦ Python 2.7.1 foi liberada em 27 de
  novembro de 2010
◦ Python 3.2* foi liberada em 20 de fevereiro
  de 2011




Prof. Fabio Alexandre Spanhol, M.Sc.
                                                8
http://www.python.org/about/success/
◦ Google
◦ NASA
◦ Yahoo
◦ InfoSeek
◦ MCI Worldcom
◦ IBM
◦ Higway
◦ Industrial Light and Magic
◦ AstraZeneca
◦ Honeywell
◦ ...

 Prof. Fabio Alexandre Spanhol, M.Sc.
                                        9
Governo Federal
Petrobras
Serpro
Embratel
Globo.com
StarOne
Conectiva
CPqD
Async
Haxent
UTFPR
...

Prof. Fabio Alexandre Spanhol, M.Sc.
                                       10
Vários projetos da comunidade Software Livre
◦ Blender
◦ OpenOffice
◦ Zope/Plone
◦ MoinMoin
◦ Mailman
◦ BitTorrent
◦ Chandler
◦ Gimp
◦ Plone
◦ Django
◦ OpenERP
◦ inVesalius
Prof. Fabio Alexandre Spanhol, M.Sc.
                                               11
Web e Internet
Database
GUIs
Científico e processamento numérico
Educação
Programação de rede
Construção e teste de software
Desenvolvimento de jogos e
renderização 3D
Onde mais sua imaginação mandar!

Prof. Fabio Alexandre Spanhol, M.Sc.
                                       12
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       13
Unix: HP-UX, Solaris ...
Linux (freqüentemente pré-instalada)
Mac OSX (sempre pré-instalada)
Windows: 9x, ME, 2K, XP, Vista, Seven
(ctypes, win32all)
Nokia Série 60 e Maemo
PalmOS (PipPy)




Prof. Fabio Alexandre Spanhol, M.Sc.
                                        14
Compilação Híbrida
como     Java,    programas     Python    são
compilados, porém para uma linguagem
intermediária, destinada a um interpretador
◦ Tal como Java, isso isola Python de muitas das
  excentricidades das máquinas reais na qual ele
  roda, provendo um nível de portabilidade
  equivalente a Java




Prof. Fabio Alexandre Spanhol, M.Sc.
                                                   15
De altíssimo nível e
                                       poderosa
                                       Elegante, com sintaxe
                                       simples e concisa
                                       Fácil de aprender, “cabe”
                                       no seu cérebro !
                                       Multiparadigma:
                                       Funcional, Procedural e
                                       Orientado a Objetos
                                       Possui suporte nativo a
                                       estruturas de dados
                                       complexas                   16
Prof. Fabio Alexandre Spanhol, M.Sc.
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       17
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       18
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       19
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       20
Extensa biblioteca
                                       padrão
                                       Um módulo para o que
                                       você precisar
                                       sys, random, re,
                                       datetime, calendar, csv,
                                       os, webbrowser, string,
                                       urlib, Tkinter, codecs,
                                       pickle, types, array,
                                       mutex, queue, zlib, gzip,
                                       md5, thread, socket,
                                       email, xml.dom, locale,
                                                                   21
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       etc.
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       22
29 palavras reservadas
◦ (Java tem 52 e C# 77)
and                   exec      not
assert                finally   or
break                 for       pass
class                 from      print
Continue              global    raise
def                   if        return
del                   import    try
elif                  in        while
else                  is        yeld
except Spanhol,lambda
Prof. Fabio Alexandre M.Sc.
                                         23
IDLE
interpretador




Prof. Fabio Alexandre Spanhol, M.Sc.
                                       24
Cython
◦ onde existir um compilador C ISO/IEC 9899:1990
Jython
◦ máquina virtual Java
PyPy
◦ Python implementado em Python
Python for .NET
◦ [Brian Lloyd], IronPython (da M$)
Python for Delphi
LunaticPython
◦ interoperando com Lua
Ruby/Python
◦ em Ruby importar módulos Python)

Prof. Fabio Alexandre Spanhol, M.Sc.
                                                   25
Python é case-sensitive
Cada linha é delimitada por enter
Tipagem forte e dinâmica
◦ Não há declaração de variáveis
Comentários iniciam por #
Comentários em várias linhas delimitados
por aspas triplas “””
Alguns operadores
◦    Atribuição: =
◦    Aritméticos: +, -, *, /, **,//,%
◦    Relacionais: <,>,>=,<=, ==,!=,<>,is, in
◦    Lógicos: and,or,not
◦    Bitwise: |,^,&,>>,<<,~


    Prof. Fabio Alexandre Spanhol, M.Sc.
                                               26
A estrutura dos blocos é definida pela
indentação
◦ Não misturar tabulações com espaços


    for i in range(25):
       if i%3 == 0:
          print i
          if i%5 == 0:
             print "Bingo!"
       print “-”*5




Prof. Fabio Alexandre Spanhol, M.Sc.
                                         27
Inteiros
◦ x = 10
◦ y = 56859898958711346465165798798715654000000000000**2
◦ z = y + x
   3233048109594863662031421586618163610229539807267781773950479
    944647716000000000000000000000010L
Ponto flutuante
◦ f = 85.99984
Booleanos
◦ True e False
Strings
◦    Delimitadas por aspas ou apóstrofo
◦    s = “python”
◦    s2 = ‘language’
◦    s3 = “%s %s” % (s,s2)



    Prof. Fabio Alexandre Spanhol, M.Sc.
                                                               28
Usando type
>>> x = 2
>>> print type(x)
<type 'int'>
>>> x = "dois"
>>> print type(x)
<type 'string'>
>>> x = 10.2
>>> print type(x)
<type 'float'>
>>> x=round
>>> print x
<built-in function round>



 Prof. Fabio Alexandre Spanhol, M.Sc.
                                        29
Tuplas
◦ Imutáveis
◦ (‘Fabio’,32, False, 92.5,186)
Listas
◦ mutáveis
◦ [‘Fabio’,32, False, 92.5,186]
Dicionários
◦ Chaves com valores associados
◦ refeicoes = {"café" : “cereal com leite e mel", "almoço" :
  "macarrão carbonara“,"jantar" : "sopa de champignon"}
◦ print refeicoes["almoço"]
Conjuntos
◦ Não permite elementos duplicados
◦ set([1,2,3,4,5,6,8,9,8,1,2,7,1,2,5])
◦ Retorna
  set([1, 2, 3, 4, 5, 6, 7, 8, 9])


Prof. Fabio Alexandre Spanhol, M.Sc.
                                                               30
Entrada com raw_input
◦ nome=raw_input("Qual o seu nome?")
◦ idade=int(raw_input(“Qual a sua idade?”)


Saída com print
◦ print nome
◦ print "Ola %s, sua nota:%10.2f" % (nome,nota)




Prof. Fabio Alexandre Spanhol, M.Sc.
                                                  31
if
if (expressao):
   bloco
[elif (expressao):
   bloco]
[else:
   bloco]




  Prof. Fabio Alexandre Spanhol, M.Sc.
                                         32
exemplo
s = raw_input(“número entre 0 e 100? ")
n = int(s)
if not 0 < n < 100:
   print "Número inválido."
if n % 2 == 0:
   print "Número Par"
else:
   print "Número Ímpar"




  Prof. Fabio Alexandre Spanhol, M.Sc.
                                          33
for
for variavel in sequencia:
   bloco
[else:
   bloco]
 while
while (expressao):
   bloco
[else:
   bloco]


 Prof. Fabio Alexandre Spanhol, M.Sc.
                                        34
Exemplo
#encoding: utf-8
cores=[‘verde',‘amarelo',‘azul',‘branco']
for cor in cores:
 print cor ' é minha cor favorita!'




  Prof. Fabio Alexandre Spanhol, M.Sc.
                                            35
Modularizam o código
#encoding: utf-8

#função que escreve n termos da série de fibonacci
def fibo(n):
    a,b,t=0,1,1
    while t <= n:
        print b
        a, b = b, a + b
        t+=1
x=int(raw_input("Quantos termos?"))
fibo(x)




  Prof. Fabio Alexandre Spanhol, M.Sc.
                                                     36
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       37
Não vamos complicar!




Prof. Fabio Alexandre Spanhol, M.Sc.
                                       38
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       39
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       40
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       41
Inverter a ordem das cartas
◦ baralho.reverse()
Tirar a carta do topo
◦ baralho.pop()
Adicionar 4 coringas
◦ baralho.extend([‘Coringa’]*4)
Colocar em ordem
◦ baralho.sort()
  Pelo número de letras:
   baralho.sort(key=len)




 Prof. Fabio Alexandre Spanhol, M.Sc.
                                        42
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       43
Também tem!
                  Você pode fazer programação
                  Funcional sem Lost in Stupid
                  Parenthesis (LISP) 




Prof. Fabio Alexandre Spanhol, M.Sc.
                                                 44
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       45
Prof. Fabio Alexandre Spanhol, M.Sc.
                                       46
faspanhol@gmail.com

                                         @_photon_


                www.slideshare.net/_photon_

Prof. Fabio Alexandre Spanhol, M.Sc.
                                                        47

"Mostrando a Cobra" - ou Breve Introdução à Linguagem Python

  • 2.
    é uma linguagem interpretada, interativa, funcional, orientada a objetos, dinamicamente tipada e com gerenciamento automático de memória Similar em certos aspectos a Perl, Ruby, Scheme, Smalltalk e Tcl Prof. Fabio Alexandre Spanhol, M.Sc. 2
  • 3.
    Prof. Fabio AlexandreSpanhol, M.Sc. 3
  • 4.
    Guido van Rossumé referido pela comunidade python, desde 1995, como Benevolent Dictator For Life (BDFL) ◦ Desde dezembro de 2005 Guido trabalha na Google, dedicando 50% do seu tempo com a linguagem ◦ www.python.org/~guido ◦ neopythonic.blogspot.com/ Prof. Fabio Alexandre Spanhol, M.Sc. 4
  • 5.
    Não veio dacobra! ◦ "Over six years ago, in December 1989, I was looking for a "hobby" programming project that would keep me occupied during the week around Christmas. My office ... would be closed, but I had a home computer, and not much else on my hands. I decided to write an interpreter for the new scripting language I had been thinking about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a working title for the project, being in a slightly irreverent mood (and a big fan of Monty Python´s Flying Circus)”. Prof. Fabio Alexandre Spanhol, M.Sc. 5
  • 6.
    Prof. Fabio AlexandreSpanhol, M.Sc. 6
  • 7.
    NADA! Python foi desenvolvidocomo um projeto open source, sem fins lucrativos e gerenciado pela PSF (Python Software Foundation) Prof. Fabio Alexandre Spanhol, M.Sc. 7
  • 8.
    Para obter ointerpretador Python acessar http://www.python.org/download/ Versões ◦ Python 2.7.1 foi liberada em 27 de novembro de 2010 ◦ Python 3.2* foi liberada em 20 de fevereiro de 2011 Prof. Fabio Alexandre Spanhol, M.Sc. 8
  • 9.
    http://www.python.org/about/success/ ◦ Google ◦ NASA ◦Yahoo ◦ InfoSeek ◦ MCI Worldcom ◦ IBM ◦ Higway ◦ Industrial Light and Magic ◦ AstraZeneca ◦ Honeywell ◦ ... Prof. Fabio Alexandre Spanhol, M.Sc. 9
  • 10.
  • 11.
    Vários projetos dacomunidade Software Livre ◦ Blender ◦ OpenOffice ◦ Zope/Plone ◦ MoinMoin ◦ Mailman ◦ BitTorrent ◦ Chandler ◦ Gimp ◦ Plone ◦ Django ◦ OpenERP ◦ inVesalius Prof. Fabio Alexandre Spanhol, M.Sc. 11
  • 12.
    Web e Internet Database GUIs Científicoe processamento numérico Educação Programação de rede Construção e teste de software Desenvolvimento de jogos e renderização 3D Onde mais sua imaginação mandar! Prof. Fabio Alexandre Spanhol, M.Sc. 12
  • 13.
    Prof. Fabio AlexandreSpanhol, M.Sc. 13
  • 14.
    Unix: HP-UX, Solaris... Linux (freqüentemente pré-instalada) Mac OSX (sempre pré-instalada) Windows: 9x, ME, 2K, XP, Vista, Seven (ctypes, win32all) Nokia Série 60 e Maemo PalmOS (PipPy) Prof. Fabio Alexandre Spanhol, M.Sc. 14
  • 15.
    Compilação Híbrida como Java, programas Python são compilados, porém para uma linguagem intermediária, destinada a um interpretador ◦ Tal como Java, isso isola Python de muitas das excentricidades das máquinas reais na qual ele roda, provendo um nível de portabilidade equivalente a Java Prof. Fabio Alexandre Spanhol, M.Sc. 15
  • 16.
    De altíssimo nívele poderosa Elegante, com sintaxe simples e concisa Fácil de aprender, “cabe” no seu cérebro ! Multiparadigma: Funcional, Procedural e Orientado a Objetos Possui suporte nativo a estruturas de dados complexas 16 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 17.
    Prof. Fabio AlexandreSpanhol, M.Sc. 17
  • 18.
    Prof. Fabio AlexandreSpanhol, M.Sc. 18
  • 19.
    Prof. Fabio AlexandreSpanhol, M.Sc. 19
  • 20.
    Prof. Fabio AlexandreSpanhol, M.Sc. 20
  • 21.
    Extensa biblioteca padrão Um módulo para o que você precisar sys, random, re, datetime, calendar, csv, os, webbrowser, string, urlib, Tkinter, codecs, pickle, types, array, mutex, queue, zlib, gzip, md5, thread, socket, email, xml.dom, locale, 21 Prof. Fabio Alexandre Spanhol, M.Sc. etc.
  • 22.
    Prof. Fabio AlexandreSpanhol, M.Sc. 22
  • 23.
    29 palavras reservadas ◦(Java tem 52 e C# 77) and exec not assert finally or break for pass class from print Continue global raise def if return del import try elif in while else is yeld except Spanhol,lambda Prof. Fabio Alexandre M.Sc. 23
  • 24.
  • 25.
    Cython ◦ onde existirum compilador C ISO/IEC 9899:1990 Jython ◦ máquina virtual Java PyPy ◦ Python implementado em Python Python for .NET ◦ [Brian Lloyd], IronPython (da M$) Python for Delphi LunaticPython ◦ interoperando com Lua Ruby/Python ◦ em Ruby importar módulos Python) Prof. Fabio Alexandre Spanhol, M.Sc. 25
  • 26.
    Python é case-sensitive Cadalinha é delimitada por enter Tipagem forte e dinâmica ◦ Não há declaração de variáveis Comentários iniciam por # Comentários em várias linhas delimitados por aspas triplas “”” Alguns operadores ◦ Atribuição: = ◦ Aritméticos: +, -, *, /, **,//,% ◦ Relacionais: <,>,>=,<=, ==,!=,<>,is, in ◦ Lógicos: and,or,not ◦ Bitwise: |,^,&,>>,<<,~ Prof. Fabio Alexandre Spanhol, M.Sc. 26
  • 27.
    A estrutura dosblocos é definida pela indentação ◦ Não misturar tabulações com espaços for i in range(25): if i%3 == 0: print i if i%5 == 0: print "Bingo!" print “-”*5 Prof. Fabio Alexandre Spanhol, M.Sc. 27
  • 28.
    Inteiros ◦ x =10 ◦ y = 56859898958711346465165798798715654000000000000**2 ◦ z = y + x  3233048109594863662031421586618163610229539807267781773950479 944647716000000000000000000000010L Ponto flutuante ◦ f = 85.99984 Booleanos ◦ True e False Strings ◦ Delimitadas por aspas ou apóstrofo ◦ s = “python” ◦ s2 = ‘language’ ◦ s3 = “%s %s” % (s,s2) Prof. Fabio Alexandre Spanhol, M.Sc. 28
  • 29.
    Usando type >>> x= 2 >>> print type(x) <type 'int'> >>> x = "dois" >>> print type(x) <type 'string'> >>> x = 10.2 >>> print type(x) <type 'float'> >>> x=round >>> print x <built-in function round> Prof. Fabio Alexandre Spanhol, M.Sc. 29
  • 30.
    Tuplas ◦ Imutáveis ◦ (‘Fabio’,32,False, 92.5,186) Listas ◦ mutáveis ◦ [‘Fabio’,32, False, 92.5,186] Dicionários ◦ Chaves com valores associados ◦ refeicoes = {"café" : “cereal com leite e mel", "almoço" : "macarrão carbonara“,"jantar" : "sopa de champignon"} ◦ print refeicoes["almoço"] Conjuntos ◦ Não permite elementos duplicados ◦ set([1,2,3,4,5,6,8,9,8,1,2,7,1,2,5]) ◦ Retorna  set([1, 2, 3, 4, 5, 6, 7, 8, 9]) Prof. Fabio Alexandre Spanhol, M.Sc. 30
  • 31.
    Entrada com raw_input ◦nome=raw_input("Qual o seu nome?") ◦ idade=int(raw_input(“Qual a sua idade?”) Saída com print ◦ print nome ◦ print "Ola %s, sua nota:%10.2f" % (nome,nota) Prof. Fabio Alexandre Spanhol, M.Sc. 31
  • 32.
    if if (expressao): bloco [elif (expressao): bloco] [else: bloco] Prof. Fabio Alexandre Spanhol, M.Sc. 32
  • 33.
    exemplo s = raw_input(“númeroentre 0 e 100? ") n = int(s) if not 0 < n < 100: print "Número inválido." if n % 2 == 0: print "Número Par" else: print "Número Ímpar" Prof. Fabio Alexandre Spanhol, M.Sc. 33
  • 34.
    for for variavel insequencia: bloco [else: bloco] while while (expressao): bloco [else: bloco] Prof. Fabio Alexandre Spanhol, M.Sc. 34
  • 35.
    Exemplo #encoding: utf-8 cores=[‘verde',‘amarelo',‘azul',‘branco'] for corin cores: print cor ' é minha cor favorita!' Prof. Fabio Alexandre Spanhol, M.Sc. 35
  • 36.
    Modularizam o código #encoding:utf-8 #função que escreve n termos da série de fibonacci def fibo(n): a,b,t=0,1,1 while t <= n: print b a, b = b, a + b t+=1 x=int(raw_input("Quantos termos?")) fibo(x) Prof. Fabio Alexandre Spanhol, M.Sc. 36
  • 37.
    Prof. Fabio AlexandreSpanhol, M.Sc. 37
  • 38.
    Não vamos complicar! Prof.Fabio Alexandre Spanhol, M.Sc. 38
  • 39.
    Prof. Fabio AlexandreSpanhol, M.Sc. 39
  • 40.
    Prof. Fabio AlexandreSpanhol, M.Sc. 40
  • 41.
    Prof. Fabio AlexandreSpanhol, M.Sc. 41
  • 42.
    Inverter a ordemdas cartas ◦ baralho.reverse() Tirar a carta do topo ◦ baralho.pop() Adicionar 4 coringas ◦ baralho.extend([‘Coringa’]*4) Colocar em ordem ◦ baralho.sort()  Pelo número de letras: baralho.sort(key=len) Prof. Fabio Alexandre Spanhol, M.Sc. 42
  • 43.
    Prof. Fabio AlexandreSpanhol, M.Sc. 43
  • 44.
    Também tem! Você pode fazer programação Funcional sem Lost in Stupid Parenthesis (LISP)  Prof. Fabio Alexandre Spanhol, M.Sc. 44
  • 45.
    Prof. Fabio AlexandreSpanhol, M.Sc. 45
  • 46.
    Prof. Fabio AlexandreSpanhol, M.Sc. 46
  • 47.
    faspanhol@gmail.com @_photon_ www.slideshare.net/_photon_ Prof. Fabio Alexandre Spanhol, M.Sc. 47