SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
OLÁ
                         !
Henrique G. G. Pereira
  ikkibr@gmail.com
Sobre a apresentação
   Apresentação orientada a programadores
    ◦ Java, C, Pascal, C++, ...
   Nenhum conhecimento prévio em Python é
    necessário
    ◦ Um pouco não vai machucar ninguém
   Breve introdução ao Python
    ◦ Bem breve, mesmo.
   Muita teoria/prática em um curto espaço de
    tempo
O que é Python?
 Altíssimo Nível
 Interpretada
 Multiplataforma
    ◦ Windows, Linux, Mac, BSD, Symbian
   Multiparadigma
    ◦ OO, Procedural, Funcional
Por que Python?
   Simples
    ◦ Fácil de memorizar
    ◦ Fácil de aprender
   Elegante
    ◦ Sintaxe descomplicada
   Poderosa
    ◦ Biblioteca padrão gigantesca
http://nerdson.com/blog/baterias-e-graos-incluidos/
Como surgiu?
   Guido van Rossum
    ◦ 1991 – Versão 0.9.0
        Tipos básicos de dados (lista, tupla, dicionários)
    ◦ 1994 – Versão 1.0
    ◦ 2001 – Versão 2.1
        Python Software Foundation
    ◦ 2003 – Versão 2.3
    ◦ 2006 – Versão 2.5
E agora?
   Outubro de 2008
    ◦ Lançamento do Python 2.6
      Preparando a migração para a próxima versão
      Avisos de incompatibilidade com o Python
       3000
      Funcionalidades adaptadas da versão 3000
Python 3000
   3 de Dezembro de 2008:
    ◦   Python 3.0 final
    ◦   Quebra de compatibilidade
    ◦   Evolução
    ◦   Corrigir falhas
Nada para se preocupar.
Python 2.x vai continuar existindo.
      Por um bom tempo...
O que pode ser feito?
   Desenvolvimento Web
    ◦ Web.Py, CherryPy, Django, Zope, Plone, Pylons

   Dispositivos Móveis
    ◦ PyS60, Python for Maemo, Python for PSP, PyMo

   Multimídia e Entretenimento
    ◦ PyGame, PyMedia, PyOpenGL
   Desenvolvimento Científico
    ◦ SciPy, BioPython, AstroPy, PIL
Quem usa Python?
   Google
Quem usa Python?
   Youtube
Quem usa Python?
 NASA
 CERN
 Nokia
 DreamWorks
 GIMP
 Blender
 OpenOffice
Python é usado até
    na NASA?!
   E no Brasil?
E no Brasil?
   Brasil.gov.br
E no Brasil?
   Globo.com
E no Brasil?
   Stoq
Onde posso encontrar mais?
   Python Software Foundation
    ◦ http://www.python.org
   PythonBrasil
    ◦ http://www.pythonbrasil.com.br
Características Gerais
 Sintaxe Simples
 Tipagem Forte e Dinâmica
 Interpretada
    ◦ Compilação implicita
   Licença de Código Aberto
    ◦ Compatível com a GPL
Olá Python! x Olá {PHP,C,Java}
        print “Olá Python!”
Adeus Lesão
 por Esforço
 Repetitivo!
Integrated DeveLopment Environment
   Ambiente de desenvolvimento Integrado
    ◦ Feito em Python
    ◦ Vem com o Python
Tipos (Básicos) de Dados
   Inteiros (e Longos)
    a=5
    b = 6000000000000000000000000000000000000012345678910*1234567
    c=b/a
         / no Python 2 é divisão de inteiros!
         from __future__ import division

   Número de Ponto Flutuante
    d = 16.27

   Strings
       formatadas como em C
    e = „henrique‟
    f = „gabriel‟
    g = “%s %s” % (e,f)

   Booleanos
    ◦ True e False
Estruturas (Básicas) de Dados
   ( Tuplas )
    ◦ Imutável
    ◦ Armazenar valores
    a = (5,6,‟eu‟,False)
   [ Listas ]
    ◦ Mutável
    ◦ Trabalhar com valores
    ◦ Vetores <-
    b = [5,6,‟eu‟,False]
   { Dicionários }
    ◦ chave->valor
    c = {„eu‟: False, 5:(6,7)}
      c[„eu‟] == False
   Sets
