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