SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Minicurso de Python
• Conceitos Básicos, Estruturas de
  Dados e Orientação a objetos
                             Nathan Siegle Hartmann




VIII JOLIM - Maringá, 2012                            1
O que é Python?
• Python é uma linguagem de programação de altíssimo
  nível (VHLPL – very high level programming
  language), interpretada, orientada a objetos e
  dinâmica criada por Guido van Rossum em 1991.
• A linguagem tem um modelo de desenvolvimento
  aberto mantido pela PSF (Python Software
  Foundation).




 VIII JOLIM - Maringá, 2012                            2
O que é Python?
• A linguagem foi projetada com a filosofia de enfatizar
  a importância do esforço do programador sobre o
  esforço computacional;
• Prioriza a legibilidade do código e a expressividade.




 VIII JOLIM - Maringá, 2012                                3
Quem usa Python?
• Atualmente Python é uma das linguagens mais
  utilizadas em grandes projetos no mundo.
  Engenheiros de software de empresas como Google
  afirmam que o uso de Python é essencial para o
  funcionamento de famosas ferramentas do Google.
  “C++ quando necessitamos, Python quando
  podemos”.
• As ferramentas Google Doc, Picasa, Orkut Help,
  dentre outras da empresa americana Google utilizam
  a linguagem Python.




VIII JOLIM - Maringá, 2012                             4
Quem usa Python?
• Grande parte da API do Google é desenvolvida em
  Python;
• O Google App Engine (framework web online mantido
  pelo Google) oferece suporte total a Python e foi
  desenvolvido também em Python;
• Zope, um dos melhores servidores de aplicação da
  atualidade foi desenvolvido em Python;
• Linux tem diversar rotinas em Python.




 VIII JOLIM - Maringá, 2012                           5
Quem usa Python?
• Empresas que patrocinam a Python Software
  Foundation: ActiveState; ASTi; Array BioPharma,
  Inc.; BizRate.com; Canonical; CCP Games; cPacket
  Networks; EarnMyDegree.com; Enthought, Inc.;
  Google; HitFlip, Inc.; IronPort Systems; Madison
  Tyler LLC; Merfin LLC; Microsoft; O'Reilly &
  Associates, Inc.; Opsware, Inc.; Strakt Holdings,
  Inc.; Sun Microsystems; Tabblo; ZeOmega; Zope
  Corporation.




 VIII JOLIM - Maringá, 2012                           6
Por que usar Python?
• Python é portável, você não precisa compilar seu
  programa cada vez que muda de sistema operacional,
  basta apenas que exista um interpretador Python
  instalado.
• Python é open-source com licença flexível, há uma
  comunidade que desenvolve a linguagem, que está
  sempre aprimorando-a e qualquer um de nós pode
  fazer parte dessa comunidade. A licença flexível nos
  permite desenvolver softwares proprietários com
  ferramentas livres.




 VIII JOLIM - Maringá, 2012                              7
Por que usar Python?
• Python é simples e auto-descritiva, algumas
  linguagens de programação têm sintaxe complexa ou
  difícil de memorizar.




 VIII JOLIM - Maringá, 2012                           8
Resumo de características
• Case sensitive;
• Tipagem dinâmica;
• Linguagem pura: 100% orientada a objetos;
• Código auto-descritivo: simples e de fácil leitura;
• Programação em alto-nível: não permite manipulação
  de ponteiros;
• Não suporta sobrecarga de funções;




 VIII JOLIM - Maringá, 2012                             9
Sintaxe
#comentário de uma
 #comentário de uma                          if x > y:
                                              if x > y:
linha
 linha                                           big = x
                                                  big = x
                                                 small = y
                                                  small = y
“““comentário de um
 “““comentário de um                         else:
                                              else:
bloco“““
 bloco“““
                                                 big = y
                                                  big = y
                                                 small = x
                                                  small = x
‘‘‘comentário de um
 ‘‘‘comentário de um
bloco‘‘‘
 bloco‘‘‘



                    Simples e objetivo! Não é preciso saber
                    programação para entender este
                    código, basta um conhecimento básico
                    em inglês!

 VIII JOLIM - Maringá, 2012                                   10
Variáveis
• O conceito de variável em Python é representado
  sempre por um objeto. Na verdade, Python é uma
  linguagem pura, ou seja, tudo em Python é um
  objeto.
• Toda variável é uma referência!
• Variáveis armazenam endereços de memória e não
  valores!




 VIII JOLIM - Maringá, 2012                         11
Operadores
• Os operadores do Python:

      Aritméticos               Comparação   Lógicos
             +                     ==         and
              -                     !=         or
              *                     >         not
              /                     <
             **                    >=
                                   <=
                                    in
                                    is




VIII JOLIM - Maringá, 2012                             12
Procedimentos e Funções
• Procedimentos não           • Funções retornam
  retornam valores              valores

def procedimento():
 def procedimento():         def hora():
                              def hora():
    print “Hello World”
     print “Hello World”         from datetime import datetime
                                  from datetime import datetime
                                 return datetime.now()
                                  return datetime.now()




VIII JOLIM - Maringá, 2012                                 13
Procedimentos e Funções
• Valores padrão (Default)
• Se nenhum valor for passado como parâmetro, é
  assumido o valor padrão


                def teste(var = 1):
                 def teste(var = 1):
                    return var+1
                     return var+1




VIII JOLIM - Maringá, 2012                        14
Exemplo 1




VIII JOLIM - Maringá, 2012               15
Strings
• A string em Python é representada pela classe str.
  Toda string possui estado e comportamento provido
  pela classe str.
• Podem ser representadas utilizando “ ou ‘.
• Ex: “Meu nome é Nathan”.
• Ex: ‘Meu nome é Nathan’.
• Ex: “Meu nome é ‘Nathan’”




 VIII JOLIM - Maringá, 2012                            16
