SlideShare uma empresa Scribd logo
1 de 56
Baixar para ler offline
Python
Andrea Menezes (afm3)
Maíra Nascimento (mcn2)
Agenda
 O que é Python
 Por que usar python
 História
 Quem usa Python
 Características
 A Liguagem
O que é Python
Python
 Linguagem de alto nível
 Orientada a Objetos
 Interpretada
 Não é apenas uma linguagem de script
 Fácil de usar e de aprender
Por que usar Python
Por que usar Python?
 Conceitos fundamentais simples
 Sintaxe clara – muito próxima de um
pseudo-código
 Código curto e legível
 Tipos pré-definidos poderosos
 Possui um vasto repertório de bibliotecas
 Ciclo de desenvolvimento rápido
Por que usar Python?
 Licença Open Source
 Pouco punitiva: poucas regras arbitrárias;
 Extensível (adicionar novos módulos)
 C/C++
 Java (através Jython)
 Extremamente portável
 Unix/Linux, Windows, Mac, PalmOS, WindowsCE,
RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400,
PlayStation, Sharp Zaurus, BeOS, VMS…
História
Breve História
 Criada por Guido van Rossum em 1989
 no Centrum voor Wiskunde en Informatica
(CWI), em Amsterdã,Holanda.
 Linguagem de scripts para o sistema
operacional distribuído Amoeba
 Baseada na linguagem ABC, desenvolvida no
CWI por Guido e outros nas décadas de 70 e
80.
 O nome Python teve origem no grupo
humorístico britânico Monty Python.
Versões
 26 de janeiro de 1994 – versão 1.0
 1998 – JPython
 16 de outubro de 2000 – versão 2.0
 19 de setembro de 2006 – versão 2.5
(atual)
Quem usa Python
No Mundo
 NASA (vários projetos)
 Yahoo! (Yahoo mail & groups)
 Apple, H.P., Microsoft
 Muitas Universidades, como MIT, e
Stanford
Google
 Sistema de ajuda do GMail
 Google Groups
 Sistema de compilação de aplicativos (build
system).
 Sistema de empacotamento e entrega de dados
(packaging system).
 Sistema de monitoramento e manutenção do
cluster
 Sistema de testes
No Brasil
 Jornal do Brasil, AOL Brasil
 Embratel: monitoramento das interfaces de
backbone e clientes de internet, também
existem scripts de uso interno.
 CPqD: monitoramento de centrais telefônicas.
 Conectiva: Gerenciamento de pacotes da
distribuição Linux e ferramentas de uso interno.
 Async: desenvolvimento de software de
automação comercial
Características
Compilada X Interpretada
 Interpretada
 Interpretador interativo
 Compilador de byte code
compilação implícita e automática
Paradigma
 Orientada a Objetos
 Suporte a outros paradigmas
Estrutural
Funcional
 Fácil integração com outras linguagens
Sistema de Tipos
 Fortemente tipada
Objetos não podem mudar de tipo
 Não há conversão automática de tipos
 Tipagem dinâmica
Não há declaração de variáveis
Outras
 Poderosas estruturas de dados nativas
 Listas
 Dicionários
 Identação para estrutura de bloco
 Blocos demarcados por espaços
print "O valor de a "
if a == 0:
print "zero"
else:
print a
A Linguagem
Comentários e Comentários
Funcionais
 Após o caractere “#” até o final da linha, tudo é
considerado um comentário e ignorado, exceto pelos
comentários funcionais.
 Definindo a codificação do arquivo fonte
 #−− coding: <encoding−name> −−
 Em sistemas Posix pode-se usar o comentário funcional
#!/usr/bin/env python para executar o arquivo com o
comando python encontrado no ambiente.
 Isto não é característico de Python, mas dos sistemas Posix.
Indentação
 Em Python, os blocos de código são delimitados
pelo uso de indentação.
 A indentação não precisa ser consistente em
todo o arquivo, só no bloco de código.
 Uma boa prática é ser consistente no projeto todo.
 Cuidado ao misturar TAB e Espaços: configure
seu editor!
Variáveis
 Tipagem dinâmica
 uma variável não tem tipo fixo, ela tem o tipo do
