Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Curso Relâmpago de Python

Fazer download em pdf ou txt
Fazer download em pdf ou txt
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