Você está na página 1de 29

Curso rel ampago de Python

Fernando Rozenblit
Departamento de F sica - UFPE

4 de julho de 2011

What is Python?

Linguagem de alto n vel (scripting) Busca eleg ancia e simplicidade (leg vel ao

inv es de esperta)
There should be one and preferably

only one obvious way to do it (The Zen of Python)

Why Python?

I wrote 20 short programs in Python yesterday. It was wonderful. Perl, Im leaving you. (xkcd.com/353)

Como executar

Scripts em Python podem ser executados de maneira interativa (no terminal Python):

ou via terminal:

Principais diferen cas


Espa co em branco

Espa cos s ao importantes para delimitar blocos! (Conven c ao: 4 espa cos) C/C++ if (condicao) { faca_algo(); faca_mais_algo(); outra_coisa(); } Python if condicao: faca_algo() faca_mais_algo() outra_coisa()

Final de linha e coment arios

O nal de linha ( ; ) e utilizado quando h a mais de uma express ao na mesma linha: if condicao: faca_algo(); faca_mais_algo(); outra_coisa()

Final de linha e coment arios

O nal de linha ( ; ) e utilizado quando h a mais de uma express ao na mesma linha: if condicao: faca_algo(); faca_mais_algo(); outra_coisa()

Coment arios s ao feitos com #: # isto eh um comentario # bla bla bla .. print "Ola mundo!" # isto eh outro comentario

Vari aveis

N ao e necess ario declarar uma vari avel antes de us a-la: a b # a = "estou guardando uma string" = (2 + 3 + 4)/3.0 ... = b * 3 # e elas podem receber qualquer valor!

c = True c = False # tipos booleanos Os tipos mais comuns est ao presentes: inteiros, doubles e strings.

Imprimindo na tela
Para imprimir vari aveis na tela, utilizamos o print. O formato e parecido 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"] ]

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

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 # ...

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: m edia de uma s erie de dados


Se quisermos tomar a m edia da primeira coluna em um arquivo de dados: 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: shue de intervalos com NumPy


O que seria complicado em C, se torna comum em Python. Para um shue no intervalo entre ocorr encias: 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): random.shuffle(delays) for delay in delays: print delay # loop 10 vezes # embaralha os intervalos # finalmente os imprime

Exemplo: recebendo par ametros da linha de comando

Para receber par ametros: 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 # ...

Denindo fun c oes


Fun c oes podem ser denidas 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)

Denindo novos tipos (classes!)


Novos tipos (classes) podem ser denidos para abstrair conceitos e organizar fun c oes: 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: p endulo 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

Exemplo: p endulo 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 stu
Vari avel para uma fun c ao

Vari aveis podem receber fun c oes: def myFunc(x): print x*2 a = myFunc a(4)

# 8 !

Em C voc e n ao entenderia de primeira como aqui! Fun c oes podem ser par ametro de outras fun c oes!

Geeky stu
Pickle/Unpickle

Salva vari aveis 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 stu
Pickle/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

Você também pode gostar