objeto que ela contém.
 Não precisam ser declaradas
 Variáveis são criadas quando atribuídas pela
primeira vez
 Variáveis devem ser atribuídas antes de serem
referenciadas
 “Tudo” é uma variável
 Funções, classes, módulos ...
Tipos de Dados
 Variáveis Numéricas
Imutáveis
num_int = 13
num_int_long = 13L
num_real = 13.0
Tipos de Dados
 Strings
Imutáveis
Criação
 texto1 = ‘abcdefghij ‘
 texto2 = “outro texto”
 texto3 = ‘’’este texto
tem varias
linhas ‘’’
Tipos de Dados
 Strings
 Acesso a elementos pelo índice
texto1 = ‘abcdefghij ‘
print texto1 [ 2 ] # Imprime ’ c ’
print ’GSB ’[ 1 ] # Imprime ’ S ’
 Principais Métodos:
split, count, index, join, lower, upper, replace
Tipos de Dados
 Tuplas
Formadas por elementos de qualquer
tipo
Delimitadas por parênteses. ‘(‘ e ‘)’
Imutáveis
 não se pode acrescentar apagar ou modificar
valores
Vantagem: eficiente
Tipos de Dados
 Listas
 Formadas por elementos de qualquer tipo
 Criação
 lista = [ 10 , 2 , 3 , ’texto’ , 20 ]
 Acesso a elementos pelo índice
 print lista [ 2 ] # imprime ’3 ’
 Principais Métodos:
append, count, index, insert, pop,
remove,reverse, sort
Listas
 Dado uma lista “lista”, verifique se “valor” está
dentro dela, caso verdade imprima “Sim”, senão
imprima “Não”.
 Dado uma lista “lista”, itere sobre a lista,
imprimindo cada um de seus elementos.
 Dado uma lista “lista”, crie uma nova lista
“rotaciona_3” que cada posição está
rotacionada em 3 posiçõeses, isto é, indice0 =
indice + 3.
Tipos de Dados
 Dicionários
 Formados por pares de chave-valor
 Delimitados por chaves. ‘{‘ e ‘}’
d = { ’chave ’: ’valor ’ , ’linguagem ’: ‘python’ }
 Chave sempre um valor Imutável!
lista = [ 1 , 2 ]
d[ lista ] = ’outro valor ’ #TypeError: list object are unhashable
Tipos de Dados
 Dicionários
 Principais Métodos:
copy, get, has_key, items, keys, update, values
 Obtendo iteradores (otimizado para for):
for chave in d.iterkeys ():
print chave
for valor in d.itervalues ():
print valor
for chave , valor in d.iteritems ():
print chave , ‘=‘ , valor
Dicionários
 Crie um dicionário d e coloque nele seus
dados: nome, idade, telefone,endereço.
 Usando o dicionário d criado
anteriormente, imprima seu nome.
 Também usando d, imprima todos os itens
do dicionário no formato chave : valor,
ordenado pela chave.
Controle de Fluxo
if exp:
#comandos
else:
#comandos
if exp:
#comandos
elif exp:
#comandos
else:
#comandos
Controle de Fluxo
 Os seguintes valores são considerados falsos:
 None
 False
 Valor 0 de viários tipos: 0, 0.0, 0L, 0j
 Seqüências vazias: ”, (), []
 Mapeamentos vazios
 Instâncias de objetos que definam __nonzero__() que
retorne valor False ou 0
 Instância de objetos que definem o __len__() o qual
retorne 0.
Controle de Fluxo
 Implemente o seguinte conjunto de regras em
Python:
 Se a for verdadeiro e b for falso, imprima “Caso 1”
 Senão, Caso a for falso e b for verdadeiro, imprima
“Caso 2”
 Caso contrário:
 Caso c for maior que 10 e d estiver entre 0.0 e 100.0,
imprima “Caso 3”
 Caso e estiver na lista lst, imprima “Caso 4”
 Senão imprima “Caso 5”
