Mini Curso de Python
Mini Curso de Python
Mini-Curso
de
Python
Histórico
Criada em 1991
Ensino de Programação
Simplicidade e fácil aprendizado
Monty Python Flying Circus
Características
Interpretada
Orientada a Objetos
Suporte a outros paradigmas
Estrutural
Funcional
Multiplataforma
Windows, Unix/Linux, MacOS, PalmOS
Fácil integração com outras linguagens
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Características
Licença GPL-compatível
Tudo é objeto
Fortemente tipada
Tipagem dinâmica
Poderosas estruturas de dados nativas
Listas
Dicionários
Documentação permanece com o código
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Vamos Começar!
Vamos Começar
Variáveis Numéricas
Imutáveis
num_int = 13
num_int_long = 13L
num_real = 13.0
Strings
Imutáveis
‘python’ + ‘ powered’
‘python powered’
‘python’ * 3
‘pythonpythonpython’
Strings
‘python’[0] ‘python’[4:]
‘p’ ‘on’
‘python’[-2:]
‘python’[2:4] ‘on’
‘th’
Strings
Imutáveis
Principais Métodos:
Tuplas
Listas
Listas
Principais Métodos:
lista = []
lista.append('laranja')
lista.append('kiwi')
lista.pop()
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Listas
>>> lista = range(10)
>>> lista
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> max(lista)
9
>>> min(lista)
0
>>> len(lista)
10
>>> sum(lista)
45
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Entrada de Dados
nome = raw_input(‘digite o seu nome: ‘)
idade = int(raw_input(‘digite a sua idade: ‘)
Condições
if exp: if exp:
#comandos #comandos
else: elif exp:
#comandos
#comandos
else:
#comandos
Expressões
var1 == var2
var1 != var2
Repetição
Repetição
while exp:
#comandos
if exp:
break
elif exp:
continue
#comandos
Funções
def exemplo():
pass
def exemplo(a,b,c):
return a + b + c
>>> exemplo(5,1,3)
9
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Formatando a Saída
Importante!
import modulo
from modulo import *
Lendo um Arquivo
Gravando em um Arquivo
Dicionários
Dicionários
>>> estoque[‘macas’] = 2
>>> estoque.get(‘melao’,’nao temos’)
‘não temos’
>>> estoque
{‘macas’: 3, ‘laranjas’: 2, ‘peras’: 5}
Dicionários
Principais Métodos:
estoque.has_key('uvas')
False
estoque.items()
[('macas', 3), ('laranjas', 2), ('peras', 5)]
def imprime_estados():
for uf, des in estados.items():
print ‘Estado: %s - %s’ % (uf, des)
Programa
Pedir Arquivo
Ler Arquivo
Contar quantas vezes aparece cada palavra
Listar as palavras em ordem alfabética, junto
com o seu número de repetições no texto
Contador de Palavras
palavra_count = {}
palavras = palavra_count.keys()
palavras.sort()
for palavra in palavras:
print 'Palavra: %s, Quantidade: %05i' %
(palavra, palavra_count[palavra])
Funções
def exemplo(a,b=5,c=0):
return a + b + c
Exceções
try:
arq=open(‘teste.txt','r')
print arq.readlines()
arq.close()
except:
print ‘Erro lendo arquivo teste.txt'
Exceções
Exceções
EXCECAO_NUM = “Numero menor que zero”
def verifica(numero):
if numero < 10:
raise EXCECAO_NUM
try:
verifica(numero)
except EXCECAO_NUM:
print “Digite um numero >= que 10!”
except:
print “Erro ao validar numero!”
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Exceções
try:
arq = open(‘teste.txt’, ‘r’)
except:
print “Erro ao ler arquivo”
else:
# Será executado se qnd não houver exceção
le_arquivo()
Exceções
try:
algumaCoisa()
finally:
# Será executado sempre! (com ou sem exceção)
outraCoisa()
Classes
class A:
atributo1 = 'atributo1 da classe A'
atributo2 = 'atributo2 da classe A'
def metodo(self):
print self.atributo_de_instacia
print A.atributo1
Classes
Classes
>>> x = classe1.A()
>>> x.atributo_de_instacia
1
>>> x.outro_atributo = 3
>>> x.outro_atributo
3
>>> x.metodo()
1
'atributo1 da classe A'
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Classes
class A:
atributo = 'atributo da classe‘
def metodo_statico():
print A.atributo
metodo_statico = staticmethod(metodo_statico)
Classes
Classes
hasattr(objeto, nome)
delattr(objeto, nome)
getattr(objeto, nome [, default])
setattr(objeto, nome, valor)
def teste(a,b=0,*c):
print a,b,c
def teste(**d):
print d
>>> teste()
{}
>>> teste(a=1,b=2)
{'a': 1, 'b': 2}
>>> dir(__builtins__)
Threads
import thread
import time
def t1(a,b,c):
t1id = thread.get_ident()
for i in range(10):
time.sleep(1)
print t1id, i
thread.start_new_thread(t1, (1,2,3))
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Threads
var_lock = thread.allocate_lock()
var_lock.acquire()
var_lock.release()
Threading
import threading
t1 = threading.Thread(target=funcao,args=())
t1.start()
sem = threading.Semaphore(2)
sem.acquire()
sem.release()
Sockets
Sockets - Cliente
HOST = 'localhost'
PORT = 2223
s = socket(AF_INET, SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Mensagem do Cliente!')
data = s.recv(1024)
print data
s.close()
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Sockets - Servidor
from socket import socket, AF_INET, SOCK_STREAM
HOST = ''
PORT = 2223
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1) # Numero de Conexoes
conn, addr = s.accept()
data = conn.recv(1024)
print data
conn.send('Mensagem do Servidor!')
conn.close()
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
DBM
- anydbm
- dumbdbm (lenta e limitada, todas plataformas)
- dbm (somente em UNIX)
- gdbm (somente em UNIX)
- dbhash (biblioteca BSD, em UNIX e Windows)
DBM
import anydbm
dados = anydbm.open(‘dados.dat’,’c’)
dados[‘she’] = ‘ela’
dados[‘he’] = ‘ele’
dados.close()
Bancos de Dados
Sqlite
import sqlite
banco = sqlite.connect('test.db')
cur = banco.cursor()
cur.execute('create table empresa (cod numeric not null,
des character not null, primary key (cod))')
cur.execute('insert into empresa values(1,“empresa
teste")')
banco.commit()
banco.close()
Sqlite
result = cur.fetchall()
for regs in result:
print regs
import MySQLdb
cur = con.cursor()
Bancos de Dados
Interfaces Gráficas
Tkinter – Padrão
wxPython (antiga wxWindows)
GTK no Linux
MFC no Windows
pyGTK
pyQT (Windows requer Licença)
pyFLTK, FxPy, Anygui
Tkinter
import Tkinter
tela = Tkinter.Tk()
tela.title('Hello')
edit = Tkinter.Entry(tela)
label= Tkinter.Label(tela, text='Tkinter!!!!')
label.pack()
edit.pack()
tela.mainloop()
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
wxPython
class App(wxApp):
def OnInit(self):
frame = wxFrame(id=wxNewId(), name='frame', parent=None,
pos=wxPoint(0, 0), size=wxSize(200, 200),
style=wxDEFAULT_FRAME_STYLE, title='Hello World')
frame.Show()
return True
app = App(0)
app.MainLoop()
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
wxPython
wxFrame
EVT_CLOSE(func)
wxPanel
wxStaticText
wxTextCtrl
wxButton
EVT_BUTTON(id, func)
wxPython
Prog_ini.py
class App(wxApp):
def OnInit(self):
tela = Tela.create(None)
self.SetTopWindow(tela)
tela.Show()
return True
app = App(0)
app.MainLoop()
Alex Augusto da Luz dos Santos – [email protected]
V Semana Acadêmica da Computação UCS – Mini-Curso de Python
Tela.py
def create(parent):
return Tela(parent)
class Tela(wxFrame):
def __init__(self, parent):
wxFrame.__init__(self, id=wxNewId(), parent=parent,
pos=wxPoint(0, 0), size=wxSize(200, 120),
style=wxDEFAULT_FRAME_STYLE, title='Hello
World')
Tela.py - Continuação
http://www.python.org
http://www.pythonbrasil.com.br
http://www.pythonology.com/
http://www.tchezope.org
OBRIGADO!