Olá Python!

Post on 19-May-2015

771 views 0 download

Transcript of Olá Python!

OLÁ

!Henrique G. G. Pereira

ikkibr@gmail.com

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?

Google

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!

ikkibr@gmail.com

Henr“Ikke” G. G. Pereira