Estruturas de Repetição
for var in seq:
#comandos
for num in range(200):
print num
while exp:
#comandos
from time import time
start = time ()
while time () - start < 3.0:
print “ esperando ... “
Estruturas de Repetição
 Python fornece a cláusula else para os laços.
 Será executada quando a condição do laço for falsa.
for elemento in lista :
if elemento == parada :
break
print elemento
else :
print " Laço chegou ao fim “
 No exemplo acima, a mensagem “Laço chegou ao fim” só é
imprimida caso não existir um elemento que seja igual a “parada”.
Estrutura de Repetição
 Dada uma lista de palavras “lista” e uma
palavra “chave” imprima o índice do
elemento que encontrou a palavra, senão
imprima “Palavra Não Encontrada”.
Funções
 Regra LGB
 Referências buscam 3 escopos: local, global, built-in
 Atribuições criam ou modificam nomes locais por default
 Pode forçar argumentos a serem globais utilizando global
 Exemplo
x = 99
def func(y):
z = x+y #x não é atribuído então é global
return z
func(1)
Funções
 É possível definir argumentos defaults que não
precisam ser passados
def func(a, b, c=10, d=100):
print a, b, c, d
>>> func(1,2)
1 2 10 100
>>> func(1,2,3,4)
1,2,3,4
Funções
 Número variável de argumentos
 argumentos são passados para a função na forma de
uma lista
def arg_sem_nome ( * args ):
for arg in args :
print " arg :" , arg
arg_sem_nome ( ’a’ , ’b’ , 123 )
Funções
 Número variável de argumentos
 argumentos são passados para a função na forma de
um dicionário, o nome do argumento é a chave
def arg_com_nome ( ** kargs ):
for nome , valor in kargs . iteritems ():
print nome , "=" , valor
arg_com_nome ( a=1 , b=2 , teste =123 )
Módulos
 Módulos são funções definidas em arquivos separados
 Itens são importados utilizando from ou import
from module import function
function()
import module
module.function()
 Módulos são “namespaces”
 Podem ser utlizados para organizar nomes de variáveis.
mod1.umValor = mod1.umValor - mod2.umValor
Classes
class A:
atributo1 = 'atributo1 da classe A'
atributo2 = 'atributo2 da classe A‘
def __init__(self, val_ini=1):
" " " Construtor da classe A" " "
self.atributo_de_instacia = val_ini
def metodo (self):
print self.atributo_de_instacia
print A.atributo1
Classes
import datetime
class Pessoa ( object ):
def __init__ ( self , nome , nascimento ):
self . nome = nome
self . nascimento = nascimento
def idade ( self ):
delta = datetime . date . today () - self . nascimento
return delta . days / 365
def __str__ ( self ):
return ’%s , % d anos ’ % ( self .nome , self . idade () )
Classes
 Atributos de Classe
 São atributos que estão na classe, não na instância
 São compartilhados entre todas as instâncias
(economia de memória)
 Os valores são instanciados/atribuídos ao ler a
definição de classe
 Úteis para casos como Jogos, onde uma imagem
deve ser compartilhada por todos os personagens
idênticos, economizando memória
 Úteis para fazer “lock” em regiões críticas, evitar
condições de corrida, etc...
Classes
 Atributos de classes
class C( object ):
l = []
c1 = C()
c2 = C()
c1.l.append ( 1 )
print c1.l # imprime [ 1 ]
print c2.l # imprime [ 1 ]
print C.l # imprime [ 1 ]
Classes
 Atributos Públicos e Privados
 Nomenclatura define atributos/métodos públicos e
privados
 Privados: nomes que se iniciam com __ e não terminam
com __.
 Públicos: os outros nomes possíveis.
 Convenciona-se que atributos/métodos que se iniciam e
terminam com __ (portanto públicos) são de uso interno da
classe, apesar de poderem ser utilizados pelo mundo
externo.
Classes
 Propriedade
 Escrita e leitura dos atributos