Entendendo o Básico
 Atribuição: =
 Comparação: ==
 Diferença: != <>
 Operadores Matemáticos: * / - +
 Operadores Lógicos: and, or, not
 Entrada de dados: input(), raw_input()
 Saída: print
Entendendo mais o Básico
   Tudo são objetos (menos Nomes)
     Objetos tem tipos.
    ◦ type(5)
       <type 'int'>
    ◦ type(„eu‟)
       <type 'str'>
    ◦ type([5,6,7])
       <type 'list'>
   Nomes não tem tipo
    ◦ Nomes apenas referenciam um objeto
    A= 5
    B=A
    A= 6
    B=?
Estrutura de Controle
  if condição:
       funcao1()
       funcao2()
  elif condição2:
       funcao3()
  else:
       funcao4()
Estruturas de Repetição
Laço FOR                     Laço WHILE
for variavel in lista:        while condição:
      funcao1(variavel)           funcao2()



for variavel in range(10):    while True:
      if variavel == 3:           funcao3()
              break
Juntando tudo em um baralho!
valores = ['As']+list(range(2,11))+ quot;Valete Dama Reiquot;.split()
naipes = quot;Paus Ouros Copas Espadasquot;.split()
baralho = [ quot;%s de %squot; % (v,n) for v in valores for n in naipes ]

print baralho


