44
OLÁ ! Henrique G. G. Pereira [email protected]

Olá Python!

Embed Size (px)

Citation preview

Page 1: Olá Python!

OLÁ

!Henrique G. G. Pereira

[email protected]

Page 2: Olá Python!

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

Page 3: Olá Python!

O que é Python?

Altíssimo Nível

Interpretada

Multiplataforma

◦ Windows, Linux, Mac, BSD, Symbian

Multiparadigma

◦ OO, Procedural, Funcional

Page 4: Olá Python!

Por que Python?

Simples

◦ Fácil de memorizar

◦ Fácil de aprender

Elegante

◦ Sintaxe descomplicada

Poderosa

◦ Biblioteca padrão gigantesca

Page 5: Olá Python!

http://nerdson.com/blog/baterias-e-graos-incluidos/

Page 6: Olá Python!

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

Page 7: Olá Python!

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

Page 8: Olá Python!

Python 3000

3 de Dezembro de 2008:

◦ Python 3.0 final

◦ Quebra de compatibilidade

◦ Evolução

◦ Corrigir falhas

Page 9: Olá Python!

Nada para se preocupar.

Python 2.x vai continuar existindo.

Por um bom tempo...

Page 10: Olá Python!

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

Page 11: Olá Python!

Quem usa Python?

Google

Page 12: Olá Python!

Quem usa Python?

Youtube

Page 13: Olá Python!

Quem usa Python?

NASA

CERN

Nokia

DreamWorks

GIMP

Blender

OpenOffice

Page 14: Olá Python!

Python é usado até

na NASA?!

E no Brasil?

Page 15: Olá Python!

E no Brasil?

Brasil.gov.br

Page 16: Olá Python!

E no Brasil?

Globo.com

Page 17: Olá Python!

E no Brasil?

Stoq

Page 18: Olá Python!

Onde posso encontrar mais?

Python Software Foundation

◦ http://www.python.org

PythonBrasil

◦ http://www.pythonbrasil.com.br

Page 19: Olá Python!

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

Page 20: Olá Python!

Olá Python! x Olá {PHP,C,Java}

print “Olá Python!”

Page 21: Olá Python!

Adeus Lesão

por Esforço

Repetitivo!

Page 22: Olá Python!

Integrated DeveLopment Environment

Ambiente de desenvolvimento Integrado

◦ Feito em Python

◦ Vem com o Python

Page 23: Olá Python!
Page 24: Olá 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

Page 25: Olá Python!

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

Page 26: Olá Python!

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

Page 27: Olá Python!

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 = ?

Page 28: Olá Python!

Estrutura de Controle

if condição:

funcao1()

funcao2()

elif condição2:

funcao3()

else:

funcao4()

Page 29: Olá Python!

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()

Page 30: Olá Python!

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']

Page 31: Olá Python!

Como é que é?

Page 32: Olá Python!

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]

Page 33: Olá Python!

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'

Page 34: Olá Python!

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']

Page 35: Olá Python!

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)

Page 36: Olá Python!

Python tem a

força!

Page 37: Olá Python!

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]

Page 38: Olá Python!

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]

Page 39: Olá Python!

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])

Page 40: Olá Python!

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

Page 41: Olá Python!

Já chega!

Quero ir pra casa logo!

E o tempo está

acabando!

Page 42: Olá Python!

Bibliotecas Úteis

sys

random

math

urllib

re

string

__future__

calendar

datetime

collections

decimal

csv

os

webbrowser

http://docs.python.org/library/index.html

Page 43: Olá Python!

Mais algumas considerações

Python é extensível

◦ C e C++

◦ IronPython

.Net

◦ Jython

Java

Page 44: Olá Python!

Até logo e obrigado pelos peixes!

[email protected]

Henr“Ikke” G. G. Pereira