O documento apresenta uma introdução ao Python, abordando o que é a linguagem, suas características, como surgiu e exemplos de uso. É dado ênfase aos tipos de dados básicos como inteiros, strings e listas, e estruturas de controle como if/else e laços for e while.
2. 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
3. O que é Python?
Altíssimo Nível
Interpretada
Multiplataforma
◦ Windows, Linux, Mac, BSD, Symbian
Multiparadigma
◦ OO, Procedural, Funcional
4. Por que Python?
Simples
◦ Fácil de memorizar
◦ Fácil de aprender
Elegante
◦ Sintaxe descomplicada
Poderosa
◦ Biblioteca padrão gigantesca
6. 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
7. 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
8. Python 3000
3 de Dezembro de 2008:
◦ Python 3.0 final
◦ Quebra de compatibilidade
◦ Evolução
◦ Corrigir falhas
9. Nada para se preocupar.
Python 2.x vai continuar existindo.
Por um bom tempo...
10. 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
24. 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 Flutuante
d = 16.27
Strings
formatadas como em C
e = „henrique‟
f = „gabriel‟
g = “%s %s” % (e,f)
Booleanos
◦ True e False
25. 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
27. 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=?
28. Estrutura de Controle
if condição:
funcao1()
funcao2()
elif condição2:
funcao3()
else:
funcao4()
29. Estruturas de Repetição
Laço FOR Laço WHILE
for variavel in lista: while condição:
funcao1(variavel) funcao2()
for variavel in range(10): while True:
if variavel == 3: funcao3()
break
30. Juntando tudo em um baralho!
valores = ['As']+list(range(2,11))+ quot;Valete Dama Reiquot;.split()
naipes = quot;Paus Ouros Copas Espadasquot;.split()
baralho = [ quot;%s de %squot; % (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', '2
de Ouros', '2 de Copas', '2 de Espadas', '3 de Paus', '3 de Ouros', '3 de
Copas', '3 de Espadas', '4 de Paus', '4 de Ouros', '4 de Copas', '4 de
Espadas', '5 de Paus', '5 de Ouros', '5 de Copas', '5 de Espadas', '6 de
Paus', '6 de Ouros', '6 de Copas', '6 de Espadas', '7 de Paus', '7 de
Ouros', '7 de Copas', '7 de Espadas', '8 de Paus', '8 de Ouros', '8 de
Copas', '8 de Espadas', '9 de Paus', '9 de Ouros', '9 de Copas', '9 de
Espadas', '10 de Paus', '10 de Ouros', '10 de Copas', '10 de Espadas',
'Valete de Paus', 'Valete de Ouros', 'Valete de Copas', 'Valete de
Espadas', 'Dama de Paus', 'Dama de Ouros', 'Dama de Copas', 'Dama
de Espadas', 'Rei de Paus', 'Rei de Ouros', 'Rei de Copas', 'Rei de
Espadas']
32. 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]
33. 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'
34. 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 de
Paus', '9 de Espadas', '6 de Paus', 'Rei de Paus', 'As de Copas',
'5 de Paus', '6 de Espadas', '8 de Espadas', '6 de Ouros', 'Dama
de Espadas', 'Valete de Copas', '5 de Espadas', '3 de Espadas',
'6 de Copas', '3 de Paus', '7 de Copas', '3 de Ouros', '8 de
Copas', '2 de Copas', '7 de Espadas', '10 de Espadas', '10 de
Paus', '10 de Ouros', '7 de Paus', 'Valete de Ouros', '9 de
Copas', '2 de Ouros', '4 de Paus', 'Dama de Copas', 'Rei de
Ouros', '9 de Ouros', '4 de Copas', 'Valete de Espadas', '5 de
Copas', 'Dama de Ouros', '10 de Copas', '3 de Copas', 'Rei de
Copas', 'Dama de Paus', '8 de Paus']
35. 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)
40. 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