Strings
• Conheceremos agora alguns métodos para trabalhar
  com strings:
   o __len__(): Retorna o tamanho da string;
   o capitalize(): Retorna a mesma string com a
     primeira letra em maiúsculo.
   o upper(): Retorna a mesma string com todas as
     letras em maiúsculo.
   o lower(): Retorna a mesma string com todas as
     letras em minúsculo.




 VIII JOLIM - Maringá, 2012                          17
Strings
• Mais métodos:
  o replace(antigo, novo): Retorna a mesma string com
    o valor novo em todas as ocorrências de antigo.
  o split([separador]): Retorna uma lista de strings.
    Caso o separador não seja especificado, a lista será
    dividida por espaços em branco.




 VIII JOLIM - Maringá, 2012                            18
Exemplo 2
• Criptografar uma string, substituindo todas as
  ocorrências de um ou mais elementos por símbolos
  especiais.
• Por exemplo: Substituir a ocorrência do símbolo “a”
  pelo símbolo “*”.




 VIII JOLIM - Maringá, 2012                             19
Lendo e Escrevendo em
                  Arquivos
• Leitura de arquivos em Python é simples como em C!
• Arquivos são objetos do tipo file;
• Para a abertura de um arquivo, utilizamos a função
  open;
• A função open funciona como uma fábrica de
  instâncias.




 VIII JOLIM - Maringá, 2012                            20
Formas de Abrir um
               Arquivo
• Read: Abre o arquivo para leitura.
• Write: Abre o arquivo para escrita. Cria uma nova
  instância do arquivo a cada vez.
• Append: Abre o arquivo para complementar. Cria
  um arquivo apenas se ele não existir
• (Variantes).


                              variável = open(file,mode)
                               variável = open(file,mode)
                              ...
                               ...
                              variável.close()
                               variável.close()



 VIII JOLIM - Maringá, 2012                                 21
Métodos para leitura
• Read: Lê todo o arquivo e retorna uma única string;
• Readline: Lê uma única linha do arquivo;
• Readlines: Lê todo o arquivo e retorna um array de
  linhas.




 VIII JOLIM - Maringá, 2012                             22
Métodos para Escrita
• Write: Escreve uma string no arquivo,
  sequencialmente.
• WriteLines: Escreve um array de string,
  sequencialmente.




 VIII JOLIM - Maringá, 2012                 23
Exemplo 3
• 1 - Criar um arquivo para escrita e escrever nele;
• 2 – Abrir o arquivo para leitura e verificar o
  conteúdo existente;
• 3 – Complementar o arquivo utilizando o modo
  append.




 VIII JOLIM - Maringá, 2012                            24
Estruturas de Dados
• Estruturas de dados englobam tipos compostos e
  dados complexos;
• As estruturas de dados mais famosas são vetores e
  matrizes. Dentre as mais avançadas, a mais
  conhecida é a lista.
• Há ainda outras estruturas como árvore, pilha, fila,
  hash, etc.
• Vale lembrar que uma string também é uma estrutura
  de dados!
• Estudaremos três estruturas: List, Tuple e Dict.



 VIII JOLIM - Maringá, 2012                              25
Estruturas de Dados: List
• A list (lista) é uma das mais conhecidas estruturas de
  dados.
• Em Python, a lista tem estado e comportamento que
  faz uma espécie de mistura entre o comportamento
  de vetores (acesso rápido por índices) e listas
  (“iterabilidade”);




 VIII JOLIM - Maringá, 2012                                26
Estruturas de Dados: List
• Veremos agora alguns métodos para trabalhar com
  listas:
   o append(elemento): adiciona elemento ao fim da
      lista.
   o count(elemento): retorna um inteiro contendo a
      quantidade de vezes que elemento aparece na
      lista.
   o reverse(): inverte a ordem dos elementos da lista.
   o remove(elemento): remove da lista o primeiro
      elemento encontrado.



 VIII JOLIM - Maringá, 2012                               27
Exemplo 4
• Trocar linhas por colunas de uma matriz quadrada.
• Verificar se um número é primo.




 VIII JOLIM - Maringá, 2012                           28
Gerando Listas
• Python possui formas de gerar listas, veremos duas;
• Uma das primeiras funções que todos aprendem em
  Python é a função range, que gera uma lista de
  inteiros;




 VIII JOLIM - Maringá, 2012                             29
Gerando Listas
                             lista1 = range(1500)

                             lista2 = range(1001, 2000)
Gera uma lista de 0 até
1499.



                                      Gera uma lista de 1001
                                      até 1999.




VIII JOLIM - Maringá, 2012                                     30
Gerando Listas
• Há ainda uma forma “avançada” de gerar listas a
  partir de outras listas;
• Trata-se da técnica List Comprehension (Compreensão
  de Listas);
• A sintaxe de List Comprehension vem da linguagem
  funcional Haskell;
• O nome e a sintaxe originam da Matemática:
  Compreensão de listas tem sintaxe praticamente igual
  à notação axiomática de compreensão (Teoria de
  Conjuntos);



 VIII JOLIM - Maringá, 2012                              31
Exemplo 5
• 1 – Criar um vetor B que não contenha as
  ocorrências de um elemento em um vetor A
     o A = [1,2,3,1,2,3,1,2,3,4,5,6]

• 2 - Criar um array que contenha todos os
  elementos múltiplos de 3, 5 e 9 (simultaneamente)
  entre 0 e 10.000.




 VIII JOLIM - Maringá, 2012                           32
Estruturas de Dados: Dict
• Chamaremos dicts de dicionários, para facilitar a fala
  em português;