class C( object ):
def __init__ ( self ):
self . __x = None
def getX ( self ):
return self . __x
def setX ( self , valor ):
if isinstance ( valor , int ):
self . __x = valor
else :
raise TypeError ( “x precisa ser inteiro !” )
x = property ( getX , setX )
c = C()
c.x = 1
c.x = ’abc ’ # TypeError : x precisa ser inteiro
print c.x
Exceções
try:
algumaCoisa()
except:
print ‘Erro’
else:
# Será executado se quando não houver exceção
outraCoisa()
Exceções
try:
algumaCoisa()
finally:
# Será executado sempre! (com ou sem exceção)
outraCoisa()
# Podemos usar except ou finally, nunca os dois!
Arquivos
 Lendo todo o conteúdo para a memória:
arquivo = open ( ’nome_arq.txt ’ )
conteudo = arquivo.read ()
arquivo.close ()
 Lendo todas as linhas para a memória (lista):
arquivo = open ( ’nome_arq.txt ’ )
linhas = arquivo.readlines ()
arquivo.close ()
 Lendo uma quantidade específica de bytes:
arquivo = open ( ’nome_arq.txt ’ )
comeco = arquivo.read ( 20 ) # 20 primeiros bytes
arquivo.close ()
Arquivos
 Lendo com laços:
arquivo = open ( ’nome_arq.txt ’ )
# idêntico a arquivo.readlines()
for linha in arquivo :
print linha
arquivo = open ( ’nome_arq.txt ’ )
while True :
linha = arquivo.readline ()
if linha == “”:
break
print linha
Exercício
Contador de Palavras
 Pedir Arquivo
 Ler Arquivo
 Contar quantas vezes aparece cada
palavra
 Listar as palavras em ordem alfabética,
junto com o seu número de repetições no
texto
Referências
 Python Language Reference
 http://docs.python.org/ref/ref.html
 Python Library Reference
 http://docs.python.org/lib/lib.html
 Python Tutorial
 http://docs.python.org/tut/tut.html
 Python Brasil
 http://www.pythonbrasil.com.br/moin.cgi/PythonBrasil

Mais conteúdo relacionado

Semelhante a Python2.5.ppt

Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
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êsHelio Colombe
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 
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 pythonAlvaro Oliveira
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
Java Desktop
Java DesktopJava Desktop
Java Desktopciceroclc
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogoselliando dias
 
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)Marcelo Barros de Almeida
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Saulo Arruda
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11Luis Ferreira
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonDiogo Gomes
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4Fabio Spanhol
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 

Semelhante a Python2.5.ppt (20)

Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação 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
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 
Tutorial Python - 1
Tutorial Python - 1Tutorial Python - 1
Tutorial Python - 1
 
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
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogos
 
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)
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
Semanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantesSemanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantes
 
Python tutorial-ed3
Python tutorial-ed3Python tutorial-ed3
Python tutorial-ed3
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1Desenvolvimento iOS - Aula 1
Desenvolvimento iOS - Aula 1
 
Linguagens de programação 12º M11
Linguagens de programação 12º M11Linguagens de programação 12º M11
Linguagens de programação 12º M11
 
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 