['As de Paus', 'As de Ouros', 'As de Copas', 'As de Espadas', '2 de Paus', '2
   de Ouros', '2 de Copas', '2 de Espadas', '3 de Paus', '3 de Ouros', '3 de
   Copas', '3 de Espadas', '4 de Paus', '4 de Ouros', '4 de Copas', '4 de
   Espadas', '5 de Paus', '5 de Ouros', '5 de Copas', '5 de Espadas', '6 de
   Paus', '6 de Ouros', '6 de Copas', '6 de Espadas', '7 de Paus', '7 de
   Ouros', '7 de Copas', '7 de Espadas', '8 de Paus', '8 de Ouros', '8 de
   Copas', '8 de Espadas', '9 de Paus', '9 de Ouros', '9 de Copas', '9 de
   Espadas', '10 de Paus', '10 de Ouros', '10 de Copas', '10 de Espadas',
   'Valete de Paus', 'Valete de Ouros', 'Valete de Copas', 'Valete de
   Espadas', 'Dama de Paus', 'Dama de Ouros', 'Dama de Copas', 'Dama
   de Espadas', 'Rei de Paus', 'Rei de Ouros', 'Rei de Copas', 'Rei de
   Espadas']
Como é que é?
Entendendo o baralho!
   Concatenação de Listas
    ◦ [5]+[„6‟]+“7,8”.split(“,”) == [5, „6‟, „7‟, „8‟]
   String.split()
    ◦ “1,2,3,4”.split(“,”) == [„1‟, „2‟, „3‟, „4‟]
   List Comprehension
    ◦ [x**x for x in [1,2,3,4] if x*2 >= 4]
       [4, 27, 256]
Voltando ao baralho!
   Slicing:
    ◦ baralho[0]
      'As de Paus'

    ◦ baralho[0:4]
      ['As de Paus', 'As de Ouros', 'As de Copas', 'As de Espadas']

    ◦ baralho[0:15:2]
      ['As de Paus', 'As de Copas', '2 de Paus', '2 de Copas', '3 de
       Paus', '3 de Copas', '4 de Paus', '4 de Copas']

    ◦ baralho[-1]
      'Rei de Espadas'
Embaralhando o baralho!
   Módulo random
    ◦ Método shuffle
      Embaralha.
      shuffle(baralho)
        ['As de Paus', '8 de Ouros', '2 de Espadas', '9 de Paus', '7 de
         Ouros', '2 de Paus', '4 de Ouros', 'As de Ouros', '4 de Espadas',
         'As de Espadas', '5 de Ouros', 'Rei de Espadas', 'Valete de
         Paus', '9 de Espadas', '6 de Paus', 'Rei de Paus', 'As de Copas',
         '5 de Paus', '6 de Espadas', '8 de Espadas', '6 de Ouros', 'Dama
         de Espadas', 'Valete de Copas', '5 de Espadas', '3 de Espadas',
         '6 de Copas', '3 de Paus', '7 de Copas', '3 de Ouros', '8 de
         Copas', '2 de Copas', '7 de Espadas', '10 de Espadas', '10 de
         Paus', '10 de Ouros', '7 de Paus', 'Valete de Ouros', '9 de
         Copas', '2 de Ouros', '4 de Paus', 'Dama de Copas', 'Rei de
         Ouros', '9 de Ouros', '4 de Copas', 'Valete de Espadas', '5 de
         Copas', 'Dama de Ouros', '10 de Copas', '3 de Copas', 'Rei de
         Copas', 'Dama de Paus', '8 de Paus']
Brincando com o baralho!
   Inverter a ordem das cartas
    ◦ baralho.reverse()

   Tirar a carta do topo do baralho
    ◦ baralho.pop()

   Adicionar 3 coringas ao baralho
    ◦ baralho.extend([„Coringa‟]*3)

   Ordenar o baralho (léxicamente)
    ◦ baralho.sort()
       Ordenar pelo número de letras? Baralho.sort(key=len)
Python tem a
   força!
O poder da ordenação!
   valores = [(-x)**x for x in range(1,10)]
    ◦ [-1, 4, -27, 256, -3125, 46656, -823543, 16777216, -387420489]
    ◦ Não ordenado.
    ◦ Valores.sort() ou variavel = sorted(valores)
         [-387420489, -823543, -3125, -27, -1, 4, 256, 46656, 16777216]


       Ordenação ao contrário? reverse=True
         [16777216, 46656, 256, 4, -1, -27, -3125, -823543, -387420489]
A força dos Conjuntos!
   Coleção de valores únicos
   Não ordenada
    ◦ set([5,7,5,6,7,28]) == set([28, 5, 6, 7])
   list(set([28,5,6,7])) == [28, 5, 6, 7]
Operações com conjuntos
a = set([1,2,3])
b = set([2,3,4])

   Operações básicas
    ◦ a.intersection(b)
         set([2, 3])
    ◦ a.union(b)
         set([1, 2, 3, 4])
    ◦ a-b
         set([1])
    ◦ b-a
      set([4])
Definindo funções
def funcao(parametro, *parametros):
         print parametro
         for cada in parametros:
                      print cada


def fatorial(numero):
         if numero == 1:
                      return 1
         else:
                      return numero*fatorial(numero-1)


def fatorial2(numero):
         aux = 1
         for x in range(1,numero+1):
                      aux*=x
         return aux
Já chega!
Quero ir pra casa logo!
   E o tempo está
     acabando!
Bibliotecas Úteis
 sys                  calendar
 random               datetime
 math                 collections
 urllib               decimal
 re                   csv
 string               os
 __future__           webbrowser


      http://docs.python.org/library/index.html
Mais algumas considerações
   Python é extensível
    ◦ C e C++
    ◦ IronPython
      .Net
    ◦ Jython
      Java
Até logo e obrigado pelos peixes!
 ikkibr@gmail.com
 Henr“Ikke” G. G. Pereira

Mais conteúdo relacionado

Semelhante a Introdução ao Python

Python Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfPython Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfMarioAthayde
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 
JavaScript ninja com jQuery
JavaScript ninja com jQueryJavaScript ninja com jQuery
JavaScript ninja com jQueryReinaldo Junior
 
Introdução a linguagem de programação Python
Introdução a linguagem de programação PythonIntrodução a linguagem de programação Python
Introdução a linguagem de programação PythonMayron Cachina
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducaojonatasoliveira
 
Introdução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPIntrodução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPOtávio Calaça Xavier
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoFabricio NErdmann
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonFlávio Ribeiro
 
RetroJS - Escrevendo músicas da era 8-bits com JavaScript e Web Audio API
RetroJS - Escrevendo músicas da era 8-bits com JavaScript e Web Audio APIRetroJS - Escrevendo músicas da era 8-bits com JavaScript e Web Audio API
RetroJS - Escrevendo músicas da era 8-bits com JavaScript e Web Audio APIEduardo Shiota Yasuda
 
LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05Carlos Santos
 
Replicação e escalabidade do ZODB com RelStorage
Replicação e escalabidade do ZODB com RelStorageReplicação e escalabidade do ZODB com RelStorage
Replicação e escalabidade do ZODB com RelStorageRuda Filgueiras
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
 
Scala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) IntroduçãoScala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) Introduçãopaulosuzart
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesAlmir Mendes
 

Semelhante a Introdução ao Python (20)

Minicurso Java && Cl
Minicurso Java && ClMinicurso Java && Cl
Minicurso Java && Cl
 
Python Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfPython Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdf
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
JavaScript ninja com jQuery
JavaScript ninja com jQueryJavaScript ninja com jQuery
JavaScript ninja com jQuery
 
Introdução a linguagem de programação Python
Introdução a linguagem de programação PythonIntrodução a linguagem de programação Python
Introdução a linguagem de programação Python
 
Redes Neurais com PHP
Redes Neurais com PHPRedes Neurais com PHP
Redes Neurais com PHP
 
PHP - Uma Pequena Introducao
PHP - Uma Pequena IntroducaoPHP - Uma Pequena Introducao
PHP - Uma Pequena Introducao
 
iOS 8 com swift
iOS 8 com swiftiOS 8 com swift
iOS 8 com swift
 
Introdução às Redes Neurais com PHP
Introdução às Redes Neurais com PHPIntrodução às Redes Neurais com PHP
Introdução às Redes Neurais com PHP
 
Mini Curso de Python para Coding Dojo
Mini Curso de Python para Coding DojoMini Curso de Python para Coding Dojo
Mini Curso de Python para Coding Dojo
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 
RetroJS - Escrevendo músicas da era 8-bits com JavaScript e Web Audio API
RetroJS - Escrevendo músicas da era 8-bits com JavaScript e Web Audio APIRetroJS - Escrevendo músicas da era 8-bits com JavaScript e Web Audio API
RetroJS - Escrevendo músicas da era 8-bits com JavaScript e Web Audio API
 
LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05LabMM3 - Aula teórica 05
LabMM3 - Aula teórica 05
 
Replicação e escalabidade do ZODB com RelStorage
Replicação e escalabidade do ZODB com RelStorageReplicação e escalabidade do ZODB com RelStorage
Replicação e escalabidade do ZODB com RelStorage
 
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)
 
