SlideShare a Scribd company logo
1 of 69
Download to read offline
Introdução a linguagem Python 2.7
      Universidade Federal de Lavras
  Departamento de Ciência da Computação
       Ben Hur Bahia do Nascimento
Sobre os slides
• Esse slide foi feito por Ben Hur Bahia do Nascimento
  {bh [ at ] comp.ufla.br}, baseado nas obras citadas como
  bibliografia no fim do arquivo e pode ser distribuído
  gratuitamente, sob a licença:
• Licença Creative Commons Atribuição-Uso Não-
  Comercial-compartilhamento pela mesma Licença
  2.5 Brasil. Para ver uma cópia desta licença, visite
  http://creativecommons.org/licenses/by-nc-
  sa/2.5/br/ ou envie uma carta para Creative
  Commons, 171 Second Street, Suite 300, San
  Francisco, California 94105, USA.
Python: Criador e Origem
• A linguagem foi criada por Guido von
  Russom.
• O nome Python teve a sua origem no
  grupo humorístico britânico Monty
  Python criador do programa Monty
  Python's Flying Circus, embora
  muitas pessoas façam associação
  com o réptil do mesmo nome (em
  português, píton ou pitão).
O que é Python?
●   É uma linguagem de programação de altíssimo nível
    ●   Suporte nativo a estruturas de dados de alto nível
●   Interpretada (compilável também)
●   Imperativa
●   Multiparadigma
    ●   Orientada a objetos, Procedural e Funcional
●   Possui tipagem dinâmica e forte
●   Possui Garbage Colector (Gerenciador de Memória)
●   A linguagem é Case Sensitive
●   Interage com outras linguagens
    ●   IronPython (.NET), Jython(Java), C e C++
Por que usar Python?
•   Sintaxe limpa, concisa e de fácil leitura
•   Mais com menos código
•   Fácil aprendizado
•   Forte suporte da comunidade
•   Documentação extensa
•   Biblioteca padrão enorme
Quem usa Python?
•   Google
•   NASA
•   Nokia
•   Gimp/Inkscape/Blender
•   Governo (brasil.gov.br)
•   Portal G1(g1.globo.br)
•   É utilizada em vários processos no Linux.

            http://www.python.org.br/wiki/EmpresasPython
                 http://www.python.org/about/success/
Interpretação e Compilação
Modo interativo
●   É chamar o interpretador e executar código em tempo real.
●   Salve o arquivo com extensão *.py, entre no terminal e vá na pasta
    do arquivo e digite “python <nome do arquivo>.py”
dir() e help()
• Os comandos mais úteis, pois facilitam a descoberta
  das funcionalidades das funções e métodos para
  objetos.

• dir(objeto)
   – Retorna uma lista de atributos e métodos do objeto

• print help(objeto)
   – Mostra a documentação do objeto
Tipos-classe
• Tipos e classes, em Python, são unificados.
• Não há declaração de tipo, mas uma inferência de
  tipo.



• type() retorna o tipo da variável.
• Os tipos possuem métodos próprios.
• As variáveis podem mudar de tipo em tempo de
  execução.
• Existem: inteiro, inteiro longo, ponto flutuante, string,
  booleano, octal e hexadecimal.
Tipos-classe: Números
   ●    variável = algum valor
       >>> really_long = 99999999999999999999 #20 9s
       >>> type(really_long)
       <type 'long'>


  >>> a = 1                    >>> a = True
                               >>> b = False   >>> a = 'texto'
  >>> type(a)                                  >>> b = "texto"
  <type 'int'>                 >>> type(a)
                               <type 'bool'>   >>> type(a)
                               >>> type(b)     <type 'str'>
                               <type 'bool'>   >>> type(b)
                                               <type 'str'>
