Introdução A Python 1
Introdução A Python 1
programação
Python
1
1Departamento de Ciência da
Tudo é objeto
Pacotes, módulos, classes,
funções Tratamento exceções
Sobrecarga de operadores
Identação para estrutura de
bloco
O resto é sintaxe
convencional
Google (vários
projetos) NASA
(vários projetos)
RedHat (ferramentas instalação Linux)
Muitas Universidades, como MIT, e
Stanford Globo.com
Exemplos
>> print "opa!"
opa!
>> x = 2 ** 3
>> x / 2
4
>> Introdução à linguagem de programação
Tipos de dados
básicos
São tipos
imutáveis:
num_int = 13
num_int_long =
13L num_real =
13.0
São imutáveis
Armazenam texto (conjuntos de
caracteres) Crescem até o limite da
memória Substituem char e vetor de
char
Acesso sequencial, em fatias ou direto por
índice Implementadas com arrays
Possuem diversos métodos: procurar, contar,
mudar caixa, etc.
Saída
[’o’, ’guia’, ’do’, ’mochileiro’, ’das’, ’galaxias’]
count()
var = ’o guia do mochileiro das galaxias’
print var.count(’guia’)
Saíd
a 1
Introdução à linguagem de programação
String -
Métodos
join()
var = ’o guia do mochileiro das galaxias’
var2 = var.split()
print "/".join(var2)
Saída
o/guia/do/mochileiro/das/gala
xias
Exemplo
tupla = (’MG’, ’Juiz de Fora’)
print tupla[1]
Saída
Juiz de Fora
Arrays flexíveis
a = [98, "bottles of beer", ["on", "the",
"wall"]]
Operações comuns
a+b, a*3, a[0], a[-1], a[1:], len(a)
Item e slice
a[0] -> 98
a[1:2] -> ["bottles", "of",
"beer"] del a[-1]
-> [98, "bottles", "of",
"beer"]
Saída
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[42, 0, 1, 2, 3, 4, 5]
[5, 4, 3, 2, 1, 0, 42]
[0, 1, 2, 3, 4, 5, 42]
Exemplo
>>>estoque = {’peras’: 5, ’laranjas’: 2}
>>>estoque[’peras’]
5
>>>estoque[’peras’]
= 4
>>>estoque[’bananas
’] = 2
>>>estoque.get(’melancias’,’Em falta’)
’Em falta’
>>>estoque
{’bananas’: 2, ’laranjas’: 2, ’peras’:
4}
>>>’uvas’ in estoque
False
>>>estoque.has_key(’
bananas’)
True
>>>estoque.items()
[(’laranjas’, 2),
(’bananas’, 2),
(’peras’, 4)] Introdução à linguagem de programação
Sintax
e
Variáveis
Identificadores: (underscore ou letra) + (qualquer
número de dígitos ou underscores)
Case sensitive (Var /= var)
Nomes são criados quando atribuídos pela primeira
vez Nomes devem ser atribuídos antes de serem
referenciados spam = ’Spam’ #basico
spam, ham = ’yum’, ’YUM’ #tupla
spam = ham = ’lunch’ #multiplo
spam + foo #Erro!!
If-Else-If-
If-Else Else
if exp: if exp:
#comandos
#comandos elif exp:
else: #comandos
#comandos else:
#comandos
For While
for num in range(200): while exp:
print num #comandos
if exp:
break
For
elif
for letra in ’python’:
exp:
print letra
c
ontin
ue
#coma
ndos
list comprehensions
pares = [i for i in range(100) if (i%2) == 0]
impares = [i for i in range(100) if (i%2) != 0]
lista_zeros = [0 for i in range(10)]
matriz = [ [ 0 for j in range(3) ] for i in
range(5)]
Generators
pares = (i for i in range(100) if (i%2) == 0)
print pares.next() #0
print pares.next() #2
Exemplo
def exemplo(a,b,c):
"""Soma tres valores"""
return a + b + c
>>> exemplo(5,1,3)
9
Introdução à linguagem de programação
Passagem de
parâmetros
>>> func(1,2)
1 2 10 100
>>> func(1,2,3,4)
1,2,3,4
L.append(a)
return L
>>>print f(1)
[1]
>>>print f(2)
[1, 2]
>>>print f(3)
[1, 2, 3] Introdução à linguagem de programação
Argumentos
Opcionais
def fib2(n):
"""Retorna a serie de Fibonacci ate n"""
result = []
a, b = 0,
1
while b <
n:
result.append(b)
a, b = b, a+b
return result
NAME
fibo
FILE
fibo.py
FUNCTIONS
fib(n)
Escreve a
serie de
Fibonacci
ate n
fib2(n)
Retorna a
serie de
Fibonacci
ate n Introdução à linguagem de programação
Exceçõe
s
Lendo arquivos
arq = open(’teste.txt’, ’r’) #rb
for linha in arq:
print linha
arq.close()
Escrevendo
arquivos
arq = open(’teste.txt’,
’w’)#’a’,’r+’,’w+’,’a+’ arq.write(’linha1\n’)
arq.write(’linha2
\n’) arq.close()
Alguns Métodos:
read([nbytes]), readline(),
readlines() write(string),
writelines(list) seek(pos[,
how]), tell()
flush(), close()
Conta palavras
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
Conta palavras
p_count = {}
arqnom = raw_input(’Digite o nome do Arquivo: ’)
arq = open(arqnom, ’r’)
palavras = p_count.keys()
palavras.sort()
for palavra in palavras:
print ’Palavra: %s, Quantidade: %05i’ %
(palavra, p_count[palavra])
Achar caminho
def ache_caminho(grafo, inicio, final, caminho=None):
if caminho is None:
caminho = []
caminho = caminho +
[inicio]
if inicio == final:
return caminho
for nodo in grafo[inicio]:
if nodo not in caminho:
novocaminho = ache_caminho(grafo, nodo, final,
caminho)
if novocaminho:
return novocaminho
return None
Exemplo
>>> ache_caminho(grafo, ’A’, ’D’)
[’A’, ’B’, ’D’]
>>> ache_caminho(grafo, ’A’, ’D’)
[’A’, ’B’, ’D’]
>>> ache_caminho(grafo, ’D’, ’C’)
[’D’, ’B’, ’A’, ’C’]
class Matriz(object):
nome_da_classe = "Matriz"
class Matriz(object):
nome_da_classe = "Matriz"
class Matriz(object):
nome_da_classe = "Matriz"
nome_da_classe = "Matriz"
@staticmethod
def nome():
Introdução à linguagem de programação
Classe
s
for i in range(a.linhas):
for j in range(a.colunas):
a[i][j] = i
b[i][j] = j
c = a+b
print c.matriz
print a.matriz
print
b.matriz
return c
for i in range(a.linhas):
for j in range(a.colunas):
a[i][j] = i
b[i][j] = j
import threading
t1 = threading.Thread(target=funcao,args=())
t1.start()
...
t1.join()
sem = threading.Semaphore(2)
sem.acquire()
...
sem.release()
Comunicação entre
processos Cliente
Endereço e porta de
conexão
Servidor
Endereço e porta de
escuta
Comunicaç
ão
read()
write()
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()
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()
Introdução à linguagem de programação
DBM
anydb
m dumbdbm (lenta e limitada, todas
plataformas) dbm (somente em UNIX)
gdbm (somente em UNIX)
dbhash (biblioteca BSD, em UNIX e
Windows)
Exemplo
import anydbm
db = anydbm.open(’db.dat’,’c’)
db[’she’] = ’ela’
db[’he’] = ’ele’
for k, v in db.iteritems():
print k, ’\t’, v
db.close()
Tkinter - Padrão
wxPython (antiga
wxWindows)
GTK no Linux
MFC no
Windows
pyGT
K
pyQt
pyFLT
K,
FxPy,
Anyg
Introdução à linguagem de programação
NumPy e
matplotlib
x = array([1,2,3,4,5])
y = array([6, 11, 18, 27, 38])
p1 = poly1d(polyfit(x,y,2))
p2 =
poly1d(polyfit(x,y,1))
y1 = p1(x)
y2 =
plt.plot(x,
p2(x) y, ’bo’, x, y1, x, y2)
Poderoso array N-dimensional de plt.show()
objetos integração com código
C/C++ e Fortran funções de
álgebra linear, etc...
http://www.python.org
http://docs.python.org
http://www.pythonbr
asil.com.br
http://www.pythonology.co
m/
http://www.google.com :)