Scala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) IntroduçãoScala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) Introdução
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
(2013-05-03) AudioLazy - Slides
(2013-05-03) AudioLazy - Slides(2013-05-03) AudioLazy - Slides
(2013-05-03) AudioLazy - Slides
 
AULA-02.pdf
AULA-02.pdfAULA-02.pdf
AULA-02.pdf
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 

Mais de Henrique Gabriel Gularte Pereira

Python com Django: ganhando espaço em uma Universidade Federal
Python com Django:  ganhando espaço em uma Universidade FederalPython com Django:  ganhando espaço em uma Universidade Federal
Python com Django: ganhando espaço em uma Universidade FederalHenrique Gabriel Gularte Pereira
 
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Henrique Gabriel Gularte Pereira
 
Como não programar em python ou Python Tricks que você ainda não conhecia
Como não programar em python ou Python Tricks que você ainda não conheciaComo não programar em python ou Python Tricks que você ainda não conhecia
Como não programar em python ou Python Tricks que você ainda não conheciaHenrique Gabriel Gularte Pereira
 

Mais de Henrique Gabriel Gularte Pereira (20)

EBAC Django
EBAC DjangoEBAC Django
EBAC Django
 
BogoSort 2015
BogoSort 2015BogoSort 2015
BogoSort 2015
 
Mythbusters - Front in SM
Mythbusters - Front in SMMythbusters - Front in SM
Mythbusters - Front in SM
 
O Estado do Python
O Estado do PythonO Estado do Python
O Estado do Python
 
Não é uma palestra sobre Python
Não é uma palestra sobre PythonNão é uma palestra sobre Python
Não é uma palestra sobre Python
 
Site da UFSM: Django a 700 requisições por segundo
Site da UFSM: Django a 700 requisições por segundoSite da UFSM: Django a 700 requisições por segundo
Site da UFSM: Django a 700 requisições por segundo
 
Python com Django: ganhando espaço em uma Universidade Federal
Python com Django:  ganhando espaço em uma Universidade FederalPython com Django:  ganhando espaço em uma Universidade Federal
Python com Django: ganhando espaço em uma Universidade Federal
 
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
Uma Arquitetura para a Utilização de Computação nas Nuvens nos Ambientes de C...
 