Tentem usar dir(a) e help(a)
Conversões básicas de tipo
 • int(), float(), str(), bool(), long()
  >>> int(2.71)      >>> float(5)   >>> str(255)   >>> str(True)
  2                  5.0            '255'          'True'

  >>> bool(1)     >>> bool(0)   >>> bool(43)   >>> bool('')
  True            False         True           False

     >>> bool(„sou verdadadeiro')          >>> long(2.56)
     True                                  2L

>>> float(233333333333337777777777778888888888999999999999933334421L)
2.3333333333333778e+56


                                Testem no interpretador!
Tipos-classe: Operadores Aritméticos
•   Padrões: + - * /
•   Divisão inteira: a / b -> sendo a E b inteiros.
•   Divisão inteira: a // b -> sendo a OU b float
•   Divisão float: a / b -> sendo a OU b float
•   Exponenciação: base ** exp
•   Módulo: a % b -> resto da divisão de a por b
Tipos-classe: Strings
Strings: strings padrões são imutáveis:
banda1 = „Led Zeppelin‟     #String simples
banda2 = “ „Rachmaninov‟ ” #String simples
linhas=“””Essa e uma string
em multiplas linhas.”””
>>> print linhas
Essa e uma string
em multiplas linhas
Tipos-classe: Strings -> Operações
• +(concatenação) e *(multiplicação)
>>> banda = „Arctic‟
>>> banda + ‟ Monkeys!‟
„Arctic Monkeys!‟
>>> banda * 3
„ArcticArcticArctic‟
Tipos-classe: Strings -> Métodos
• Utilizando os métodos replace(),strip()
  faça:
• Troque onde houver cachorro por macaco e
  vice-versa:
animais=„Os macacos vivem coçando as costas. Se fosse
um cachorro, morderia.‟
• Traduza essa mensagem:
msg=‟02 42tr0n4ut42 ch3g4r4m.‟
Tipos-classe: Strings
Tipos-classe: Strings
• Operador “%” é usado para fazer interpolação de
  strings.
• A interpolação é mais eficiente no uso de memória
  do que a concatenação convencional.

>>> qtdDinheiros = 23
>>> print „Eu tenho %d dinheiros!‟ % qtdDinheiros
Eu tenho 23 dinheiros!
>>> print „Eu tenho %x hexas!‟ % qtdDinheiros
Eu tenho 17 hexas!
>>> print „Eu tenho %o octais!‟ % qtdDinheiros
Eu tenho 27 octais!
Tipos-classe: Strings mutáveis
• Strings da classe UserString são mutáveis:

from UserString import MutableString
>>> a = MutableString( „Pascal =)‟ )
>>> print a
Pascal =)
>>> a[-1] = „(‟
>>> print a
Pascal =(
Tipos-classe: Strings
•   Símbolos usados na interpolação:
•   %s: string.
•   %d: inteiro.
•   %o: octal.
•   %x: hexadecimal.
•   %f: real.
•   %e: real exponencial.
•   %%: sinal de percentagem.
Tipos-classe: Listas
Lista: são coleções heterogêneas de objetos, que
podem ser de qualquer tipo, inclusive outras listas.
Sintaxe: <variável> = []

L = [ „Douglas Adams‟, ”‟oi‟”, [3.14,2.71],1]

São mutáveis, podendo ser alteradas a qualquer
momento. Listas podem ser fatiadas da mesma
forma que as strings, mas como as listas são
mutáveis, é possível fazer atribuições a itens da lista.
Tipos-classe: Listas -> Métodos
Alguns métodos/operações em listas:

>>> lista = [“Anem”]       >>> lista.sort()
>>> lista.append(1.9)      >>> lista
>>> lista                  [0.7, 1.9, 58]
[“Anem”, 1.9]              >>> lista.reverse() >>>
>>> lista.remove(“Anem”)   lista
>>> lista                  [58, 1.9, 0.7]
[1.9]                      >>> lista[1:]
>>> lista.append(0.7)      [1.9, 0.7]
>>> lista.append(58)
>>> lista
[1.9, 0.7, 58]
Tipos-classe: Listas -> Métodos
Alguns métodos/operações em listas:
>>> lista.pop() #Implementa filas e pilhas
0.7
>>> lista
[58, 1.9]
>>> lista.pop(0) #índice
58
>>> lista = [1,2,3]
>>> lista.insert(1,„intruso‟) # posição específica
>>> lista
[1, ‟intruso‟, 2, 3]
Tipos-classe: Tuplas
Semelhantes as listas, porém são imutáveis: não se pode
acrescentar, apagar ou fazer atribuições aos itens.
Utilidade: aloca memória de forma contínua, melhorando
desempenho. Indicado para utilização matemática.
Sintaxe: <variável> = ()

tuplita = (142857,‟Chico Buarque‟,u”Richard Dawkins”)
tupra = 'Michael Jackson', "Howlin' Wolf", 'John
Coltrane'

●   A função list() transforma uma tupla em lista
●   A função tuple() transforma uma lista em tupla
Tipos-classe: Tuplas -> Métodos
●algunsmétodos:
●count() : conta quantos itens existe do valor
passado como paramêtro(serve para lista também):
a = 1,1,3,3,4
a.count(1)
>> 2
●index() : retorna a primeira posição que o valor
passado como paramentro aparece.
a.index(3)
>>2
Tipos-classe: Dicionários
• Um dicionário é uma lista de associações
  compostas por uma chave única e estruturas
  correspondentes. Dicionários são mutáveis, tais
  como as listas.
• A chave precisa ser de um tipo imutável,
  geralmente são usadas strings, mas também
  podem ser tuplas ou tipos numéricos. Já os itens
  dos dicionários podem ser tanto mutáveis quanto
  imutáveis. O dicionário do Python não fornece
  garantia de que as chaves estarão ordenadas.
Tipos-classe: Dicionários
Tipos-classe: Dicionários -> Métodos
• Exemplo de dicionário:
>>> dic = {„pi‟: 3.1415, 42: “Douglas Adams”}
>>> dic[„pi‟]
3.1415
>>> dic[42]
„Douglas Adams‟
>>> dic[„python‟] = „massa!‟
>>> dic[„python‟]
„massa‟
>>> # se a chave não existir, retorna booleano False
>>> dic.pop(„pi‟,False)
3.1415
>>> dic.pop(„pi‟,False)
False
>>> for chave,valor in dic.iteritems():
...     print chave,‟=>‟,valor
python => massa!
42 => Douglas Adams
Tipos-classe: Dicionários -> Métodos
>>> dic.get(42,‟Caso não existir retorne essa string‟)
„Douglas Adams‟
>>> dic[42]
„Douglas Adams‟
>>> dic.items()
[(„python‟,‟massa‟), (42, „Douglas Adams‟)]
>>> dic.keys()
[„python‟,42]
>>> dic.values()
[„massa‟, „Douglas Adams‟]
>>> dic.has_key(„python‟)
True
>>> dic.clear()
>>> dic
{}
Tipos-classe: Booleanos
• Em Python existe as palavras reservadas True
  e False para tipo booleano.
• Porém, muitas coisas em Python são
  considerados booleanos
• bool() : verifica se a variável é verdadeira ou
  falsa:
• Qualquer valor diferente de zeros e vazios é
  considerado verdadeiro.
Tipos-classe: Booleanos
>>> bool(0)        >>> bool([])
False              False
>>> bool(0.0)      >>> bool(())
False              False
>>> bool(„‟)       >>> bool({})
False              False
>>> bool(“”)
                Todo o resto é considerado
False
                verdadeiro, True
Tipos-classe: Booleanos ->
        Operadores Booleanos
• and,or,not,is e in   >>> 1 or False
>>> True and True
                       1
True
                       >>> 0 or False
>>> True or False
True                   False
>>> 4 in [1,4]         >>> not True
True                   False
>>> a=1; b=a           >>> not 1
>>> a is b             False
True
Tipos-classe: Booleanos ->
          Operadores Relacionais
• >, <, >=, <=, ==, !=, <>         >>> 2>3
• != e <> significam “diferente”   False
• É possível usar vários           >>> 3>=3
   operadores na relação:          True
>>> 1<2<=3<4<5>4>3>=2!=1           >>> 4<=3
True                               False
                                   >>> x=3
• all(): retorna True se todos
   itens passados forem            >>> 2<x<4
   verdadeiros.                    True
• any(): retorna True se algum
                                   >>> all(1,5.5)
   item for verdadeiro.            True
                                   >>> any(0,1)
                                   True
Sintaxe: Blocos
●   O uso de barra invertida () e vírgula (,) permitem
    continuar um código em outras linhas.
●   Para comentários: #. E a linha será ignorada, com exceção
    de comentários funcionais.
●   Dois pontos (:) delimitam blocos.
●   Em Python, os blocos de código são delimitados pelo uso
    de endentação.
Sintaxe: Codificação
•   Para alterar a codificação do arquivo fonte do
    programa acrescenta-se um comentário funcional no
    inicio do código:


•   No inicio do arquivo, no qual <encoding> é a
    codificação do arquivo (geralmente latin1 ou utf-8).
Funções
• No Python, as funções:
• Podem retornar ou não objetos.
• Aceitam Doc Strings.
• Aceitam parâmetros opcionais (com defaults). Se não
  for passado o parâmetro será igual ao default definido
  na função.
• Aceitam que os parâmetros sejam passados com
  nome. Neste caso, a ordem em que os parâmetros
  foram passados não importa.
• Tem namespace próprio (escopo local), e por isso
  podem ofuscar definições de escopo global.
Funções
• Sintaxe:
def <nome da função> (<paramêtros>):
Ex.:

#escrevam isso em um arquivo!

                               Saída:
                               1024
                               6.543216468462249
                               Funcao de exponenciacao.
Funções
• permite passagem de parâmetro por nome:



                                      Saída:
                                      #00ff00
                                      #00ff00
                                      #00ff00
Escopo das variáveis
Escopo das variáveis
• Para declarar, dentro de algum escopo, uma
  variavel global, usa-se o comando global:


                        Saída:
                        oi
                        none
                        oie
Controle de fluxo: if, elif e else
●   Se o bloco de código for composto de apenas uma
    linha, ele pode ser escrito após os dois pontos.


                                     Saída:
                                     >:D
                                     mim feliz
Laços de Repetição: for
●   for: É a estrutura de repetição mais usada no
    Python. A instrução aceita não só sequências
    estáticas, mas também sequências geradas por
    iteradores.
sintaxe: for   <variavel> in <estrutura iterável>:

●   Iteradores são estruturas que permitem iterações,
    ou seja, acesso aos itens de uma coleção de
    elementos, de forma sequencial
●   Break, continue e else permitidos.
Laços de Repetição: for




Saída:
>>1 => Sócrates
>>2 => Aristóteles
>>3 => Platão
>>4 => Descartes
>>5 => Nietzsche
Laços de repetição: while
●   While: O laço while é adequado quando não há
    como determinar quantas iterações vão ocorrer e
    não há uma sequência a seguir.
Entrada e saida de dados
• O comando print escreve na saída padrão do
  Python.
• A entrada padrão se dá pela função
  raw_input(), que lê a entrada pelo teclado e
  retorna a string.
• O uso combinado de float() e int() permite
  a leitura de valores inteiros e pontos flutuantes.
Manipulação de arquivos
• Função Open(„endereco‟,‟<modo>‟)
• Sendo os modos:
  – r: somente leitura (padrão)
  – w: escrita
  – a: escrita adição
  – b: binario
• operador + permite leitura e gravação.
Manipulação de arquivos: métodos
• <objeto-arquivo>.readlines(): retorna uma lista com cada
  linha do arquivo.
• <objeto-arquivo>.mode(): retorna o modo atual do arquivo
• <objeto-arquivo>.write(): escreve no arquivo
• <objeto-arquivo>.close(): fecha o objeto
Módulo: math
import math
>>> math.trunc(5.6) #arredonda valor para baixo.
5
>>> math.log(math.e): #retorna o logaritmo do numero
1.0
>>> math.log(1024,2) # log de 1024 na base 2
10.0
>>> math.factorial(5) #retorna o fatorial do numero dado.
120
>>> math.fabs(-5) #módulo de algum valor
5.0
>>> math.pi: #constante Pi
3.141592653689793
>>> math.e: #número de Euler
2.718281828459045
Orientação a Objetos
• Objetos são abstrações computacionais que
  representam entidades, com suas qualidades
  (atributos) e ações (métodos) que estas
  podem realizar.
• A classe é a estrutura básica do paradigma de
  orientação a objetos, que representa o tipo do
  objeto, um modelo a partir do qual os objetos
  serão criados.
Orientação a Objetos: Classe
Orientação a Objetos:
• Os atributos são estruturas de dados que
  armazenam informações sobre o objeto e os
  métodos são funções associadas ao objeto,
  que descrevem como o objeto se comporta.
• Sintaxe:
Orientação a Objetos:
• O interpretador Python possui um recurso
  chamado coletor de lixo (Garbage Collector) que
  limpa da memória objetos sem referências.

• método __init__() inicializa os valores do
  parâmetros
• método __repr__() é uma representação do
  objeto como string
Orientação a Objetos: Definindo uma classe
Orientação a Objetos: Definindo uma classe
Privatizando variáveis de instância.
Orientação a Objetos: Definindo uma classe
Dentro da classe


                       Saída:



Fora da classe
Código-fonte = módulo?




Ao fazermos a verificação do namespace __name__ como
sendo o __main__, verificamos se estamos rodando o arquivo
fonte ou se estamos apenas importando-o
Código-fonte = módulo?

              Rodando o arquivo


              Do módulo pessoa.py,
              importe Pessoa.
              Nesse caso, não rodará
              o “main” do arquivo
              pessoa.py, pois estamos no
              namespace do interpretador

            Todos arquivos *.py são
            tanto código-fonte
            quanto um módulo.
Orientação a Objetos: Herança
Dentro da classe
Orientação a Objetos: Serialização
• É basicamente você salvar um objeto em um
  arquivo.
• Como tudo em Python é objeto, você pode salvar
  qualquer coisa com serialização.
• Pode por exemplo salvar uma lista, com o que tiver
  nela. Depois é só recarregar esse objeto lista em
  uma lista nova e continuar usando-a.
• Existem frameworks em Python de terceiros que
  oferecem formas de persistência com recursos
  mais avançados.
Orientação a Objetos: Serialização
• Importe o modulo pickle
para salvar o objeto, sintaxe:
pickle.dump(<objeto>,file(„<nomeArquivo>‟,‟w‟))



para reabrir o objeto:
a = pickle.load(file(„<nomeArquivo>‟))
Funções Lambda
        (Programação Funcional)
• Programação funcional é um paradigma que
  trata a computação como uma avaliação de
  funções matemáticas.
• No Python, lambda é uma função anônima
  composta apenas por expressões.
• As funções lambda podem ter apenas uma
  linha, e podem ser atribuídas a uma variável.
Funções Lambda
           (Programação Funcional)
sintaxe:
<funcao> = lambda <lista de variáveis>: <expressões >
Tratamento de Exceções
• Quando ocorre uma falha no programa (como
  uma divisão por zero, por exemplo) em tempo
  de execução, uma exceção é gerada. Se a
  exceção não for tratada, ela será propagada
  através das chamadas de função até o módulo
  principal do programa, interrompendo a
  execução
Tratamento de Exceções
print 1/0

>>>Traceback (most recent call last):
 File "<input>", line 1, in ?
ZeroDivisionError: integer division or modulo by
zero
Tratamento de Exceções
try:
  print 1/0
except ZeroDivisionError:
  print 'Erro ao tentar dividir por zero.‘

>>>Erro ao tentar dividir por zero.
Biblioteca padrão
• É comum dizer que o Python vem com “baterias
  inclusas”, em referência a vasta biblioteca de módulos
  e pacotes que é distribuída com o interpretador.
• Alguns módulos importantes da biblioteca padrão:
• Matemática: math, cmath, decimal e random.
• Sistema: os, glob, shutils e subprocess.
• Threads: threading.
• Persistência: pickle e cPickle.
• XML: xml.dom, xml.sax e elementTree (a partir da
  versão 2.5).
• Configuração: ConfigParser e optparse.
• Tempo: time e datetime.
• Outros: sys, logging, traceback, types e timeit.
Bibliografia
• Python para Desenvolvedores,Luiz Eduardo Borges,
  2ª edição, 360 pag., Edição do Autor, Rio de
  Janeiro, 2010,
  http://ark4n.wordpress.com/python/
• How to Think like a Computer Scientist: Learning with
  Python, Allen Downey, Jeffrey Elkner & Chris
  Meyers, 2nd Edition, 280 pag., Editado por
  Shannon Turlington & Lisa Cutler, Wellesley,
  MA, 2008
“The Zen of Python” por Tim Peters

• digite no Python:
>> import this
ps: in english.
Introdução a linguagem Python 2.7

More Related Content

What's hot

Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
Luciano Ramalho
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
Luciano Ramalho
 
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
 

What's hot (20)

Introdução a Python
Introdução a PythonIntrodução a Python
Introdução a Python
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Java 06 Strings Arrays
Java 06 Strings ArraysJava 06 Strings Arrays
Java 06 Strings Arrays
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: Introdução
 
Herança e polimorfismo em Java
Herança e polimorfismo em Java Herança e polimorfismo em Java
Herança e polimorfismo em Java
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
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
 
Introdução a Python - Python Poli
Introdução a Python  - Python PoliIntrodução a Python  - Python Poli
Introdução a Python - Python Poli
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 

Viewers also liked

Boletin A 02 2009
Boletin A 02 2009Boletin A 02 2009
Boletin A 02 2009
lasimon
 
Marketing_Automation_Why_Use_Implementation_Partner
Marketing_Automation_Why_Use_Implementation_PartnerMarketing_Automation_Why_Use_Implementation_Partner
Marketing_Automation_Why_Use_Implementation_Partner
Katie Spence
 
Entrevista Propmark_2909
Entrevista Propmark_2909Entrevista Propmark_2909
Entrevista Propmark_2909
karenfr
 
Depois das reformas
Depois das reformasDepois das reformas
Depois das reformas
MoysesBohana
 
Relatório do desafio problema 1
Relatório do desafio problema 1Relatório do desafio problema 1
Relatório do desafio problema 1
Hugo Carvalho
 

Viewers also liked (20)

Tutorial Paso A Pasito
Tutorial Paso A PasitoTutorial Paso A Pasito
Tutorial Paso A Pasito
 
Nuevo pacto social para la suficiencia alimantaria
Nuevo pacto social para la suficiencia alimantariaNuevo pacto social para la suficiencia alimantaria
Nuevo pacto social para la suficiencia alimantaria
 
Pronto su 2
Pronto su 2Pronto su 2
Pronto su 2
 
Dia internacional da mulher
Dia internacional da mulherDia internacional da mulher
Dia internacional da mulher
 
Boletin A 02 2009
Boletin A 02 2009Boletin A 02 2009
Boletin A 02 2009
 
Reseña el ángel de la historia
Reseña  el ángel de la historiaReseña  el ángel de la historia
Reseña el ángel de la historia
 
Filosofia
FilosofiaFilosofia
Filosofia
 
Marketing_Automation_Why_Use_Implementation_Partner
Marketing_Automation_Why_Use_Implementation_PartnerMarketing_Automation_Why_Use_Implementation_Partner
Marketing_Automation_Why_Use_Implementation_Partner
 
História
HistóriaHistória
História
 
Calandria presentacion general
Calandria presentacion generalCalandria presentacion general
Calandria presentacion general
 
Sobre información
Sobre informaciónSobre información
Sobre información
 
PresentacióN1
PresentacióN1PresentacióN1
PresentacióN1
 
Copias de controladores
Copias de controladoresCopias de controladores
Copias de controladores
 
Entrevista Propmark_2909
Entrevista Propmark_2909Entrevista Propmark_2909
Entrevista Propmark_2909
 
O cyberbullying
O cyberbullyingO cyberbullying
O cyberbullying
 
Depois das reformas
Depois das reformasDepois das reformas
Depois das reformas
 
proceso de investigacion
proceso de investigacionproceso de investigacion
proceso de investigacion
 
Relatório do desafio problema 1
Relatório do desafio problema 1Relatório do desafio problema 1
Relatório do desafio problema 1
 
24136
2413624136
24136
 
Reglamento investigacion UNE La Cantuta
Reglamento investigacion UNE La CantutaReglamento investigacion UNE La Cantuta
Reglamento investigacion UNE La Cantuta
 

Similar to Introdução a linguagem Python 2.7

Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
Christian Perone
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
Fabio Spanhol
 
005 programando em python - tuplas e strings
005   programando em python - tuplas e strings005   programando em python - tuplas e strings
005 programando em python - tuplas e strings
Leandro Barbosa
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Adriano Teixeira de Souza
 

Similar to Introdução a linguagem Python 2.7 (20)

Aula3PythonBasico.ppt
Aula3PythonBasico.pptAula3PythonBasico.ppt
Aula3PythonBasico.ppt
 
Aula3PythonBasico (1).ppt
Aula3PythonBasico (1).pptAula3PythonBasico (1).ppt
Aula3PythonBasico (1).ppt
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Python
PythonPython
Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxe
 
Haskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classesHaskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classes
 
Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?Python 3.x - Ihh.. E agora ? Como faço ?
Python 3.x - Ihh.. E agora ? Como faço ?
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Slide_Python.pdf
Slide_Python.pdfSlide_Python.pdf
Slide_Python.pdf
 
minicurso-python-getmeeting.pdf
minicurso-python-getmeeting.pdfminicurso-python-getmeeting.pdf
minicurso-python-getmeeting.pdf
 
Aula python
Aula pythonAula python
Aula python
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Python 3 e o futuro da linguagem
Python 3 e o futuro da linguagemPython 3 e o futuro da linguagem
Python 3 e o futuro da linguagem
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
005 programando em python - tuplas e strings
005   programando em python - tuplas e strings005   programando em python - tuplas e strings
005 programando em python - tuplas e strings
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 

Introdução a linguagem Python 2.7

  • 1. Introdução a linguagem Python 2.7 Universidade Federal de Lavras Departamento de Ciência da Computação Ben Hur Bahia do Nascimento
  • 2. Sobre os slides • Esse slide foi feito por Ben Hur Bahia do Nascimento {bh [ at ] comp.ufla.br}, baseado nas obras citadas como bibliografia no fim do arquivo e pode ser distribuído gratuitamente, sob a licença: • Licença Creative Commons Atribuição-Uso Não- Comercial-compartilhamento pela mesma Licença 2.5 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc- sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.
  • 3. Python: Criador e Origem • A linguagem foi criada por Guido von Russom. • O nome Python teve a sua origem no grupo humorístico britânico Monty Python criador do programa Monty Python's Flying Circus, embora muitas pessoas façam associação com o réptil do mesmo nome (em português, píton ou pitão).
  • 4. O que é Python? ● É uma linguagem de programação de altíssimo nível ● Suporte nativo a estruturas de dados de alto nível ● Interpretada (compilável também) ● Imperativa ● Multiparadigma ● Orientada a objetos, Procedural e Funcional ● Possui tipagem dinâmica e forte ● Possui Garbage Colector (Gerenciador de Memória) ● A linguagem é Case Sensitive ● Interage com outras linguagens ● IronPython (.NET), Jython(Java), C e C++
  • 5. Por que usar Python? • Sintaxe limpa, concisa e de fácil leitura • Mais com menos código • Fácil aprendizado • Forte suporte da comunidade • Documentação extensa • Biblioteca padrão enorme
  • 6. Quem usa Python? • Google • NASA • Nokia • Gimp/Inkscape/Blender • Governo (brasil.gov.br) • Portal G1(g1.globo.br) • É utilizada em vários processos no Linux. http://www.python.org.br/wiki/EmpresasPython http://www.python.org/about/success/
  • 8. Modo interativo ● É chamar o interpretador e executar código em tempo real. ● Salve o arquivo com extensão *.py, entre no terminal e vá na pasta do arquivo e digite “python <nome do arquivo>.py”
  • 9. dir() e help() • Os comandos mais úteis, pois facilitam a descoberta das funcionalidades das funções e métodos para objetos. • dir(objeto) – Retorna uma lista de atributos e métodos do objeto • print help(objeto) – Mostra a documentação do objeto
  • 10. Tipos-classe • Tipos e classes, em Python, são unificados. • Não há declaração de tipo, mas uma inferência de tipo. • type() retorna o tipo da variável. • Os tipos possuem métodos próprios. • As variáveis podem mudar de tipo em tempo de execução. • Existem: inteiro, inteiro longo, ponto flutuante, string, booleano, octal e hexadecimal.
  • 11. Tipos-classe: Números ● variável = algum valor >>> really_long = 99999999999999999999 #20 9s >>> type(really_long) <type 'long'> >>> a = 1 >>> a = True >>> b = False >>> a = 'texto' >>> type(a) >>> b = "texto" <type 'int'> >>> type(a) <type 'bool'> >>> type(a) >>> type(b) <type 'str'> <type 'bool'> >>> type(b) <type 'str'> Tentem usar dir(a) e help(a)
  • 12. Conversões básicas de tipo • int(), float(), str(), bool(), long() >>> int(2.71) >>> float(5) >>> str(255) >>> str(True) 2 5.0 '255' 'True' >>> bool(1) >>> bool(0) >>> bool(43) >>> bool('') True False True False >>> bool(„sou verdadadeiro') >>> long(2.56) True 2L >>> float(233333333333337777777777778888888888999999999999933334421L) 2.3333333333333778e+56 Testem no interpretador!
  • 13. Tipos-classe: Operadores Aritméticos • Padrões: + - * / • Divisão inteira: a / b -> sendo a E b inteiros. • Divisão inteira: a // b -> sendo a OU b float • Divisão float: a / b -> sendo a OU b float • Exponenciação: base ** exp • Módulo: a % b -> resto da divisão de a por b
  • 14. Tipos-classe: Strings Strings: strings padrões são imutáveis: banda1 = „Led Zeppelin‟ #String simples banda2 = “ „Rachmaninov‟ ” #String simples linhas=“””Essa e uma string em multiplas linhas.””” >>> print linhas Essa e uma string em multiplas linhas
  • 15. Tipos-classe: Strings -> Operações • +(concatenação) e *(multiplicação) >>> banda = „Arctic‟ >>> banda + ‟ Monkeys!‟ „Arctic Monkeys!‟ >>> banda * 3 „ArcticArcticArctic‟
  • 16. Tipos-classe: Strings -> Métodos • Utilizando os métodos replace(),strip() faça: • Troque onde houver cachorro por macaco e vice-versa: animais=„Os macacos vivem coçando as costas. Se fosse um cachorro, morderia.‟ • Traduza essa mensagem: msg=‟02 42tr0n4ut42 ch3g4r4m.‟
  • 18. Tipos-classe: Strings • Operador “%” é usado para fazer interpolação de strings. • A interpolação é mais eficiente no uso de memória do que a concatenação convencional. >>> qtdDinheiros = 23 >>> print „Eu tenho %d dinheiros!‟ % qtdDinheiros Eu tenho 23 dinheiros! >>> print „Eu tenho %x hexas!‟ % qtdDinheiros Eu tenho 17 hexas! >>> print „Eu tenho %o octais!‟ % qtdDinheiros Eu tenho 27 octais!
  • 19. Tipos-classe: Strings mutáveis • Strings da classe UserString são mutáveis: from UserString import MutableString >>> a = MutableString( „Pascal =)‟ ) >>> print a Pascal =) >>> a[-1] = „(‟ >>> print a Pascal =(
  • 20. Tipos-classe: Strings • Símbolos usados na interpolação: • %s: string. • %d: inteiro. • %o: octal. • %x: hexadecimal. • %f: real. • %e: real exponencial. • %%: sinal de percentagem.
  • 21. Tipos-classe: Listas Lista: são coleções heterogêneas de objetos, que podem ser de qualquer tipo, inclusive outras listas. Sintaxe: <variável> = [] L = [ „Douglas Adams‟, ”‟oi‟”, [3.14,2.71],1] São mutáveis, podendo ser alteradas a qualquer momento. Listas podem ser fatiadas da mesma forma que as strings, mas como as listas são mutáveis, é possível fazer atribuições a itens da lista.
  • 22. Tipos-classe: Listas -> Métodos Alguns métodos/operações em listas: >>> lista = [“Anem”] >>> lista.sort() >>> lista.append(1.9) >>> lista >>> lista [0.7, 1.9, 58] [“Anem”, 1.9] >>> lista.reverse() >>> >>> lista.remove(“Anem”) lista >>> lista [58, 1.9, 0.7] [1.9] >>> lista[1:] >>> lista.append(0.7) [1.9, 0.7] >>> lista.append(58) >>> lista [1.9, 0.7, 58]
  • 23. Tipos-classe: Listas -> Métodos Alguns métodos/operações em listas: >>> lista.pop() #Implementa filas e pilhas 0.7 >>> lista [58, 1.9] >>> lista.pop(0) #índice 58 >>> lista = [1,2,3] >>> lista.insert(1,„intruso‟) # posição específica >>> lista [1, ‟intruso‟, 2, 3]
  • 24. Tipos-classe: Tuplas Semelhantes as listas, porém são imutáveis: não se pode acrescentar, apagar ou fazer atribuições aos itens. Utilidade: aloca memória de forma contínua, melhorando desempenho. Indicado para utilização matemática. Sintaxe: <variável> = () tuplita = (142857,‟Chico Buarque‟,u”Richard Dawkins”) tupra = 'Michael Jackson', "Howlin' Wolf", 'John Coltrane' ● A função list() transforma uma tupla em lista ● A função tuple() transforma uma lista em tupla
  • 25. Tipos-classe: Tuplas -> Métodos ●algunsmétodos: ●count() : conta quantos itens existe do valor passado como paramêtro(serve para lista também): a = 1,1,3,3,4 a.count(1) >> 2 ●index() : retorna a primeira posição que o valor passado como paramentro aparece. a.index(3) >>2
  • 26. Tipos-classe: Dicionários • Um dicionário é uma lista de associações compostas por uma chave única e estruturas correspondentes. Dicionários são mutáveis, tais como as listas. • A chave precisa ser de um tipo imutável, geralmente são usadas strings, mas também podem ser tuplas ou tipos numéricos. Já os itens dos dicionários podem ser tanto mutáveis quanto imutáveis. O dicionário do Python não fornece garantia de que as chaves estarão ordenadas.
  • 28. Tipos-classe: Dicionários -> Métodos • Exemplo de dicionário: >>> dic = {„pi‟: 3.1415, 42: “Douglas Adams”} >>> dic[„pi‟] 3.1415 >>> dic[42] „Douglas Adams‟ >>> dic[„python‟] = „massa!‟ >>> dic[„python‟] „massa‟ >>> # se a chave não existir, retorna booleano False >>> dic.pop(„pi‟,False) 3.1415 >>> dic.pop(„pi‟,False) False >>> for chave,valor in dic.iteritems(): ... print chave,‟=>‟,valor python => massa! 42 => Douglas Adams
  • 29. Tipos-classe: Dicionários -> Métodos >>> dic.get(42,‟Caso não existir retorne essa string‟) „Douglas Adams‟ >>> dic[42] „Douglas Adams‟ >>> dic.items() [(„python‟,‟massa‟), (42, „Douglas Adams‟)] >>> dic.keys() [„python‟,42] >>> dic.values() [„massa‟, „Douglas Adams‟] >>> dic.has_key(„python‟) True >>> dic.clear() >>> dic {}
  • 30. Tipos-classe: Booleanos • Em Python existe as palavras reservadas True e False para tipo booleano. • Porém, muitas coisas em Python são considerados booleanos • bool() : verifica se a variável é verdadeira ou falsa: • Qualquer valor diferente de zeros e vazios é considerado verdadeiro.
  • 31. Tipos-classe: Booleanos >>> bool(0) >>> bool([]) False False >>> bool(0.0) >>> bool(()) False False >>> bool(„‟) >>> bool({}) False False >>> bool(“”) Todo o resto é considerado False verdadeiro, True
  • 32. Tipos-classe: Booleanos -> Operadores Booleanos • and,or,not,is e in >>> 1 or False >>> True and True 1 True >>> 0 or False >>> True or False True False >>> 4 in [1,4] >>> not True True False >>> a=1; b=a >>> not 1 >>> a is b False True
  • 33. Tipos-classe: Booleanos -> Operadores Relacionais • >, <, >=, <=, ==, !=, <> >>> 2>3 • != e <> significam “diferente” False • É possível usar vários >>> 3>=3 operadores na relação: True >>> 1<2<=3<4<5>4>3>=2!=1 >>> 4<=3 True False >>> x=3 • all(): retorna True se todos itens passados forem >>> 2<x<4 verdadeiros. True • any(): retorna True se algum >>> all(1,5.5) item for verdadeiro. True >>> any(0,1) True
  • 34. Sintaxe: Blocos ● O uso de barra invertida () e vírgula (,) permitem continuar um código em outras linhas. ● Para comentários: #. E a linha será ignorada, com exceção de comentários funcionais. ● Dois pontos (:) delimitam blocos. ● Em Python, os blocos de código são delimitados pelo uso de endentação.
  • 35. Sintaxe: Codificação • Para alterar a codificação do arquivo fonte do programa acrescenta-se um comentário funcional no inicio do código: • No inicio do arquivo, no qual <encoding> é a codificação do arquivo (geralmente latin1 ou utf-8).
  • 36. Funções • No Python, as funções: • Podem retornar ou não objetos. • Aceitam Doc Strings. • Aceitam parâmetros opcionais (com defaults). Se não for passado o parâmetro será igual ao default definido na função. • Aceitam que os parâmetros sejam passados com nome. Neste caso, a ordem em que os parâmetros foram passados não importa. • Tem namespace próprio (escopo local), e por isso podem ofuscar definições de escopo global.
  • 37. Funções • Sintaxe: def <nome da função> (<paramêtros>): Ex.: #escrevam isso em um arquivo! Saída: 1024 6.543216468462249 Funcao de exponenciacao.
  • 38. Funções • permite passagem de parâmetro por nome: Saída: #00ff00 #00ff00 #00ff00
  • 40. Escopo das variáveis • Para declarar, dentro de algum escopo, uma variavel global, usa-se o comando global: Saída: oi none oie
  • 41. Controle de fluxo: if, elif e else ● Se o bloco de código for composto de apenas uma linha, ele pode ser escrito após os dois pontos. Saída: >:D mim feliz
  • 42. Laços de Repetição: for ● for: É a estrutura de repetição mais usada no Python. A instrução aceita não só sequências estáticas, mas também sequências geradas por iteradores. sintaxe: for <variavel> in <estrutura iterável>: ● Iteradores são estruturas que permitem iterações, ou seja, acesso aos itens de uma coleção de elementos, de forma sequencial ● Break, continue e else permitidos.
  • 43. Laços de Repetição: for Saída: >>1 => Sócrates >>2 => Aristóteles >>3 => Platão >>4 => Descartes >>5 => Nietzsche
  • 44. Laços de repetição: while ● While: O laço while é adequado quando não há como determinar quantas iterações vão ocorrer e não há uma sequência a seguir.
  • 45. Entrada e saida de dados • O comando print escreve na saída padrão do Python. • A entrada padrão se dá pela função raw_input(), que lê a entrada pelo teclado e retorna a string. • O uso combinado de float() e int() permite a leitura de valores inteiros e pontos flutuantes.
  • 46. Manipulação de arquivos • Função Open(„endereco‟,‟<modo>‟) • Sendo os modos: – r: somente leitura (padrão) – w: escrita – a: escrita adição – b: binario • operador + permite leitura e gravação.
  • 47. Manipulação de arquivos: métodos • <objeto-arquivo>.readlines(): retorna uma lista com cada linha do arquivo. • <objeto-arquivo>.mode(): retorna o modo atual do arquivo • <objeto-arquivo>.write(): escreve no arquivo • <objeto-arquivo>.close(): fecha o objeto
  • 48. Módulo: math import math >>> math.trunc(5.6) #arredonda valor para baixo. 5 >>> math.log(math.e): #retorna o logaritmo do numero 1.0 >>> math.log(1024,2) # log de 1024 na base 2 10.0 >>> math.factorial(5) #retorna o fatorial do numero dado. 120 >>> math.fabs(-5) #módulo de algum valor 5.0 >>> math.pi: #constante Pi 3.141592653689793 >>> math.e: #número de Euler 2.718281828459045
  • 49. Orientação a Objetos • Objetos são abstrações computacionais que representam entidades, com suas qualidades (atributos) e ações (métodos) que estas podem realizar. • A classe é a estrutura básica do paradigma de orientação a objetos, que representa o tipo do objeto, um modelo a partir do qual os objetos serão criados.
  • 51. Orientação a Objetos: • Os atributos são estruturas de dados que armazenam informações sobre o objeto e os métodos são funções associadas ao objeto, que descrevem como o objeto se comporta. • Sintaxe:
  • 52. Orientação a Objetos: • O interpretador Python possui um recurso chamado coletor de lixo (Garbage Collector) que limpa da memória objetos sem referências. • método __init__() inicializa os valores do parâmetros • método __repr__() é uma representação do objeto como string
  • 53. Orientação a Objetos: Definindo uma classe
  • 54. Orientação a Objetos: Definindo uma classe Privatizando variáveis de instância.
  • 55. Orientação a Objetos: Definindo uma classe Dentro da classe Saída: Fora da classe
  • 56. Código-fonte = módulo? Ao fazermos a verificação do namespace __name__ como sendo o __main__, verificamos se estamos rodando o arquivo fonte ou se estamos apenas importando-o
  • 57. Código-fonte = módulo? Rodando o arquivo Do módulo pessoa.py, importe Pessoa. Nesse caso, não rodará o “main” do arquivo pessoa.py, pois estamos no namespace do interpretador Todos arquivos *.py são tanto código-fonte quanto um módulo.
  • 58. Orientação a Objetos: Herança Dentro da classe
  • 59. Orientação a Objetos: Serialização • É basicamente você salvar um objeto em um arquivo. • Como tudo em Python é objeto, você pode salvar qualquer coisa com serialização. • Pode por exemplo salvar uma lista, com o que tiver nela. Depois é só recarregar esse objeto lista em uma lista nova e continuar usando-a. • Existem frameworks em Python de terceiros que oferecem formas de persistência com recursos mais avançados.
  • 60. Orientação a Objetos: Serialização • Importe o modulo pickle para salvar o objeto, sintaxe: pickle.dump(<objeto>,file(„<nomeArquivo>‟,‟w‟)) para reabrir o objeto: a = pickle.load(file(„<nomeArquivo>‟))
  • 61. Funções Lambda (Programação Funcional) • Programação funcional é um paradigma que trata a computação como uma avaliação de funções matemáticas. • No Python, lambda é uma função anônima composta apenas por expressões. • As funções lambda podem ter apenas uma linha, e podem ser atribuídas a uma variável.
  • 62. Funções Lambda (Programação Funcional) sintaxe: <funcao> = lambda <lista de variáveis>: <expressões >
  • 63. Tratamento de Exceções • Quando ocorre uma falha no programa (como uma divisão por zero, por exemplo) em tempo de execução, uma exceção é gerada. Se a exceção não for tratada, ela será propagada através das chamadas de função até o módulo principal do programa, interrompendo a execução
  • 64. Tratamento de Exceções print 1/0 >>>Traceback (most recent call last): File "<input>", line 1, in ? ZeroDivisionError: integer division or modulo by zero
  • 65. Tratamento de Exceções try: print 1/0 except ZeroDivisionError: print 'Erro ao tentar dividir por zero.‘ >>>Erro ao tentar dividir por zero.
  • 66. Biblioteca padrão • É comum dizer que o Python vem com “baterias inclusas”, em referência a vasta biblioteca de módulos e pacotes que é distribuída com o interpretador. • Alguns módulos importantes da biblioteca padrão: • Matemática: math, cmath, decimal e random. • Sistema: os, glob, shutils e subprocess. • Threads: threading. • Persistência: pickle e cPickle. • XML: xml.dom, xml.sax e elementTree (a partir da versão 2.5). • Configuração: ConfigParser e optparse. • Tempo: time e datetime. • Outros: sys, logging, traceback, types e timeit.
  • 67. Bibliografia • Python para Desenvolvedores,Luiz Eduardo Borges, 2ª edição, 360 pag., Edição do Autor, Rio de Janeiro, 2010, http://ark4n.wordpress.com/python/ • How to Think like a Computer Scientist: Learning with Python, Allen Downey, Jeffrey Elkner & Chris Meyers, 2nd Edition, 280 pag., Editado por Shannon Turlington & Lisa Cutler, Wellesley, MA, 2008
  • 68. “The Zen of Python” por Tim Peters • digite no Python: >> import this ps: in english.