é 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

                                                                2
Prof. Fabio Alexandre Spanhol, M.Sc.
3
Prof. Fabio Alexandre Spanhol, M.Sc.
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
                                       ◦ http://www.python.org/~guido




                                                                        4
Prof. Fabio Alexandre Spanhol, M.Sc.
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)”.

                                                                                     5
Prof. Fabio Alexandre Spanhol, M.Sc.
NADA!
Python foi desenvolvido como um
projeto open source, sem fins
lucrativos e gerenciado pela PSF
(Python Software Foundation)
◦ A versão Python 2.7 foi liberada em 3 de
  julho de 2010
◦ A versão Python 3.1.2* foi liberada em 21
  de março de 2010
Para obter o interpretador Python
acessar
http://www.python.org/download/
                                              6
Prof. Fabio Alexandre Spanhol, M.Sc.
http://www.python.org/about/success/
◦ Google
◦ NASA
◦ Yahoo
◦ InfoSeek
◦ MCI Worldcom
◦ IBM
◦ Higway
◦ Industrial Light and Magic
◦ AstraZeneca
◦ Honeywell



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


                                       8
Prof. Fabio Alexandre Spanhol, M.Sc.
Vários projetos da comunidade Software
Livre
◦ Blender
◦ OpenOffice
◦ Zope/Plone
◦ MoinMoin
◦ Mailman
◦ BitTorrent
◦ Chandler
◦ Gimp
◦ Plone
◦ Django
◦ OpenERP
◦ inVesalius                             9
Prof. Fabio Alexandre Spanhol, M.Sc.
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!

                                       10
Prof. Fabio Alexandre Spanhol, M.Sc.
11
Prof. Fabio Alexandre Spanhol, M.Sc.
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)




                                        12
Prof. Fabio Alexandre Spanhol, M.Sc.
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




                                                   13
Prof. Fabio Alexandre Spanhol, M.Sc.
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                   14
Prof. Fabio Alexandre Spanhol, M.Sc.
15
Prof. Fabio Alexandre Spanhol, M.Sc.
16
Prof. Fabio Alexandre Spanhol, M.Sc.
17
Prof. Fabio Alexandre Spanhol, M.Sc.
18
Prof. Fabio Alexandre Spanhol, M.Sc.
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,
                                                                   19
Prof. Fabio Alexandre Spanhol, M.Sc.
20
Prof. Fabio Alexandre Spanhol, M.Sc.
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                                 lambda             21
Prof. Fabio Alexandre Spanhol, M.Sc.
IDLE
interpretador




                                       22
Prof. Fabio Alexandre Spanhol, M.Sc.
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
(em desenvolvimento na M$)
Python for Delphi
LunaticPython (interoperando com Lua)
Ruby/Python (em Ruby importar módulos
Python)




                                            23
Prof. Fabio Alexandre Spanhol, M.Sc.
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: |,^,&,>>,<<,~

                                                24
    Prof. Fabio Alexandre Spanhol, M.Sc.
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




                                         25
Prof. Fabio Alexandre Spanhol, M.Sc.
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)



                                                                    26
    Prof. Fabio Alexandre Spanhol, M.Sc.
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>



                                        27
 Prof. Fabio Alexandre Spanhol, M.Sc.
Tuplas
◦ Imutáveis
◦ (‘Fabio’,32, False, 88.5,186)
Listas
◦ mutáveis
◦ [‘Fabio’,32, False, 88.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])


                                                               28
Prof. Fabio Alexandre Spanhol, M.Sc.
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)




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




                                         30
  Prof. Fabio Alexandre Spanhol, M.Sc.
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"




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


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




                                            33
  Prof. Fabio Alexandre Spanhol, M.Sc.
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)




                                                     34
  Prof. Fabio Alexandre Spanhol, M.Sc.
35
Prof. Fabio Alexandre Spanhol, M.Sc.
36
Prof. Fabio Alexandre Spanhol, M.Sc.
37
Prof. Fabio Alexandre Spanhol, M.Sc.
38
Prof. Fabio Alexandre Spanhol, M.Sc.
39
Prof. Fabio Alexandre Spanhol, M.Sc.
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)




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




                                                        42
Prof. Fabio Alexandre Spanhol, M.Sc.
43
Prof. Fabio Alexandre Spanhol, M.Sc.
44
Prof. Fabio Alexandre Spanhol, M.Sc.
45
Prof. Fabio Alexandre Spanhol, M.Sc.

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

  • 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 2 Prof. Fabio Alexandre Spanhol, 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 ◦ http://www.python.org/~guido 4 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 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)”. 5 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 6.
    NADA! Python foi desenvolvidocomo um projeto open source, sem fins lucrativos e gerenciado pela PSF (Python Software Foundation) ◦ A versão Python 2.7 foi liberada em 3 de julho de 2010 ◦ A versão Python 3.1.2* foi liberada em 21 de março de 2010 Para obter o interpretador Python acessar http://www.python.org/download/ 6 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 7.
    http://www.python.org/about/success/ ◦ Google ◦ NASA ◦Yahoo ◦ InfoSeek ◦ MCI Worldcom ◦ IBM ◦ Higway ◦ Industrial Light and Magic ◦ AstraZeneca ◦ Honeywell 7 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 8.
  • 9.
    Vários projetos dacomunidade Software Livre ◦ Blender ◦ OpenOffice ◦ Zope/Plone ◦ MoinMoin ◦ Mailman ◦ BitTorrent ◦ Chandler ◦ Gimp ◦ Plone ◦ Django ◦ OpenERP ◦ inVesalius 9 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 10.
    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! 10 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 11.
  • 12.
    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) 12 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 13.
    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 13 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 14.
    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 14 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    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, 19 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 20.
  • 21.
    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 lambda 21 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 22.
    IDLE interpretador 22 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 23.
    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 (em desenvolvimento na M$) Python for Delphi LunaticPython (interoperando com Lua) Ruby/Python (em Ruby importar módulos Python) 23 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 24.
    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: |,^,&,>>,<<,~ 24 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 25.
    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 25 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 26.
    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) 26 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 27.
    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> 27 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 28.
    Tuplas ◦ Imutáveis ◦ (‘Fabio’,32,False, 88.5,186) Listas ◦ mutáveis ◦ [‘Fabio’,32, False, 88.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]) 28 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 29.
    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) 29 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 30.
    if if (expressao): bloco [elif (expressao): bloco] [else: bloco] 30 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 31.
    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" 31 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 32.
    for for variavel insequencia: bloco [else: bloco] while while (expressao): bloco [else: bloco] 32 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 33.
    Exemplo #encoding: utf-8 cores=[‘verde',‘amarelo',‘azul',‘branco'] for corin cores: print cor ' é minha cor favorita!' 33 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 34.
    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) 34 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
    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) 40 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 41.
  • 42.
    Também tem! Você pode fazer programação Funcional sem Lost in Stupid Parenthesis (LISP)  42 Prof. Fabio Alexandre Spanhol, M.Sc.
  • 43.
  • 44.
  • 45.