Introdução ao Python com Django
Introdução ao Python com DjangoIntrodução ao Python com Django
Introdução ao Python com Django
 
DevOps com Python
DevOps com PythonDevOps com Python
DevOps com Python
 
Como programar como o coelho assassino de caerbannog
Como programar como o coelho assassino de caerbannogComo programar como o coelho assassino de caerbannog
Como programar como o coelho assassino de caerbannog
 
Como não programar em python ou Python Tricks que você ainda não conhecia
Como não programar em python ou Python Tricks que você ainda não conheciaComo não programar em python ou Python Tricks que você ainda não conhecia
Como não programar em python ou Python Tricks que você ainda não conhecia
 
Bogosort [CfC]
Bogosort [CfC]Bogosort [CfC]
Bogosort [CfC]
 
Welcome to the Django
Welcome to the DjangoWelcome to the Django
Welcome to the Django
 
BogoSort 2.0
BogoSort 2.0BogoSort 2.0
BogoSort 2.0
 
Antigo_Scrum
Antigo_ScrumAntigo_Scrum
Antigo_Scrum
 
Análise do BogoSort
Análise do BogoSortAnálise do BogoSort
Análise do BogoSort
 
Usando o WICD com localizacao fisica de dispositivos
Usando o WICD com localizacao fisica de dispositivosUsando o WICD com localizacao fisica de dispositivos
Usando o WICD com localizacao fisica de dispositivos
 
O Software Livre no Mundo do MicroBlogging
O Software Livre no Mundo do MicroBloggingO Software Livre no Mundo do MicroBlogging
O Software Livre no Mundo do MicroBlogging
 
Estabelecimento e Encerramento de Conexão
Estabelecimento e Encerramento de ConexãoEstabelecimento e Encerramento de Conexão
Estabelecimento e Encerramento de Conexão
 

