SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PDF
Python e seus desafios
PDF
Curso java 05 - herança, classes e métodos abstratos
PDF
Curso java 06 - mais construtores, interfaces e polimorfismo
PDF
Python e django na prática
PPTX
Curso java 01 - molhando os pés com java
PDF
Aprendendo ruby
PDF
Curso de Python e Django
PPT
Java Básico
Python e seus desafios
Curso java 05 - herança, classes e métodos abstratos
Curso java 06 - mais construtores, interfaces e polimorfismo
Python e django na prática
Curso java 01 - molhando os pés com java
Aprendendo ruby
Curso de Python e Django
Java Básico

Mais procurados (20)

KEY
Introdução a Python
PDF
Programando com Python
PDF
Python: a primeira mordida
PDF
Orientação a objetos em Python (compacto)
ODP
Python: programação divertida novamente
PDF
Iteraveis e geradores
ODP
Java 06 Strings Arrays
ODP
Pymordida0 Semana de computação da SOCIESC - 2008/10
PDF
Objetos Pythonicos - compacto
ODP
Python para desenvolvedores - material apoio (parte I)
PDF
Iteráveis e geradores (versão RuPy)
PDF
Orientação a Objetos em Python
PPT
Java Básico :: Introdução
PPTX
Herança e polimorfismo em Java
PDF
Iteraveis e geradores em Python
PDF
Python: Iteraveis, geradores etc
PDF
Python para quem sabe Python (aula 2)
PDF
Introdução a estruturas de dados em python
PDF
Introdução a Python - Python Poli
PDF
Curso básico de Algoritmos com Python
Introdução a Python
Programando com Python
Python: a primeira mordida
Orientação a objetos em Python (compacto)
Python: programação divertida novamente
Iteraveis e geradores
Java 06 Strings Arrays
Pymordida0 Semana de computação da SOCIESC - 2008/10
Objetos Pythonicos - compacto
Python para desenvolvedores - material apoio (parte I)
Iteráveis e geradores (versão RuPy)
Orientação a Objetos em Python
Java Básico :: Introdução
Herança e polimorfismo em Java
Iteraveis e geradores em Python
Python: Iteraveis, geradores etc
Python para quem sabe Python (aula 2)
Introdução a estruturas de dados em python
Introdução a Python - Python Poli
Curso básico de Algoritmos com Python
Anúncio

Destaque (20)

PPT
Tutorial Paso A Pasito
PPTX
Nuevo pacto social para la suficiencia alimantaria
PPTX
Pronto su 2
PPTX
Dia internacional da mulher
PDF
Boletin A 02 2009
DOC
Reseña el ángel de la historia
PDF
Filosofia
PDF
Marketing_Automation_Why_Use_Implementation_Partner
PDF
História
PDF
Calandria presentacion general
PDF
Sobre información
PPT
PresentacióN1
PDF
Copias de controladores
PDF
Entrevista Propmark_2909
DOCX
O cyberbullying
PPTX
Depois das reformas
DOC
proceso de investigacion
DOCX
Relatório do desafio problema 1
PDF
Reglamento investigacion UNE La Cantuta
Tutorial Paso A Pasito
Nuevo pacto social para la suficiencia alimantaria
Pronto su 2
Dia internacional da mulher
Boletin A 02 2009
Reseña el ángel de la historia
Filosofia
Marketing_Automation_Why_Use_Implementation_Partner
História
Calandria presentacion general
Sobre información
PresentacióN1
Copias de controladores
Entrevista Propmark_2909
O cyberbullying
Depois das reformas
proceso de investigacion
Relatório do desafio problema 1
Reglamento investigacion UNE La Cantuta
Anúncio

Semelhante a Introdução a linguagem Python 2.7 (20)

PDF
Iniciando em Python
PDF
minicurso-python-getmeeting.pdf
PDF
Trabalho sobre a linguagem Python
PPT
002 - Programando em Python - Tipos Basicos.ppt
PDF
Curso de Python (Básico) - Português
PDF
Linguagem de Programação Python
PDF
Programando em python tipos basicos
PDF
Tutorial Python - 1
PDF
Py sintaxe
PDF
python.tipos
PPTX
2016/01/27 - Aprendendo a programar com Python
KEY
Introdução à Linguagem de programação Python
PDF
Material_ Módulo 3_Python I.pptx.pdf - Python
PPTX
Python.pptx
PDF
Python introdução a linguagem de programação
PPTX
Python para Desenvolvedores
PDF
02 programando em python - tipos basicos
ODP
Mini Curso de Python para Coding Dojo
PDF
Palestra python
PDF
Computação Científica com SciPy - Brevíssimo Tutorial
Iniciando em Python
minicurso-python-getmeeting.pdf
Trabalho sobre a linguagem Python
002 - Programando em Python - Tipos Basicos.ppt
Curso de Python (Básico) - Português
Linguagem de Programação Python
Programando em python tipos basicos
Tutorial Python - 1
Py sintaxe
python.tipos
2016/01/27 - Aprendendo a programar com Python
Introdução à Linguagem de programação Python
Material_ Módulo 3_Python I.pptx.pdf - Python
Python.pptx
Python introdução a linguagem de programação
Python para Desenvolvedores
02 programando em python - tipos basicos
Mini Curso de Python para Coding Dojo
Palestra python
Computação Científica com SciPy - Brevíssimo Tutorial

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.