Python2.5.ppt

  • 2. Agenda  O que é Python  Por que usar python  História  Quem usa Python  Características  A Liguagem
  • 3. O que é Python
  • 4. Python  Linguagem de alto nível  Orientada a Objetos  Interpretada  Não é apenas uma linguagem de script  Fácil de usar e de aprender
  • 5. Por que usar Python
  • 6. Por que usar Python?  Conceitos fundamentais simples  Sintaxe clara – muito próxima de um pseudo-código  Código curto e legível  Tipos pré-definidos poderosos  Possui um vasto repertório de bibliotecas  Ciclo de desenvolvimento rápido
  • 7. Por que usar Python?  Licença Open Source  Pouco punitiva: poucas regras arbitrárias;  Extensível (adicionar novos módulos)  C/C++  Java (através Jython)  Extremamente portável  Unix/Linux, Windows, Mac, PalmOS, WindowsCE, RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400, PlayStation, Sharp Zaurus, BeOS, VMS…
  • 9. Breve História  Criada por Guido van Rossum em 1989  no Centrum voor Wiskunde en Informatica (CWI), em Amsterdã,Holanda.  Linguagem de scripts para o sistema operacional distribuído Amoeba  Baseada na linguagem ABC, desenvolvida no CWI por Guido e outros nas décadas de 70 e 80.  O nome Python teve origem no grupo humorístico britânico Monty Python.
  • 10. Versões  26 de janeiro de 1994 – versão 1.0  1998 – JPython  16 de outubro de 2000 – versão 2.0  19 de setembro de 2006 – versão 2.5 (atual)
  • 12. No Mundo  NASA (vários projetos)  Yahoo! (Yahoo mail & groups)  Apple, H.P., Microsoft  Muitas Universidades, como MIT, e Stanford
  • 13. Google  Sistema de ajuda do GMail  Google Groups  Sistema de compilação de aplicativos (build system).  Sistema de empacotamento e entrega de dados (packaging system).  Sistema de monitoramento e manutenção do cluster  Sistema de testes
  • 14. No Brasil  Jornal do Brasil, AOL Brasil  Embratel: monitoramento das interfaces de backbone e clientes de internet, também existem scripts de uso interno.  CPqD: monitoramento de centrais telefônicas.  Conectiva: Gerenciamento de pacotes da distribuição Linux e ferramentas de uso interno.  Async: desenvolvimento de software de automação comercial
  • 16. Compilada X Interpretada  Interpretada  Interpretador interativo  Compilador de byte code compilação implícita e automática
  • 17. Paradigma  Orientada a Objetos  Suporte a outros paradigmas Estrutural Funcional  Fácil integração com outras linguagens
  • 18. Sistema de Tipos  Fortemente tipada Objetos não podem mudar de tipo  Não há conversão automática de tipos  Tipagem dinâmica Não há declaração de variáveis
  • 19. Outras  Poderosas estruturas de dados nativas  Listas  Dicionários  Identação para estrutura de bloco  Blocos demarcados por espaços print "O valor de a " if a == 0: print "zero" else: print a
  • 21. Comentários e Comentários Funcionais  Após o caractere “#” até o final da linha, tudo é considerado um comentário e ignorado, exceto pelos comentários funcionais.  Definindo a codificação do arquivo fonte  #−− coding: <encoding−name> −−  Em sistemas Posix pode-se usar o comentário funcional #!/usr/bin/env python para executar o arquivo com o comando python encontrado no ambiente.  Isto não é característico de Python, mas dos sistemas Posix.
  • 22. Indentação  Em Python, os blocos de código são delimitados pelo uso de indentação.  A indentação não precisa ser consistente em todo o arquivo, só no bloco de código.  Uma boa prática é ser consistente no projeto todo.  Cuidado ao misturar TAB e Espaços: configure seu editor!
  • 23. Variáveis  Tipagem dinâmica  uma variável não tem tipo fixo, ela tem o tipo do objeto que ela contém.  Não precisam ser declaradas  Variáveis são criadas quando atribuídas pela primeira vez  Variáveis devem ser atribuídas antes de serem referenciadas  “Tudo” é uma variável  Funções, classes, módulos ...
  • 24. Tipos de Dados  Variáveis Numéricas Imutáveis num_int = 13 num_int_long = 13L num_real = 13.0
  • 25. Tipos de Dados  Strings Imutáveis Criação  texto1 = ‘abcdefghij ‘  texto2 = “outro texto”  texto3 = ‘’’este texto tem varias linhas ‘’’
  • 26. Tipos de Dados  Strings  Acesso a elementos pelo índice texto1 = ‘abcdefghij ‘ print texto1 [ 2 ] # Imprime ’ c ’ print ’GSB ’[ 1 ] # Imprime ’ S ’  Principais Métodos: split, count, index, join, lower, upper, replace
  • 27. Tipos de Dados  Tuplas Formadas por elementos de qualquer tipo Delimitadas por parênteses. ‘(‘ e ‘)’ Imutáveis  não se pode acrescentar apagar ou modificar valores Vantagem: eficiente
  • 28. Tipos de Dados  Listas  Formadas por elementos de qualquer tipo  Criação  lista = [ 10 , 2 , 3 , ’texto’ , 20 ]  Acesso a elementos pelo índice  print lista [ 2 ] # imprime ’3 ’  Principais Métodos: append, count, index, insert, pop, remove,reverse, sort
  • 29. Listas  Dado uma lista “lista”, verifique se “valor” está dentro dela, caso verdade imprima “Sim”, senão imprima “Não”.  Dado uma lista “lista”, itere sobre a lista, imprimindo cada um de seus elementos.  Dado uma lista “lista”, crie uma nova lista “rotaciona_3” que cada posição está rotacionada em 3 posiçõeses, isto é, indice0 = indice + 3.
  • 30. Tipos de Dados  Dicionários  Formados por pares de chave-valor  Delimitados por chaves. ‘{‘ e ‘}’ d = { ’chave ’: ’valor ’ , ’linguagem ’: ‘python’ }  Chave sempre um valor Imutável! lista = [ 1 , 2 ] d[ lista ] = ’outro valor ’ #TypeError: list object are unhashable
  • 31. Tipos de Dados  Dicionários  Principais Métodos: copy, get, has_key, items, keys, update, values  Obtendo iteradores (otimizado para for): for chave in d.iterkeys (): print chave for valor in d.itervalues (): print valor for chave , valor in d.iteritems (): print chave , ‘=‘ , valor
  • 32. Dicionários  Crie um dicionário d e coloque nele seus dados: nome, idade, telefone,endereço.  Usando o dicionário d criado anteriormente, imprima seu nome.  Também usando d, imprima todos os itens do dicionário no formato chave : valor, ordenado pela chave.
  • 33. Controle de Fluxo if exp: #comandos else: #comandos if exp: #comandos elif exp: #comandos else: #comandos
  • 34. Controle de Fluxo  Os seguintes valores são considerados falsos:  None  False  Valor 0 de viários tipos: 0, 0.0, 0L, 0j  Seqüências vazias: ”, (), []  Mapeamentos vazios  Instâncias de objetos que definam __nonzero__() que retorne valor False ou 0  Instância de objetos que definem o __len__() o qual retorne 0.
  • 35. Controle de Fluxo  Implemente o seguinte conjunto de regras em Python:  Se a for verdadeiro e b for falso, imprima “Caso 1”  Senão, Caso a for falso e b for verdadeiro, imprima “Caso 2”  Caso contrário:  Caso c for maior que 10 e d estiver entre 0.0 e 100.0, imprima “Caso 3”  Caso e estiver na lista lst, imprima “Caso 4”  Senão imprima “Caso 5”
  • 36. Estruturas de Repetição for var in seq: #comandos for num in range(200): print num while exp: #comandos from time import time start = time () while time () - start < 3.0: print “ esperando ... “
  • 37. Estruturas de Repetição  Python fornece a cláusula else para os laços.  Será executada quando a condição do laço for falsa. for elemento in lista : if elemento == parada : break print elemento else : print " Laço chegou ao fim “  No exemplo acima, a mensagem “Laço chegou ao fim” só é imprimida caso não existir um elemento que seja igual a “parada”.
  • 38. Estrutura de Repetição  Dada uma lista de palavras “lista” e uma palavra “chave” imprima o índice do elemento que encontrou a palavra, senão imprima “Palavra Não Encontrada”.
  • 39. Funções  Regra LGB  Referências buscam 3 escopos: local, global, built-in  Atribuições criam ou modificam nomes locais por default  Pode forçar argumentos a serem globais utilizando global  Exemplo x = 99 def func(y): z = x+y #x não é atribuído então é global return z func(1)
  • 40. Funções  É possível definir argumentos defaults que não precisam ser passados def func(a, b, c=10, d=100): print a, b, c, d >>> func(1,2) 1 2 10 100 >>> func(1,2,3,4) 1,2,3,4
  • 41. Funções  Número variável de argumentos  argumentos são passados para a função na forma de uma lista def arg_sem_nome ( * args ): for arg in args : print " arg :" , arg arg_sem_nome ( ’a’ , ’b’ , 123 )
  • 42. Funções  Número variável de argumentos  argumentos são passados para a função na forma de um dicionário, o nome do argumento é a chave def arg_com_nome ( ** kargs ): for nome , valor in kargs . iteritems (): print nome , "=" , valor arg_com_nome ( a=1 , b=2 , teste =123 )
  • 43. Módulos  Módulos são funções definidas em arquivos separados  Itens são importados utilizando from ou import from module import function function() import module module.function()  Módulos são “namespaces”  Podem ser utlizados para organizar nomes de variáveis. mod1.umValor = mod1.umValor - mod2.umValor
  • 44. Classes class A: atributo1 = 'atributo1 da classe A' atributo2 = 'atributo2 da classe A‘ def __init__(self, val_ini=1): " " " Construtor da classe A" " " self.atributo_de_instacia = val_ini def metodo (self): print self.atributo_de_instacia print A.atributo1
  • 45. Classes import datetime class Pessoa ( object ): def __init__ ( self , nome , nascimento ): self . nome = nome self . nascimento = nascimento def idade ( self ): delta = datetime . date . today () - self . nascimento return delta . days / 365 def __str__ ( self ): return ’%s , % d anos ’ % ( self .nome , self . idade () )
  • 46. Classes  Atributos de Classe  São atributos que estão na classe, não na instância  São compartilhados entre todas as instâncias (economia de memória)  Os valores são instanciados/atribuídos ao ler a definição de classe  Úteis para casos como Jogos, onde uma imagem deve ser compartilhada por todos os personagens idênticos, economizando memória  Úteis para fazer “lock” em regiões críticas, evitar condições de corrida, etc...
  • 47. Classes  Atributos de classes class C( object ): l = [] c1 = C() c2 = C() c1.l.append ( 1 ) print c1.l # imprime [ 1 ] print c2.l # imprime [ 1 ] print C.l # imprime [ 1 ]
  • 48. Classes  Atributos Públicos e Privados  Nomenclatura define atributos/métodos públicos e privados  Privados: nomes que se iniciam com __ e não terminam com __.  Públicos: os outros nomes possíveis.  Convenciona-se que atributos/métodos que se iniciam e terminam com __ (portanto públicos) são de uso interno da classe, apesar de poderem ser utilizados pelo mundo externo.
  • 49. Classes  Propriedade  Escrita e leitura dos atributos class C( object ): def __init__ ( self ): self . __x = None def getX ( self ): return self . __x def setX ( self , valor ): if isinstance ( valor , int ): self . __x = valor else : raise TypeError ( “x precisa ser inteiro !” ) x = property ( getX , setX ) c = C() c.x = 1 c.x = ’abc ’ # TypeError : x precisa ser inteiro print c.x
  • 50. Exceções try: algumaCoisa() except: print ‘Erro’ else: # Será executado se quando não houver exceção outraCoisa()
  • 51. Exceções try: algumaCoisa() finally: # Será executado sempre! (com ou sem exceção) outraCoisa() # Podemos usar except ou finally, nunca os dois!
  • 52. Arquivos  Lendo todo o conteúdo para a memória: arquivo = open ( ’nome_arq.txt ’ ) conteudo = arquivo.read () arquivo.close ()  Lendo todas as linhas para a memória (lista): arquivo = open ( ’nome_arq.txt ’ ) linhas = arquivo.readlines () arquivo.close ()  Lendo uma quantidade específica de bytes: arquivo = open ( ’nome_arq.txt ’ ) comeco = arquivo.read ( 20 ) # 20 primeiros bytes arquivo.close ()
  • 53. Arquivos  Lendo com laços: arquivo = open ( ’nome_arq.txt ’ ) # idêntico a arquivo.readlines() for linha in arquivo : print linha arquivo = open ( ’nome_arq.txt ’ ) while True : linha = arquivo.readline () if linha == “”: break print linha
  • 55. Contador de Palavras  Pedir Arquivo  Ler Arquivo  Contar quantas vezes aparece cada palavra  Listar as palavras em ordem alfabética, junto com o seu número de repetições no texto
  • 56. Referências  Python Language Reference  http://docs.python.org/ref/ref.html  Python Library Reference  http://docs.python.org/lib/lib.html  Python Tutorial  http://docs.python.org/tut/tut.html  Python Brasil  http://www.pythonbrasil.com.br/moin.cgi/PythonBrasil