Introdução ao Python

  • 1. OLÁ ! Henrique G. G. Pereira ikkibr@gmail.com
  • 2. Sobre a apresentação  Apresentação orientada a programadores ◦ Java, C, Pascal, C++, ...  Nenhum conhecimento prévio em Python é necessário ◦ Um pouco não vai machucar ninguém  Breve introdução ao Python ◦ Bem breve, mesmo.  Muita teoria/prática em um curto espaço de tempo
  • 3. O que é Python?  Altíssimo Nível  Interpretada  Multiplataforma ◦ Windows, Linux, Mac, BSD, Symbian  Multiparadigma ◦ OO, Procedural, Funcional
  • 4. Por que Python?  Simples ◦ Fácil de memorizar ◦ Fácil de aprender  Elegante ◦ Sintaxe descomplicada  Poderosa ◦ Biblioteca padrão gigantesca
  • 6. Como surgiu?  Guido van Rossum ◦ 1991 – Versão 0.9.0  Tipos básicos de dados (lista, tupla, dicionários) ◦ 1994 – Versão 1.0 ◦ 2001 – Versão 2.1  Python Software Foundation ◦ 2003 – Versão 2.3 ◦ 2006 – Versão 2.5
  • 7. E agora?  Outubro de 2008 ◦ Lançamento do Python 2.6  Preparando a migração para a próxima versão  Avisos de incompatibilidade com o Python 3000  Funcionalidades adaptadas da versão 3000
  • 8. Python 3000  3 de Dezembro de 2008: ◦ Python 3.0 final ◦ Quebra de compatibilidade ◦ Evolução ◦ Corrigir falhas
  • 9. Nada para se preocupar. Python 2.x vai continuar existindo. Por um bom tempo...
  • 10. O que pode ser feito?  Desenvolvimento Web ◦ Web.Py, CherryPy, Django, Zope, Plone, Pylons  Dispositivos Móveis ◦ PyS60, Python for Maemo, Python for PSP, PyMo  Multimídia e Entretenimento ◦ PyGame, PyMedia, PyOpenGL  Desenvolvimento Científico ◦ SciPy, BioPython, AstroPy, PIL
  • 13. Quem usa Python?  NASA  CERN  Nokia  DreamWorks  GIMP  Blender  OpenOffice
  • 14. Python é usado até na NASA?! E no Brasil?
  • 15. E no Brasil?  Brasil.gov.br
  • 16. E no Brasil?  Globo.com
  • 18. Onde posso encontrar mais?  Python Software Foundation ◦ http://www.python.org  PythonBrasil ◦ http://www.pythonbrasil.com.br
  • 19. Características Gerais  Sintaxe Simples  Tipagem Forte e Dinâmica  Interpretada ◦ Compilação implicita  Licença de Código Aberto ◦ Compatível com a GPL
  • 20. Olá Python! x Olá {PHP,C,Java} print “Olá Python!”
  • 21. Adeus Lesão por Esforço Repetitivo!
  • 22. Integrated DeveLopment Environment  Ambiente de desenvolvimento Integrado ◦ Feito em Python ◦ Vem com o Python
  • 23.
  • 24. Tipos (Básicos) de Dados  Inteiros (e Longos) a=5 b = 6000000000000000000000000000000000000012345678910*1234567 c=b/a  / no Python 2 é divisão de inteiros!  from __future__ import division  Número de Ponto Flutuante d = 16.27  Strings  formatadas como em C e = „henrique‟ f = „gabriel‟ g = “%s %s” % (e,f)  Booleanos ◦ True e False
  • 25. Estruturas (Básicas) de Dados  ( Tuplas ) ◦ Imutável ◦ Armazenar valores a = (5,6,‟eu‟,False)  [ Listas ] ◦ Mutável ◦ Trabalhar com valores ◦ Vetores <- b = [5,6,‟eu‟,False]  { Dicionários } ◦ chave->valor c = {„eu‟: False, 5:(6,7)} c[„eu‟] == False  Sets
  • 26. Entendendo o Básico  Atribuição: =  Comparação: ==  Diferença: != <>  Operadores Matemáticos: * / - +  Operadores Lógicos: and, or, not  Entrada de dados: input(), raw_input()  Saída: print
  • 27. Entendendo mais o Básico  Tudo são objetos (menos Nomes)  Objetos tem tipos. ◦ type(5)  <type 'int'> ◦ type(„eu‟)  <type 'str'> ◦ type([5,6,7])  <type 'list'>  Nomes não tem tipo ◦ Nomes apenas referenciam um objeto A= 5 B=A A= 6 B=?
  • 28. Estrutura de Controle if condição: funcao1() funcao2() elif condição2: funcao3() else: funcao4()
  • 29. Estruturas de Repetição Laço FOR Laço WHILE for variavel in lista: while condição: funcao1(variavel) funcao2() for variavel in range(10): while True: if variavel == 3: funcao3() break
  • 30. Juntando tudo em um baralho! valores = ['As']+list(range(2,11))+ quot;Valete Dama Reiquot;.split() naipes = quot;Paus Ouros Copas Espadasquot;.split() baralho = [ quot;%s de %squot; % (v,n) for v in valores for n in naipes ] print baralho ['As de Paus', 'As de Ouros', 'As de Copas', 'As de Espadas', '2 de Paus', '2 de Ouros', '2 de Copas', '2 de Espadas', '3 de Paus', '3 de Ouros', '3 de Copas', '3 de Espadas', '4 de Paus', '4 de Ouros', '4 de Copas', '4 de Espadas', '5 de Paus', '5 de Ouros', '5 de Copas', '5 de Espadas', '6 de Paus', '6 de Ouros', '6 de Copas', '6 de Espadas', '7 de Paus', '7 de Ouros', '7 de Copas', '7 de Espadas', '8 de Paus', '8 de Ouros', '8 de Copas', '8 de Espadas', '9 de Paus', '9 de Ouros', '9 de Copas', '9 de Espadas', '10 de Paus', '10 de Ouros', '10 de Copas', '10 de Espadas', 'Valete de Paus', 'Valete de Ouros', 'Valete de Copas', 'Valete de Espadas', 'Dama de Paus', 'Dama de Ouros', 'Dama de Copas', 'Dama de Espadas', 'Rei de Paus', 'Rei de Ouros', 'Rei de Copas', 'Rei de Espadas']
  • 31. Como é que é?
  • 32. Entendendo o baralho!  Concatenação de Listas ◦ [5]+[„6‟]+“7,8”.split(“,”) == [5, „6‟, „7‟, „8‟]  String.split() ◦ “1,2,3,4”.split(“,”) == [„1‟, „2‟, „3‟, „4‟]  List Comprehension ◦ [x**x for x in [1,2,3,4] if x*2 >= 4]  [4, 27, 256]
  • 33. Voltando ao baralho!  Slicing: ◦ baralho[0]  'As de Paus' ◦ baralho[0:4]  ['As de Paus', 'As de Ouros', 'As de Copas', 'As de Espadas'] ◦ baralho[0:15:2]  ['As de Paus', 'As de Copas', '2 de Paus', '2 de Copas', '3 de Paus', '3 de Copas', '4 de Paus', '4 de Copas'] ◦ baralho[-1]  'Rei de Espadas'
  • 34. Embaralhando o baralho!  Módulo random ◦ Método shuffle  Embaralha.  shuffle(baralho)  ['As de Paus', '8 de Ouros', '2 de Espadas', '9 de Paus', '7 de Ouros', '2 de Paus', '4 de Ouros', 'As de Ouros', '4 de Espadas', 'As de Espadas', '5 de Ouros', 'Rei de Espadas', 'Valete de Paus', '9 de Espadas', '6 de Paus', 'Rei de Paus', 'As de Copas', '5 de Paus', '6 de Espadas', '8 de Espadas', '6 de Ouros', 'Dama de Espadas', 'Valete de Copas', '5 de Espadas', '3 de Espadas', '6 de Copas', '3 de Paus', '7 de Copas', '3 de Ouros', '8 de Copas', '2 de Copas', '7 de Espadas', '10 de Espadas', '10 de Paus', '10 de Ouros', '7 de Paus', 'Valete de Ouros', '9 de Copas', '2 de Ouros', '4 de Paus', 'Dama de Copas', 'Rei de Ouros', '9 de Ouros', '4 de Copas', 'Valete de Espadas', '5 de Copas', 'Dama de Ouros', '10 de Copas', '3 de Copas', 'Rei de Copas', 'Dama de Paus', '8 de Paus']
  • 35. Brincando com o baralho!  Inverter a ordem das cartas ◦ baralho.reverse()  Tirar a carta do topo do baralho ◦ baralho.pop()  Adicionar 3 coringas ao baralho ◦ baralho.extend([„Coringa‟]*3)  Ordenar o baralho (léxicamente) ◦ baralho.sort()  Ordenar pelo número de letras? Baralho.sort(key=len)
  • 36. Python tem a força!
  • 37. O poder da ordenação!  valores = [(-x)**x for x in range(1,10)] ◦ [-1, 4, -27, 256, -3125, 46656, -823543, 16777216, -387420489] ◦ Não ordenado. ◦ Valores.sort() ou variavel = sorted(valores)  [-387420489, -823543, -3125, -27, -1, 4, 256, 46656, 16777216]  Ordenação ao contrário? reverse=True  [16777216, 46656, 256, 4, -1, -27, -3125, -823543, -387420489]
  • 38. A força dos Conjuntos!  Coleção de valores únicos  Não ordenada ◦ set([5,7,5,6,7,28]) == set([28, 5, 6, 7])  list(set([28,5,6,7])) == [28, 5, 6, 7]
  • 39. Operações com conjuntos a = set([1,2,3]) b = set([2,3,4])  Operações básicas ◦ a.intersection(b)  set([2, 3]) ◦ a.union(b)  set([1, 2, 3, 4]) ◦ a-b  set([1]) ◦ b-a  set([4])
  • 40. Definindo funções def funcao(parametro, *parametros): print parametro for cada in parametros: print cada def fatorial(numero): if numero == 1: return 1 else: return numero*fatorial(numero-1) def fatorial2(numero): aux = 1 for x in range(1,numero+1): aux*=x return aux
  • 41. Já chega! Quero ir pra casa logo! E o tempo está acabando!
  • 42. Bibliotecas Úteis  sys  calendar  random  datetime  math  collections  urllib  decimal  re  csv  string  os  __future__  webbrowser http://docs.python.org/library/index.html
  • 43. Mais algumas considerações  Python é extensível ◦ C e C++ ◦ IronPython  .Net ◦ Jython  Java
  • 44. Até logo e obrigado pelos peixes! ikkibr@gmail.com Henr“Ikke” G. G. Pereira