Curso relâmpago de Python

29
Curso relˆ ampago de Python Fernando Rozenblit Departamento de F´ ısica - UFPE 4 de julho de 2011

Transcript of Curso relâmpago de Python

Page 1: Curso relâmpago de Python

Curso relampago de Python

Fernando Rozenblit

Departamento de Fısica - UFPE

4 de julho de 2011

Page 2: Curso relâmpago de Python

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)

Page 3: Curso relâmpago de Python

Why Python?

“I wrote 20 short programs inPython yesterday. It was

wonderful. Perl, I’m leavingyou.”

(xkcd.com/353)

Page 4: Curso relâmpago de Python

Como executar

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

ou via terminal:

Page 5: Curso relâmpago de Python

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()

Page 6: Curso relâmpago de Python

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

Page 7: Curso relâmpago de Python

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

Page 8: Curso relâmpago de Python

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.

Page 9: Curso relâmpago de Python

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)

Page 10: Curso relâmpago de Python

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"

Page 11: Curso relâmpago de Python

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"

Page 12: Curso relâmpago de Python

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

Page 13: Curso relâmpago de Python

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()

# ...

Page 14: Curso relâmpago de Python

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()

# ...

Page 15: Curso relâmpago de Python

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()

# ...

Page 16: Curso relâmpago de Python

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

Page 17: Curso relâmpago de Python

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

Page 18: Curso relâmpago de Python

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

Page 19: Curso relâmpago de Python

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

# ...

Page 20: Curso relâmpago de Python

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)

Page 21: Curso relâmpago de Python

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!"

Page 22: Curso relâmpago de Python

Classes

Os objetos podem executar comandos ao serem iniciados:class V:

def __init__(self):

print "Djaaaaaaaabo!"

# ...

cara = V() # "Djaaaaaaaabo!"

# ...

Page 23: Curso relâmpago de Python

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()

Page 24: Curso relâmpago de Python

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()

Page 25: Curso relâmpago de Python

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!

Page 26: Curso relâmpago de Python

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()

Page 27: Curso relâmpago de Python

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

Page 28: Curso relâmpago de Python

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

Page 29: Curso relâmpago de Python