• Um dicionário é uma estrutura de dados onde cada nó
  é composto por uma chave e um valor;
• Têm este nome pois são praticamente a mesma coisa
  que um dicionário!




 VIII JOLIM - Maringá, 2012                                33
Estruturas de Dados: Dict
dicionario = {}
 dicionario = {}
dicionario["teste"] = "A palavra teste significa que estamos
 dicionario["teste"] = "A palavra teste significa que estamos
testando"
 testando"
dicionario["testado"] = "A palavra testado significa que algo jah
 dicionario["testado"] = "A palavra testado significa que algo jah
passou por um teste"
 passou por um teste"
dicionario["testando"] = "A palavra testando significa que algo
 dicionario["testando"] = "A palavra testando significa que algo
estah passando por um teste"
 estah passando por um teste"


pessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"}




    VIII JOLIM - Maringá, 2012                                34
Estruturas de Dados: Dict
• Alguns métodos de manipulação de dicionários:
   o get(indice): retorna o valor correspondente a indice.
   o items(): retorna uma lista de tuplas, no formato
     (índice, valor).
   o values(): retorna uma lista com todos os valores do
     dicionário.
   o keys(): retorna uma lista com todas as chaves do
     dicionário.
   o clear(): remove todos os itens do dicionário.




 VIII JOLIM - Maringá, 2012                              35
Estruturas de Dados: Dict
pessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"}
 pessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"}

print(pessoas.get("Maria"))
 print(pessoas.get("Maria"))
print(pessoas.items())
 print(pessoas.items())
print(pessoas.values())
 print(pessoas.values())
print(pessoas.keys())
 print(pessoas.keys())
pessoas.clear()
 pessoas.clear()
print(pessoas)
 print(pessoas)




    VIII JOLIM - Maringá, 2012                                36
Utilização
• Muito útil para arrays esparços.
• Hashing.
• Etc.




 VIII JOLIM - Maringá, 2012                37
Exemplo 6
• Criar um dicionário com as pessoas Ana, Bruna,
  Carolina atribuindo suas respectivas idades: 20, 19,
  18 anos.




 VIII JOLIM - Maringá, 2012                              38
Recursão
• Recursão é uma forma alternativa à tradicional
  para desenvolver programas de computador.
• Algumas versões recursivas são mais eficientes que
  imperativas e até mesmo mais simples de se
  implementar.




 VIII JOLIM - Maringá, 2012                            39
Recursão
def funcaoRecursiva(variavel):
 def funcaoRecursiva(variavel):
    if variavel == 10:
     if variavel == 10:
        return variavel
         return variavel          #caso base
                                   #caso base
    return variavel + funcaoRecursiva(variavel+1)
     return variavel + funcaoRecursiva(variavel+1)
    #chamada recursiva
     #chamada recursiva




 VIII JOLIM - Maringá, 2012                          40
Exemplo 7
• Calcular o fatorial de um número utilizando uma
  função recursiva e também uma versão não
  recursiva.
• Comparar a complexidade de implementação.




 VIII JOLIM - Maringá, 2012                         41
Desafio
• Criar um registro (utilizando arquivo) que armazene
  diversas pessoas (Nome e idade) para uma
  pesquisa da universidade.
• Crie uma função que leia o arquivo e apresente na
  tela os devidos dados.




 VIII JOLIM - Maringá, 2012                             42
Orientação a Objetos em
            Python




VIII JOLIM - Maringá, 2012    43
Orientação a objetos
• Python é uma linguagem 100% orientada a objetos,
  significa que tudo em Python é um objeto!
• Veremos nos próximos slides como definir classes,
  atributos, métodos e como aplicar em Python diversos
  conceitos da Orientação a Objetos.




 VIII JOLIM - Maringá, 2012                              44
Definindo Classes
                                 class Veiculo(object):
                                  class Veiculo(object):
                                     def __init(self,parametro):
                                      def __init(self,parametro):
                                        self.parametro = parametro
                                         self.parametro = parametro




