Olá Python!

33 %
67 %
Information about Olá Python!
Technology

Published on October 18, 2008

Author: ikkebr

Source: slideshare.net

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 Flutuante d = 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 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

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

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

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  calendar  random  datetime  math  collections  urllib  decimal  re  csv  string  os  __future__  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

Add a comment

Related presentations

Related pages

OLA Python API - wiki.openlighting.org

OLA Python API. From wiki.openlighting.org. Jump to ... import array from ola.ClientWrapper import ClientWrapper wrapper = None loop_count = 0 TICK ...
Read more

Python API | Open Lighting Project

OLA is distributed with a Python API. This makes it easy to quickly prototype new DMX512 generators. Installation. If you’re installing from source you ...
Read more

GitHub - OpenLightingProject/ola: The Open Lighting ...

ola - The Open Lighting Architecture. ola - The Open Lighting Architecture. ... The Python module can be built by running configure with --enable-python-libs.
Read more

GitHub - peterdikant/rpi-ola-controller: A Open Lighting ...

rpi-ola-controller - A Open Lighting show controller that can run standalone on a Raspberry Pi written in Python.
Read more

Open Lighting Architecture - wiki.openlighting.org

Open Lighting Architecture. From wiki.openlighting.org. Jump to: navigation, ... OLA Python API - easy DMX programming; Java - currently a work in progress ...
Read more

OLA Python: no module named... - Google Groups

Thanks for pointing me in the right direction, that was indeed it. Now to start all over with the process on 0.8.2 :) Is there any documentation for the ...
Read more

Python OLA TypeError: can only assign array - Stack Overflow

Python OLA TypeError: can only assign array. up vote 1 down vote favorite. from ola.ClientWrapper import ClientWrapper.
Read more

C++ API | Open Lighting Project

OLA DMX Trigger; Patch Persistency; APIs. APIs Overview; C++ API; Python API; Get Help. Media, Publications & Talks; FAQ; IRC; Mailing Lists; Report a Bug ...
Read more

Download & Install OLA - wiki.openlighting.org

Download & Install OLA. From wiki.openlighting.org. Jump to: navigation, search. There are many ways to install OLA, please use the flowchart for your ...
Read more