Upload
rodrigo-huebner
View
2.329
Download
3
Embed Size (px)
DESCRIPTION
Palestra sobre introdução a programação python realizada no Flisol de Maringá em 2008
Citation preview
Programação em
Rodrigo Hübner
Por que usamos python...
Conceitos fundamentais são fáceis de aprender;
O mesmo código roda em plataformas Linux, Windows e
MAC sem alterações;
Possui uma sintaxe clara e de fácil aprendizado;
Suporte a uma diversidade muito grande de bibliotecas;
Tipagem forte e dinâmica;
Tipos pré definidos são poderosos;
É livre!
E por aí vai...
Aonde a cobra anda?
Quer mais? http://pythonology.org/success
● Governo Brasileiro (Website)● CIA (Website)
OLPC – One Laptop per Child
Interação com outras linguagens
Cpython
Jython
IronPython
Python for Delphi
Python for .NET
Lunatic Python
PyPy
SHOW ME THE CODE!
Aspectos Iniciais...
Tipos já conhecidos:● Inteiros, String, Reais...
Tipos mais poderosos:
● Listas:Ex: lista = [“Fulano”, “Ciclano”, 123, 3.14]
● Tuplas:Ex: tupla = (“Fulano”, “Ciclano”, 123, 3.14)
● Dicionários:Ex: dict = {1: “Eu”, 2: “Você”, 3: “Eles”}
Aspectos Iniciais...
Uso do interpretador interativo
for numero in range (5):print numero
01234
Ajuda! dos métodos primitivos:● dir(), help(), type()
Projetos Interessantes:● Ipython● Reinteract
Aspectos Iniciais...
Exemplo “iniciante”:
01 # * coding: utf8 *0203 import threading04 import time0506 def conversa(*args):07 for frase in args:08 print frase09 time.sleep(2)1011 pessoa1 = ("Fulano: E aí Ciclano", "Fulano: programo em Python!")12 pessoa2 = ("Ciclano: E aí Fulano, programa e que?", "Ciclano: Bom garoto!!! :)")1314 threading.Thread (target=conversa, args=pessoa1).start()15 time.sleep(1)16 threading.Thread (target=conversa, args=pessoa2).start()
Código que simula um diálogo entre duaspessoas usando “thread”
Aspectos mais interessantes!
Um laço for simplesmente...
dados = ['Flisol', 'Rodrigo', 'Maringa']for itens in dados:
print itens
FlisolMaringaRodrigo
for item in range(5):print item**2,
0 1 4 9 16
+Um pouco de conceitos matemáticos...
A = {x² : x Є {0 ... 9}}B = (1, 2, 4, 8, ... 2¹²)C = {x | x Є A e x é par}
= List Comprehensions!
Aspectos mais interessantes!
List Comprehensions
● A = {x² : x Є {0 ... 9}}
a = [x**2 for x in range(10)]a[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
● B = (1, 2, 4, 8, ... 2¹²)
[2**i for i in range(13)][1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096]
● C = {x | x Є A e x é par}[x for x in a if x % 2 == 0][0, 4, 16, 36, 64]
Aspectos mais interessantes!
Função de uma linha: lambda() + Listas (ou List Comprehensions) = Map
frase = 'O rato roeu a roupa do rei de roma'palavras = frase.split()palavras
jaspion = map(lambda w: [w.upper(), w.lower(), len(w)], palavras)for i in jaspion:
print i
Aspectos mais interessantes!
Iteradores e Geradores
def sequencia(numero):i = numerowhile True:
i += 1yield i
valores = sequencia(10)valores.next()11valores.next()12...
Orientação a Objetos
class Pessoa(object):
def __init__ (self, nome, telefone):self.nome = nomeself.telefone = telefone
def escreve(self):print “Nome: ”+self.nomeprint “Telefone: ”+self.telefone
Exemplo simples:Uso:
pessoa = Pessoa(“Fulano”, “2222 – 8754”)pessoa.escreve()Fulano2222 – 8754
Em python e possível implementa herança multipla!
Desenvolvimento para todos os gostos!!!
WEBDjango;
Zope / Plone;Pylons;
Turbo Gears;mod_python;
...
DesktopTkinter;PyGTK;PyQT;
wxPython;...
ProcessamentoImagens / scripts
PIL;PythonMagick;GIMPPython;
...
CiênciaScipy;
BioPython;AstroPy;NumPy;
...
BDZOBD;gadfly;
Postgres;MySQL;
...
DiversãoPyGameBlender
...
# Importa o módulo do PostegreSQLimport PgSQL
# Faz conexão com o banco de dadosdb = PgSQL.connect(host='host', database='bd',
user='usuario',password='senha')
# Cria um cursorcursor = db.cursor()
# Executa o SQLcursor.execute("SELECT * FROM tabela")
# Recebe um conjunto de resultado em forma de “tupla”result = cursor.fetchall()
# Navega pelos resultados armazenados na tuplafor record in result:
print record[0] , ">", record[1]
Uso de banco de dados: PostgreSQL
Referencias Bibliográficas
http://pythonbrasil.com.brhttp://www.reinteract.orghttp://ipython.scipy.orghttp://djangoproject.org
Livros:Learning to PythonBeginning Game Development with Python and PygameDive into Python
Canal IRC:#pythonbr (serv. FreeNode)
Lista de Discussão:pythonbrasil (yahoo grupos)grupypr (google grupos)