Palavra class tipicamente utilizada              Método inicializador da classe
para definir classes! (:




    VIII JOLIM - Maringá, 2012                                                    45
Definindo Atributos
 • Existem duas formas de definir atributos de instância
   em Python;

                               class Veiculo(object):
                                class Veiculo(object):
                                   pass
                                    pass

                               fusca = Veiculo()
                                fusca = Veiculo()
                               fusca.marca = "Volkswagen"
                                fusca.marca = "Volkswagen"
                               fusca.ano = 1972
                                fusca.ano = 1972

class Veiculo(object):
 class Veiculo(object):
    marca = None
     marca = None
    ano = None
     ano = None

gol = Veiculo()
 gol = Veiculo()
gol.marca = "Volkswagen"
 gol.marca = "Volkswagen"
gol.ano = 2008
 gol.ano = 2008
  VIII JOLIM - Maringá, 2012                                 46
Definindo Atributos
  class Veiculo(object):
   class Veiculo(object):
      marca = None
       marca = None
      ano = None
       ano = None

  gol = Veiculo()
   gol = Veiculo()
  gol.marca = "Volkswagen"
   gol.marca = "Volkswagen"
  gol.ano = 2008
   gol.ano = 2008
  gol.bazinga = True
   gol.bazinga = True




VIII JOLIM - Maringá, 2012    47
Atributos
• Nem sempre queremos que os atributos sejam
  acessados diretamente
• Para isso podemos criar métodos Getters e Setters
                   Pessoa.getNome()
                    Pessoa.getNome()
                   Pessoa.setNome(nome)
                    Pessoa.setNome(nome)


• Ainda podemos tornar os atributos privados
                   Pessoa.__nome = “nome”
                    Pessoa.__nome = “nome”
                   Pessoa.__idade = idade
                    Pessoa.__idade = idade




 VIII JOLIM - Maringá, 2012                           48
Definindo métodos
• Um método é um atributo com comportamento;
• Para não fundir conceitos, vamos apenas trabalhar
  com métodos da forma tradicional, ou quase isso;
• Para definir métodos e funções em Python utilizamos
  a palavra reservada def;


• Def __init__(self,atr1,atr2)
• Def getNome(self): return self.__nome




 VIII JOLIM - Maringá, 2012                             49
Herança de classes
class Atleta(Pessoa):
 class Atleta(Pessoa):
    peso = None
     peso = None
    aposentado = None
     aposentado = None

        def __init__(self, nome, idade, peso):
         def __init__(self, nome, idade, peso):
            super(Atleta, self).__init__(nome, idade)
             super(Atleta, self).__init__(nome, idade)
            self.peso = peso
             self.peso = peso
            self.aposentado = False
             self.aposentado = False

        def aquecer(self):
         def aquecer(self):
            print("Atleta aquecido!")
             print("Atleta aquecido!")

        def aposentar(self):
         def aposentar(self):
            self.aposentado = True
             self.aposentado = True




VIII JOLIM - Maringá, 2012                               50
Herança de classes
class Corredor(Atleta):
 class Corredor(Atleta):
    def correr(self):
     def correr(self):
        print("Corredor correndo!")
         print("Corredor correndo!")

         class Nadador(Atleta):
          class Nadador(Atleta):
             def nadar(self):
              def nadar(self):
                 print("Nadador nadando!")
                  print("Nadador nadando!")

                    class Ciclista(Atleta):
                     class Ciclista(Atleta):
                        def pedalar(self):
                         def pedalar(self):
                            print("Ciclista pedalando!")
                             print("Ciclista pedalando!")




 VIII JOLIM - Maringá, 2012                                 51
Herança múltipla
• Há uma peculiaridade no diagrama de classes: a classe
  TriAtleta herda de três outras classes;
• Muitas pessoas podem pensar: mas isso é impossível!
• Em Python, assim como em C++, isso é possível sim!
  Logo, a classe TriAtleta fica bem simples:


        class TriAtleta(Ciclista, Nadador, Corredor):
         class TriAtleta(Ciclista, Nadador, Corredor):
            pass
             pass




  VIII JOLIM - Maringá, 2012                              52
Exemplo 8
• Criar uma classe Estudante, com atributo curso.
  Esta classe deve herdar da classe Pessoa os
  atributos nome e idade.
• Uma pessoa tem um carro. Criar uma classe Carro
  e fazer que uma pessoa tenha um atributo do tipo
  Carro.




VIII JOLIM - Maringá, 2012                           53
Exceções
• Em Python, assim como em C++ e Java, o conceito de
  Exceção está ligado à orientação a objetos.
• Uma exceção é um objeto, possui estado e
  comportamento.
• O tratamento de exceções pode ser utilizado para
  aumentar o nível de abstração do código.
• É possível usar exceções também para encapsular
  dados específicos sobre o erro levantado.
• Vamos aprender como criar, tratar e levantar uma
  exceção em Python!



 VIII JOLIM - Maringá, 2012                          54
Exceções
• Primeiramente, vamos criar nossas exceções.
• Uma exceção personalizada é modelada por uma
  classe qualquer, que herda da classe BaseException;
• Nas versões anteriores de Python qualquer classe
  podia modelar uma exceção. Isso gerava a má prática
  de lançar exceções modeladas pela classe string;




 VIII JOLIM - Maringá, 2012                             55
Exceções
def alterarPeso(self, peso):
 def alterarPeso(self, peso):
        if peso > 0 and peso < 400:
         if peso > 0 and peso < 400:
            self.__peso = peso
             self.__peso = peso
        else:
         else:
            raise Exception("%f nao eh um peso valido!", %(peso))
             raise Exception("%f nao eh um peso valido!", %(peso))




    VIII JOLIM - Maringá, 2012                                56
Exceções
• Python levanta diversas exceções internamente:
  ValueError, IOError, TypeError;
• Vamos tratar exceções!
• Para tratar exceções em Python utilizamos try…
  except… else… finally;




 VIII JOLIM - Maringá, 2012                        57
Exceções
def incrementar(numero):
 def incrementar(numero):
    try:
     try:
         return numero+1
          return numero+1
     except:
      except:
           raise Exception(“É necessário um número para somar”)
            raise Exception(“É necessário um número para somar”)


def incrementar(numero):
 def incrementar(numero):
    try:
     try:
         return numero+1
          return numero+1
     except TypeError:
      except TypeError:
           return int(numero)+1
            return int(numero)+1


VIII JOLIM - Maringá, 2012                                    58
Referências
• www.python.org
• www.pythonbrasil.org
• www.djangobrasil.org
• www.plone.org
• www.tchezope.org




 VIII JOLIM - Maringá, 2012                 59

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
Alvaro Oliveira
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
Carlos Schults
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
Christian Perone
 
Programacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshareProgramacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshare
Marcio Junior Vieira
 

Was ist angesagt? (18)

Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: Introdução
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Introdução à linguagem Python
Introdução à linguagem PythonIntrodução à linguagem Python
Introdução à linguagem Python
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
Python
PythonPython
Python
 
Programacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshareProgramacao de macros_com_libre_office_basic_slideshare
Programacao de macros_com_libre_office_basic_slideshare
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 

Andere mochten auch (8)

Escuela Nº 57. 5º año "Áreas Protegidas
Escuela Nº 57. 5º año "Áreas ProtegidasEscuela Nº 57. 5º año "Áreas Protegidas
Escuela Nº 57. 5º año "Áreas Protegidas
 
Mision y vision
Mision y visionMision y vision
Mision y vision
 
Monografiaaa
MonografiaaaMonografiaaa
Monografiaaa
 
EAD
EADEAD
EAD
 
How can you get followers on keek
How can you get followers on keekHow can you get followers on keek
How can you get followers on keek
 
How can you gain more followers on keek
How can you gain more followers on keekHow can you gain more followers on keek
How can you gain more followers on keek
 
Incorporating SAT Solvers into Hierarchicalclustering Algorithms - An Efficie...
Incorporating SAT Solvers into Hierarchicalclustering Algorithms - An Efficie...Incorporating SAT Solvers into Hierarchicalclustering Algorithms - An Efficie...
Incorporating SAT Solvers into Hierarchicalclustering Algorithms - An Efficie...
 
Anotacao de corpus
Anotacao de corpusAnotacao de corpus
Anotacao de corpus
 

Ähnlich wie Minicurso Python - Apresentado no JOLIM 2012

Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução Python
Gleison Rodrigues
 
apresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allapresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for all
RosibertoGonalves
 

Ähnlich wie Minicurso Python - Apresentado no JOLIM 2012 (20)

Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Seja DinâMico Com Python
Seja DinâMico Com PythonSeja DinâMico Com Python
Seja DinâMico Com Python
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Python for kids
Python for kidsPython for kids
Python for kids
 
Aula2 ambientação a linguagem deprogramação python
Aula2   ambientação a linguagem deprogramação pythonAula2   ambientação a linguagem deprogramação python
Aula2 ambientação a linguagem deprogramação python
 
Comsolid2011 Introdução Python
Comsolid2011 Introdução PythonComsolid2011 Introdução Python
Comsolid2011 Introdução Python
 
Introdução à programação em Ruby
Introdução à programação em RubyIntrodução à programação em Ruby
Introdução à programação em Ruby
 
Aula 1 pc - slides
Aula 1   pc - slidesAula 1   pc - slides
Aula 1 pc - slides
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Python
PythonPython
Python
 
Aula3PythonBasico.ppt
Aula3PythonBasico.pptAula3PythonBasico.ppt
Aula3PythonBasico.ppt
 
Aula3PythonBasico (1).ppt
Aula3PythonBasico (1).pptAula3PythonBasico (1).ppt
Aula3PythonBasico (1).ppt
 
Python 01
Python 01Python 01
Python 01
 
Curso de Python.ppt
Curso de Python.pptCurso de Python.ppt
Curso de Python.ppt
 
apresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allapresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for all
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4
 
Aula python
Aula pythonAula python
Aula python
 
Python para Desenvolvedores
Python para DesenvolvedoresPython para Desenvolvedores
Python para Desenvolvedores
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 

Kürzlich hochgeladen

Kürzlich hochgeladen (8)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Minicurso Python - Apresentado no JOLIM 2012

  • 1. Minicurso de Python • Conceitos Básicos, Estruturas de Dados e Orientação a objetos Nathan Siegle Hartmann VIII JOLIM - Maringá, 2012 1
  • 2. O que é Python? • Python é uma linguagem de programação de altíssimo nível (VHLPL – very high level programming language), interpretada, orientada a objetos e dinâmica criada por Guido van Rossum em 1991. • A linguagem tem um modelo de desenvolvimento aberto mantido pela PSF (Python Software Foundation). VIII JOLIM - Maringá, 2012 2
  • 3. O que é Python? • A linguagem foi projetada com a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional; • Prioriza a legibilidade do código e a expressividade. VIII JOLIM - Maringá, 2012 3
  • 4. Quem usa Python? • Atualmente Python é uma das linguagens mais utilizadas em grandes projetos no mundo. Engenheiros de software de empresas como Google afirmam que o uso de Python é essencial para o funcionamento de famosas ferramentas do Google. “C++ quando necessitamos, Python quando podemos”. • As ferramentas Google Doc, Picasa, Orkut Help, dentre outras da empresa americana Google utilizam a linguagem Python. VIII JOLIM - Maringá, 2012 4
  • 5. Quem usa Python? • Grande parte da API do Google é desenvolvida em Python; • O Google App Engine (framework web online mantido pelo Google) oferece suporte total a Python e foi desenvolvido também em Python; • Zope, um dos melhores servidores de aplicação da atualidade foi desenvolvido em Python; • Linux tem diversar rotinas em Python. VIII JOLIM - Maringá, 2012 5
  • 6. Quem usa Python? • Empresas que patrocinam a Python Software Foundation: ActiveState; ASTi; Array BioPharma, Inc.; BizRate.com; Canonical; CCP Games; cPacket Networks; EarnMyDegree.com; Enthought, Inc.; Google; HitFlip, Inc.; IronPort Systems; Madison Tyler LLC; Merfin LLC; Microsoft; O'Reilly & Associates, Inc.; Opsware, Inc.; Strakt Holdings, Inc.; Sun Microsystems; Tabblo; ZeOmega; Zope Corporation. VIII JOLIM - Maringá, 2012 6
  • 7. Por que usar Python? • Python é portável, você não precisa compilar seu programa cada vez que muda de sistema operacional, basta apenas que exista um interpretador Python instalado. • Python é open-source com licença flexível, há uma comunidade que desenvolve a linguagem, que está sempre aprimorando-a e qualquer um de nós pode fazer parte dessa comunidade. A licença flexível nos permite desenvolver softwares proprietários com ferramentas livres. VIII JOLIM - Maringá, 2012 7
  • 8. Por que usar Python? • Python é simples e auto-descritiva, algumas linguagens de programação têm sintaxe complexa ou difícil de memorizar. VIII JOLIM - Maringá, 2012 8
  • 9. Resumo de características • Case sensitive; • Tipagem dinâmica; • Linguagem pura: 100% orientada a objetos; • Código auto-descritivo: simples e de fácil leitura; • Programação em alto-nível: não permite manipulação de ponteiros; • Não suporta sobrecarga de funções; VIII JOLIM - Maringá, 2012 9
  • 10. Sintaxe #comentário de uma #comentário de uma if x > y: if x > y: linha linha big = x big = x small = y small = y “““comentário de um “““comentário de um else: else: bloco“““ bloco“““ big = y big = y small = x small = x ‘‘‘comentário de um ‘‘‘comentário de um bloco‘‘‘ bloco‘‘‘ Simples e objetivo! Não é preciso saber programação para entender este código, basta um conhecimento básico em inglês! VIII JOLIM - Maringá, 2012 10
  • 11. Variáveis • O conceito de variável em Python é representado sempre por um objeto. Na verdade, Python é uma linguagem pura, ou seja, tudo em Python é um objeto. • Toda variável é uma referência! • Variáveis armazenam endereços de memória e não valores! VIII JOLIM - Maringá, 2012 11
  • 12. Operadores • Os operadores do Python: Aritméticos Comparação Lógicos + == and - != or * > not / < ** >= <= in is VIII JOLIM - Maringá, 2012 12
  • 13. Procedimentos e Funções • Procedimentos não • Funções retornam retornam valores valores def procedimento(): def procedimento(): def hora(): def hora(): print “Hello World” print “Hello World” from datetime import datetime from datetime import datetime return datetime.now() return datetime.now() VIII JOLIM - Maringá, 2012 13
  • 14. Procedimentos e Funções • Valores padrão (Default) • Se nenhum valor for passado como parâmetro, é assumido o valor padrão def teste(var = 1): def teste(var = 1): return var+1 return var+1 VIII JOLIM - Maringá, 2012 14
  • 15. Exemplo 1 VIII JOLIM - Maringá, 2012 15
  • 16. Strings • A string em Python é representada pela classe str. Toda string possui estado e comportamento provido pela classe str. • Podem ser representadas utilizando “ ou ‘. • Ex: “Meu nome é Nathan”. • Ex: ‘Meu nome é Nathan’. • Ex: “Meu nome é ‘Nathan’” VIII JOLIM - Maringá, 2012 16
  • 17. Strings • Conheceremos agora alguns métodos para trabalhar com strings: o __len__(): Retorna o tamanho da string; o capitalize(): Retorna a mesma string com a primeira letra em maiúsculo. o upper(): Retorna a mesma string com todas as letras em maiúsculo. o lower(): Retorna a mesma string com todas as letras em minúsculo. VIII JOLIM - Maringá, 2012 17
  • 18. Strings • Mais métodos: o replace(antigo, novo): Retorna a mesma string com o valor novo em todas as ocorrências de antigo. o split([separador]): Retorna uma lista de strings. Caso o separador não seja especificado, a lista será dividida por espaços em branco. VIII JOLIM - Maringá, 2012 18
  • 19. Exemplo 2 • Criptografar uma string, substituindo todas as ocorrências de um ou mais elementos por símbolos especiais. • Por exemplo: Substituir a ocorrência do símbolo “a” pelo símbolo “*”. VIII JOLIM - Maringá, 2012 19
  • 20. Lendo e Escrevendo em Arquivos • Leitura de arquivos em Python é simples como em C! • Arquivos são objetos do tipo file; • Para a abertura de um arquivo, utilizamos a função open; • A função open funciona como uma fábrica de instâncias. VIII JOLIM - Maringá, 2012 20
  • 21. Formas de Abrir um Arquivo • Read: Abre o arquivo para leitura. • Write: Abre o arquivo para escrita. Cria uma nova instância do arquivo a cada vez. • Append: Abre o arquivo para complementar. Cria um arquivo apenas se ele não existir • (Variantes). variável = open(file,mode) variável = open(file,mode) ... ... variável.close() variável.close() VIII JOLIM - Maringá, 2012 21
  • 22. Métodos para leitura • Read: Lê todo o arquivo e retorna uma única string; • Readline: Lê uma única linha do arquivo; • Readlines: Lê todo o arquivo e retorna um array de linhas. VIII JOLIM - Maringá, 2012 22
  • 23. Métodos para Escrita • Write: Escreve uma string no arquivo, sequencialmente. • WriteLines: Escreve um array de string, sequencialmente. VIII JOLIM - Maringá, 2012 23
  • 24. Exemplo 3 • 1 - Criar um arquivo para escrita e escrever nele; • 2 – Abrir o arquivo para leitura e verificar o conteúdo existente; • 3 – Complementar o arquivo utilizando o modo append. VIII JOLIM - Maringá, 2012 24
  • 25. Estruturas de Dados • Estruturas de dados englobam tipos compostos e dados complexos; • As estruturas de dados mais famosas são vetores e matrizes. Dentre as mais avançadas, a mais conhecida é a lista. • Há ainda outras estruturas como árvore, pilha, fila, hash, etc. • Vale lembrar que uma string também é uma estrutura de dados! • Estudaremos três estruturas: List, Tuple e Dict. VIII JOLIM - Maringá, 2012 25
  • 26. Estruturas de Dados: List • A list (lista) é uma das mais conhecidas estruturas de dados. • Em Python, a lista tem estado e comportamento que faz uma espécie de mistura entre o comportamento de vetores (acesso rápido por índices) e listas (“iterabilidade”); VIII JOLIM - Maringá, 2012 26
  • 27. Estruturas de Dados: List • Veremos agora alguns métodos para trabalhar com listas: o append(elemento): adiciona elemento ao fim da lista. o count(elemento): retorna um inteiro contendo a quantidade de vezes que elemento aparece na lista. o reverse(): inverte a ordem dos elementos da lista. o remove(elemento): remove da lista o primeiro elemento encontrado. VIII JOLIM - Maringá, 2012 27
  • 28. Exemplo 4 • Trocar linhas por colunas de uma matriz quadrada. • Verificar se um número é primo. VIII JOLIM - Maringá, 2012 28
  • 29. Gerando Listas • Python possui formas de gerar listas, veremos duas; • Uma das primeiras funções que todos aprendem em Python é a função range, que gera uma lista de inteiros; VIII JOLIM - Maringá, 2012 29
  • 30. Gerando Listas lista1 = range(1500) lista2 = range(1001, 2000) Gera uma lista de 0 até 1499. Gera uma lista de 1001 até 1999. VIII JOLIM - Maringá, 2012 30
  • 31. Gerando Listas • Há ainda uma forma “avançada” de gerar listas a partir de outras listas; • Trata-se da técnica List Comprehension (Compreensão de Listas); • A sintaxe de List Comprehension vem da linguagem funcional Haskell; • O nome e a sintaxe originam da Matemática: Compreensão de listas tem sintaxe praticamente igual à notação axiomática de compreensão (Teoria de Conjuntos); VIII JOLIM - Maringá, 2012 31
  • 32. Exemplo 5 • 1 – Criar um vetor B que não contenha as ocorrências de um elemento em um vetor A o A = [1,2,3,1,2,3,1,2,3,4,5,6] • 2 - Criar um array que contenha todos os elementos múltiplos de 3, 5 e 9 (simultaneamente) entre 0 e 10.000. VIII JOLIM - Maringá, 2012 32
  • 33. Estruturas de Dados: Dict • Chamaremos dicts de dicionários, para facilitar a fala em português; • Um dicionário é uma estrutura de dados onde cada nó é composto por uma chave e um valor; • Têm este nome pois são praticamente a mesma coisa que um dicionário! VIII JOLIM - Maringá, 2012 33
  • 34. Estruturas de Dados: Dict dicionario = {} dicionario = {} dicionario["teste"] = "A palavra teste significa que estamos dicionario["teste"] = "A palavra teste significa que estamos testando" testando" dicionario["testado"] = "A palavra testado significa que algo jah dicionario["testado"] = "A palavra testado significa que algo jah passou por um teste" passou por um teste" dicionario["testando"] = "A palavra testando significa que algo dicionario["testando"] = "A palavra testando significa que algo estah passando por um teste" estah passando por um teste" pessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"} VIII JOLIM - Maringá, 2012 34
  • 35. Estruturas de Dados: Dict • Alguns métodos de manipulação de dicionários: o get(indice): retorna o valor correspondente a indice. o items(): retorna uma lista de tuplas, no formato (índice, valor). o values(): retorna uma lista com todos os valores do dicionário. o keys(): retorna uma lista com todas as chaves do dicionário. o clear(): remove todos os itens do dicionário. VIII JOLIM - Maringá, 2012 35
  • 36. Estruturas de Dados: Dict pessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"} pessoas = {"Maria" : "Nome antigo", "Shyana" : "Nome complicado"} print(pessoas.get("Maria")) print(pessoas.get("Maria")) print(pessoas.items()) print(pessoas.items()) print(pessoas.values()) print(pessoas.values()) print(pessoas.keys()) print(pessoas.keys()) pessoas.clear() pessoas.clear() print(pessoas) print(pessoas) VIII JOLIM - Maringá, 2012 36
  • 37. Utilização • Muito útil para arrays esparços. • Hashing. • Etc. VIII JOLIM - Maringá, 2012 37
  • 38. Exemplo 6 • Criar um dicionário com as pessoas Ana, Bruna, Carolina atribuindo suas respectivas idades: 20, 19, 18 anos. VIII JOLIM - Maringá, 2012 38
  • 39. Recursão • Recursão é uma forma alternativa à tradicional para desenvolver programas de computador. • Algumas versões recursivas são mais eficientes que imperativas e até mesmo mais simples de se implementar. VIII JOLIM - Maringá, 2012 39
  • 40. Recursão def funcaoRecursiva(variavel): def funcaoRecursiva(variavel): if variavel == 10: if variavel == 10: return variavel return variavel #caso base #caso base return variavel + funcaoRecursiva(variavel+1) return variavel + funcaoRecursiva(variavel+1) #chamada recursiva #chamada recursiva VIII JOLIM - Maringá, 2012 40
  • 41. Exemplo 7 • Calcular o fatorial de um número utilizando uma função recursiva e também uma versão não recursiva. • Comparar a complexidade de implementação. VIII JOLIM - Maringá, 2012 41
  • 42. Desafio • Criar um registro (utilizando arquivo) que armazene diversas pessoas (Nome e idade) para uma pesquisa da universidade. • Crie uma função que leia o arquivo e apresente na tela os devidos dados. VIII JOLIM - Maringá, 2012 42
  • 43. Orientação a Objetos em Python VIII JOLIM - Maringá, 2012 43
  • 44. Orientação a objetos • Python é uma linguagem 100% orientada a objetos, significa que tudo em Python é um objeto! • Veremos nos próximos slides como definir classes, atributos, métodos e como aplicar em Python diversos conceitos da Orientação a Objetos. VIII JOLIM - Maringá, 2012 44
  • 45. Definindo Classes class Veiculo(object): class Veiculo(object): def __init(self,parametro): def __init(self,parametro): self.parametro = parametro self.parametro = parametro Palavra class tipicamente utilizada Método inicializador da classe para definir classes! (: VIII JOLIM - Maringá, 2012 45
  • 46. Definindo Atributos • Existem duas formas de definir atributos de instância em Python; class Veiculo(object): class Veiculo(object): pass pass fusca = Veiculo() fusca = Veiculo() fusca.marca = "Volkswagen" fusca.marca = "Volkswagen" fusca.ano = 1972 fusca.ano = 1972 class Veiculo(object): class Veiculo(object): marca = None marca = None ano = None ano = None gol = Veiculo() gol = Veiculo() gol.marca = "Volkswagen" gol.marca = "Volkswagen" gol.ano = 2008 gol.ano = 2008 VIII JOLIM - Maringá, 2012 46
  • 47. Definindo Atributos class Veiculo(object): class Veiculo(object): marca = None marca = None ano = None ano = None gol = Veiculo() gol = Veiculo() gol.marca = "Volkswagen" gol.marca = "Volkswagen" gol.ano = 2008 gol.ano = 2008 gol.bazinga = True gol.bazinga = True VIII JOLIM - Maringá, 2012 47
  • 48. Atributos • Nem sempre queremos que os atributos sejam acessados diretamente • Para isso podemos criar métodos Getters e Setters Pessoa.getNome() Pessoa.getNome() Pessoa.setNome(nome) Pessoa.setNome(nome) • Ainda podemos tornar os atributos privados Pessoa.__nome = “nome” Pessoa.__nome = “nome” Pessoa.__idade = idade Pessoa.__idade = idade VIII JOLIM - Maringá, 2012 48
  • 49. Definindo métodos • Um método é um atributo com comportamento; • Para não fundir conceitos, vamos apenas trabalhar com métodos da forma tradicional, ou quase isso; • Para definir métodos e funções em Python utilizamos a palavra reservada def; • Def __init__(self,atr1,atr2) • Def getNome(self): return self.__nome VIII JOLIM - Maringá, 2012 49
  • 50. Herança de classes class Atleta(Pessoa): class Atleta(Pessoa): peso = None peso = None aposentado = None aposentado = None def __init__(self, nome, idade, peso): def __init__(self, nome, idade, peso): super(Atleta, self).__init__(nome, idade) super(Atleta, self).__init__(nome, idade) self.peso = peso self.peso = peso self.aposentado = False self.aposentado = False def aquecer(self): def aquecer(self): print("Atleta aquecido!") print("Atleta aquecido!") def aposentar(self): def aposentar(self): self.aposentado = True self.aposentado = True VIII JOLIM - Maringá, 2012 50
  • 51. Herança de classes class Corredor(Atleta): class Corredor(Atleta): def correr(self): def correr(self): print("Corredor correndo!") print("Corredor correndo!") class Nadador(Atleta): class Nadador(Atleta): def nadar(self): def nadar(self): print("Nadador nadando!") print("Nadador nadando!") class Ciclista(Atleta): class Ciclista(Atleta): def pedalar(self): def pedalar(self): print("Ciclista pedalando!") print("Ciclista pedalando!") VIII JOLIM - Maringá, 2012 51
  • 52. Herança múltipla • Há uma peculiaridade no diagrama de classes: a classe TriAtleta herda de três outras classes; • Muitas pessoas podem pensar: mas isso é impossível! • Em Python, assim como em C++, isso é possível sim! Logo, a classe TriAtleta fica bem simples: class TriAtleta(Ciclista, Nadador, Corredor): class TriAtleta(Ciclista, Nadador, Corredor): pass pass VIII JOLIM - Maringá, 2012 52
  • 53. Exemplo 8 • Criar uma classe Estudante, com atributo curso. Esta classe deve herdar da classe Pessoa os atributos nome e idade. • Uma pessoa tem um carro. Criar uma classe Carro e fazer que uma pessoa tenha um atributo do tipo Carro. VIII JOLIM - Maringá, 2012 53
  • 54. Exceções • Em Python, assim como em C++ e Java, o conceito de Exceção está ligado à orientação a objetos. • Uma exceção é um objeto, possui estado e comportamento. • O tratamento de exceções pode ser utilizado para aumentar o nível de abstração do código. • É possível usar exceções também para encapsular dados específicos sobre o erro levantado. • Vamos aprender como criar, tratar e levantar uma exceção em Python! VIII JOLIM - Maringá, 2012 54
  • 55. Exceções • Primeiramente, vamos criar nossas exceções. • Uma exceção personalizada é modelada por uma classe qualquer, que herda da classe BaseException; • Nas versões anteriores de Python qualquer classe podia modelar uma exceção. Isso gerava a má prática de lançar exceções modeladas pela classe string; VIII JOLIM - Maringá, 2012 55
  • 56. Exceções def alterarPeso(self, peso): def alterarPeso(self, peso): if peso > 0 and peso < 400: if peso > 0 and peso < 400: self.__peso = peso self.__peso = peso else: else: raise Exception("%f nao eh um peso valido!", %(peso)) raise Exception("%f nao eh um peso valido!", %(peso)) VIII JOLIM - Maringá, 2012 56
  • 57. Exceções • Python levanta diversas exceções internamente: ValueError, IOError, TypeError; • Vamos tratar exceções! • Para tratar exceções em Python utilizamos try… except… else… finally; VIII JOLIM - Maringá, 2012 57
  • 58. Exceções def incrementar(numero): def incrementar(numero): try: try: return numero+1 return numero+1 except: except: raise Exception(“É necessário um número para somar”) raise Exception(“É necessário um número para somar”) def incrementar(numero): def incrementar(numero): try: try: return numero+1 return numero+1 except TypeError: except TypeError: return int(numero)+1 return int(numero)+1 VIII JOLIM - Maringá, 2012 58
  • 59. Referências • www.python.org • www.pythonbrasil.org • www.djangobrasil.org • www.plone.org • www.tchezope.org VIII JOLIM - Maringá, 2012 59