Curso relâmpago de Python
-
Upload
alexandre-chacon -
Category
Documents
-
view
16 -
download
1
Transcript of Curso relâmpago de Python
Curso relampago de Python
Fernando Rozenblit
Departamento de Fısica - UFPE
4 de julho de 2011
What is Python?
• Linguagem de alto nıvel (“scripting”)
• Busca elegancia e simplicidade (legıvel aoinves de “esperta”)
• “There should be one – and preferablyonly one – obvious way to do it”(The Zen of Python)
Why Python?
“I wrote 20 short programs inPython yesterday. It was
wonderful. Perl, I’m leavingyou.”
(xkcd.com/353)
Como executar
Scripts em Python podem ser executados de maneira interativa (noterminal Python):
ou via terminal:
Principais diferencasEspaco em branco
Espacos sao importantes para delimitar blocos! (Convencao:4 espacos)
C/C++
if (condicao) {
faca_algo();
faca_mais_algo();
outra_coisa();
}
Pythonif condicao:
faca_algo()
faca_mais_algo()
outra_coisa()
Final de linha e comentarios
O final de linha ( ; ) e utilizado quando ha mais de uma expressaona mesma linha:if condicao:
faca_algo(); faca_mais_algo(); outra_coisa()
Comentarios sao feitos com #:# isto eh um comentario
# bla bla bla ..
print "Ola mundo!" # isto eh outro comentario
Final de linha e comentarios
O final de linha ( ; ) e utilizado quando ha mais de uma expressaona mesma linha:if condicao:
faca_algo(); faca_mais_algo(); outra_coisa()
Comentarios sao feitos com #:# isto eh um comentario
# bla bla bla ..
print "Ola mundo!" # isto eh outro comentario
Variaveis
Nao e necessario declarar uma variavel antes de usa-la:
a = "estou guardando uma string"
b = (2 + 3 + 4)/3.0
# ...
a = b * 3 # e elas podem receber qualquer valor!
c = True
c = False # tipos booleanos
Os tipos mais comuns estao presentes: inteiros, doubles e strings.
Imprimindo na tela
Para imprimir variaveis na tela, utilizamos o print. O formato eparecido com C/C++:
a = (2 + 3 + 4)/3.0
b = "oi"
# ...
print "Voce possui %g coisas de nome %s" % (a,b)
Listas
Um tipo muito usado e a lista. Funciona como um vetor:a = "sou uma string"
b = (2 + 3 + 4)/3.0
lista = [a, b, "papai noel",
["outra", "lista"] ]
Para acessar os elementos:print lista[0] # a
print lista[3] # ["outra", "lista"]
print lista[3][0] # "outra"
Listas
Um tipo muito usado e a lista. Funciona como um vetor:a = "sou uma string"
b = (2 + 3 + 4)/3.0
lista = [a, b, "papai noel",
["outra", "lista"] ]
Para acessar os elementos:print lista[0] # a
print lista[3] # ["outra", "lista"]
print lista[3][0] # "outra"
Iterando a lista (loop com for)
Podemos “caminhar” por todos os elementos de uma lista:lista = [a, b, "papai noel",
["outra", "lista"] ]
for elemento in lista:
print elemento # imprime item por item
Lendo arquivos
Para abrir um arquivo para leitura, utilizamos:f = open("arquivo.txt", "r") # abre para leitura
# ...
f.close() # fecha o arquivo
Podemos utilizar o for para ler linha por linha:# ...
for linha in f:
print linha
# ...ou simplesmente obter uma string com todas as linhas:# ...
texto = f.read()
# ...
Lendo arquivos
Para abrir um arquivo para leitura, utilizamos:f = open("arquivo.txt", "r") # abre para leitura
# ...
f.close() # fecha o arquivo
Podemos utilizar o for para ler linha por linha:# ...
for linha in f:
print linha
# ...
ou simplesmente obter uma string com todas as linhas:# ...
texto = f.read()
# ...
Lendo arquivos
Para abrir um arquivo para leitura, utilizamos:f = open("arquivo.txt", "r") # abre para leitura
# ...
f.close() # fecha o arquivo
Podemos utilizar o for para ler linha por linha:# ...
for linha in f:
print linha
# ...ou simplesmente obter uma string com todas as linhas:# ...
texto = f.read()
# ...
Escrevendo em arquivos
Para escrever em um arquivo:f = open("saida.txt", "w") # << abre para *escrita*
# ...
a = 30
b = 4.5
f.write("a: %d, b: %lf \n" % (a,b) )
# semelhante ao print
# ...
f.close() # fecha o arquivo
Exemplo: media de uma serie de dados
Se quisermos tomar a media da primeira coluna em um arquivo dedados:f = open("entrada.txt", "r") # abre para leitura
soma = 0
n = 0
for line in f:
# separa os valores:
# "23 34 0 2" -> ["23", "34", "0", "2"]
valores = line.split()
# soma o valor da 1a coluna como double
soma += float( valores[0] )
n += 1
print "A media da 1a coluna: %lf" % soma/n
Exemplo: shuffle de intervalos com NumPy
O que seria complicado em C, se torna comum em Python. Paraum shuffle no intervalo entre ocorrencias:import numpy as np
import random
f = open("entrada.txt", "r") # abre para leitura
# carrega um vetor de intervalos a partir do arquivo
delays=np.loadtxt(f, unpack=False)
random.seed(23283423) # inicia o gerador
for i in xrange(10): # loop 10 vezes
random.shuffle(delays) # embaralha os intervalos
for delay in delays: # finalmente os imprime
print delay
Exemplo: recebendo parametros da linha de comando
Para receber parametros:import sys # biblioteca de interacao com o sist.
if (len(sys.argv) >= 1): # se ha parametro,
f = open(sys.argv[1], "r") # abre o arquivo
else:
f = sys.stdin # ou utiliza a STDIN
# ...
Definindo funcoes
Funcoes podem ser definidas das seguintes formas:def faca_nada():
assovie()
def faca_algo(minha_lista):
# ...
def repete_algo(minha_lista, n = 5):
for i in xrange(n):
faca_algo(minha_lista)
# para utilizar:
a = [1, 2, 3]
repete_algo(a) # valor padrao n=5
repete_algo(a,10)
Definindo novos tipos (classes!)
Novos tipos (classes) podem ser definidos para abstrair conceitos eorganizar funcoes:class V:
def neh(self):
print "Neh?"
def infinito(self, a = "legal"):
print "Infinitamente " + a + "!"
cara = V()
cara.neh() # "Neh?"
cara.infinito() # "Infinitamente legal!"
cara.infinito("facil") # "Infinitamente facil!"
Classes
Os objetos podem executar comandos ao serem iniciados:class V:
def __init__(self):
print "Djaaaaaaaabo!"
# ...
cara = V() # "Djaaaaaaaabo!"
# ...
Exemplo: pendulo simples
from math import sin # apenas a funcao sin()
class Pendulo:
def __init__(self, v0 = 0.1, x0 = 0, g=9.81, l = 1.0):
self.t = 0
self.v = v0; self.x = x0
self.g = g; self.l = l
def dxdt(self):
return self.v
def dvdt(self):
return -(self.g / self.l) * sin(self.x)
def step(self,dt = 0.001):
x0, v0 = self.x, self.v
xf = x0 + self.dxdt() * dt
vf = v0 + self.dvdt() * dt
self.x, self.v = xf, vf
self.t += dt
## Para usar:
a = Pendulo()
for i in xrange(10000):
print a.t, a.x, a.v
a.step()
Exemplo: pendulo simples
from math import sin # apenas a funcao sin()
class Pendulo:
def __init__(self, v0 = 0.1, x0 = 0, g=9.81, l = 1.0):
self.t = 0
self.v = v0; self.x = x0
self.g = g; self.l = l
def dxdt(self):
return self.v
def dvdt(self):
return -(self.g / self.l) * sin(self.x)
def step(self,dt = 0.001):
x0, v0 = self.x, self.v
xf = x0 + self.dxdt() * dt
vf = v0 + self.dvdt() * dt
self.x, self.v = xf, vf
self.t += dt
## Para usar:
a = Pendulo()
for i in xrange(10000):
print a.t, a.x, a.v
a.step()
Geeky stuffVariavel para uma funcao
Variaveis podem receber funcoes:def myFunc(x):
print x*2
a = myFunc
a(4) # 8 !
Em C voce nao entenderia de primeira como aqui!
Funcoes podem ser parametro de outras funcoes!
Geeky stuffPickle/Unpickle
Salva variaveis em arquivos:
import pickle
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
c = [a, b, "hohoho"]
# escreve em um arquivo
f = open("saida_pickle.txt", "w")
pickle.dump(c, f)
f.close()
Geeky stuffPickle/Unpickle
Carrega variaveis de um arquivo:
import pickle
# le de um arquivo
# (pode ser rodado em outra janela!)
f = open("saida_pickle.txt", "r")
d = pickle.load(f)
f.close()
print d
Where to go now?
• Python 101:www.rexx.com/~dkuhlman/python_101/python_101.html
• The Python Tutorial:docs.python.org/tutorial/
• Python Lib Reference:docs.python.org/library/
• Code like a Pythonista:python.net/~goodger/projects/pycon/2007/
idiomatic/handout.html