17a aula

Propaganda
Física Computacional
1.
2.
3.
4.
5.
Revisão de Python:
1.
2.
O que é, features.
Tipos básicos e complexos.
1.
2.
3.
Listas,
Tuples,
Dicionários.
Vectores
Ciclos.
Funções.
Introspecção.
14-12-2009
[email protected]
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
1

O Python é uma poderosa linguagem de programação
interpretada.
◦ Outras linguagens semelhantes são o Perl, Ruby ou Java.

Funcionalidades interessantes :
◦ A indentação obrigatória nos programas,
◦ Rápido “prototyping” (teste) de soluções.
 É fácil de utilizar para escrever programas rápidos, funcionando como
caixa de testes (sandbox) para códigos mais complexos, mesmo em
outras linguagens.
◦ “Batteries included”: o Python já inclui várias bibliotecas com
soluções prontas a utilizar.
◦ Modularidade: o Python permite incorporar outras (shared)
libraries (módulos) escritas em (outras) linguagens.
◦ É compatível com múltiplos sistemas operativos (Windows, MacOS,
Unix, Linux, OS/2,…).
Revisão – o que é o Python
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
2

Vários tipos de dados disponíveis:
◦ floats, inteiros de tamanho ilimitado, complexos, strings, listas e dicionários.
◦ constructores: float, int, complex, str, list, dict.
◦ oz dados são “dynamically typed” mas “strongly typed”.

Suporta OOP através da implementação de classes e herança
◦ A privacidade de membros não é assegurada.
Podemos agrupar o código em bibliotecas (“módulos” e
“pacotes”).
 Utilização de exceptions standard e personalizadas.
 Gestão automática de memória.
 A distribuição standard já inclui um integrated development
environment (IDE) chamado IDLE.

Python - features
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
3

Podem utilizar o Python como
“calculadora de bolso”:
#!/usr/bin/python
print "Hello, FC!"
from math import sin,pi
b = 2*pi
sin(b)
#complex numbers
a = 3+2j
a.real
a.imag
abs(a)
“Hello, FC”
-2.4492935982947064e-16
3.0
2.0
3.6055512754639896

Podem recorrer a funções
e constantes definidas em
bibliotecas através da
keyword import.

O tipo de uma variável é
detectador durante a
atribuição.

O Python suporta
nativamente números
complexos. Podem ser
escritos através da
notação x +yj ou através
do constructor do tipo
complex(x,y).
Python – operações básicas
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
4

O Python permite a declaração de strings através de três
delimitadores:
◦ a = “uma string”,
◦ b = „ outra string,‟
◦ c = “”” multi-line string com 3 linhas \n\n\n “””


Os caracteres especiais como “\n”, “\t”, etc., continuam a ser
válidos.
Podem ser algumas operações com strings:
◦ A soma é permitida e a multiplicação por inteiros são permitidas.
Hello WorldHello World
d
lo World
llo W He orld
<type 'str'>
a,b = "Hello”, „ „
a+=b
c = a + 'World'
a = c.strip()
print a*2 #multiplication
print a[-1] #negative indexing
print a[3:] #slicing
print a[2:-4]+' '+a[:2]+' '+a[-4:]
print type(a) #type identification
Python – revisão de Strings
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
5
a,b = False, 1
if a == True:
print "It's true"
elif b >0:
print 'b is ' + str(b) + """ which is ">" than 0 """
else:
print """A multiple line string
with lots of useless info and using several ' ' ' ' and "" ".
String only stops with 3 " """

A notar:
◦
◦
◦
◦
◦
Atribuição simultânea de valores a várias variáveis.
Variáveis booleanas.
Comparações com if, elif e else.
Três tipos de delimitadores para strings („,”,”””).
Conversão de um número inteiro para string, de modo
que o Python permita a sua soma com outras strings.
Pequeno exemplo
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
6

Existem vários tipos de vectores em Python:
◦ lists (mutáveis).
◦ tuples (imutáveis).
◦ dicionários (keys imutáveis, dados mutáveis).
a = [4,5,3]
print a
print a[0]
print a[1:]
b = []
print b
b.append(4)
print b
b.append(a)
print b
print type(b)

[4, 5, 3]
4
[5, 3]
[]
[4]
[4, [4, 5, 3]]
<type 'list'>

A indexação e slicing
são suportadas.
Listas podem conter
outros vectores.
Python – listas (revisão)
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
7
Tuples são vectores com conteúdos inalteráveis.
 A indexação e slicing são suportadas.
 Tuples podem conter outros vectores.

a = (4,5,3)
print a
print a[0]
print a[1:]
b = ()
print b
b.append(4) #erro
print type(b)
[4, 5, 3]
4
[5, 3]
[]
Traceback (most recent call
last):
File "<pyshell#5>", line 1, in
<module>
b.append(3)
AttributeError: 'tuple' object
has no attribute 'append'
<type 'list'>
Tuples – analogia com listas
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
8
dicionários são vectores com índices heterogéneos.
 A indexação (keys) é feita com imutáveis.
 dicts podem conter outros vectores.

>>> a = {}
>>> print type(a)
<type 'dict'>
>>> a[1] = "hello"
>>> a['pi'] = 3.14
>>> print a
{1: 'hello', 'pi': 3.1400000000000001}
>>> a[0]
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
a[0]
KeyError: 0
>>> a[1]
'hello'
Dicionários – analogia com listas
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
9

Para saber o tamanho de uma lista ou string:
◦ len(VARIAVEL).

Para alterarmos um elemento de uma lista, usamos o seu
índice (ex: a[2] = 3).
◦ Isto só funciona com listas e dicionários.

Para criarmos uma lista de inteiros começando em 0 e
terminando em len(VARIAVEL) – 1:
◦ range(len(VARIAVEL)).
◦ xrange() para grandes números.
a = [4,5,3]
print a
print len(a)
print range(len(a))
i = 0
while i < len(a):
print a[i]
i+=1
[4, 5, 3]
3
[0, 1, 2]
4
5
3
Semelhanças entre vectores e strings
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
10


O exemplo anterior explicita um ciclo “while” (análogo a
C/C++).
Em Python, existe uma nova forma de criar ciclos, através
de iteráveis.
◦ Assim podemos iterar ao longo de uma lista de valores que não tenha apenas
números ordenados.
Equivalentes!
a = [4,5,3]
print a
for i in a:
print i
[4, 5, 3]
4
5
3
a = [4,5,3]
print a
for i in range(len(a)):
print a[i]
Ciclos – While e Loop
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
11

As funções em Python podem ser definidas de uma forma
análoga a C/C++.
◦ É necessário ter muito cuidado com a indentação do código.
◦ Os argumentos podem ser comutados (a explicar mais tarde).
>>> def MyFunc(firstvariable = 3,secondvariable = 5):
return firstvariable+secondvariable
>>> print MyFunc()
8
>>> print MyFunc(secondvariable=6)
9

Os argumentos podem ser comutados, chamando apenas
os que precisamos (desde que devidamente identificados!).
Funções em Python
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
12

O próprio nome da função é uma referência à mesma.
 Útil para a realização de recursões ou ponteiros para
funções.
>>> MyFunc
<function MyFunc at 0x027F14B0>
>>> type(MyFunc)
<type 'function'>
>>> a = MyFunc
>>> a(2,3)
5
>>> dir(a)
['__call__', '__class__', '__closure__', '__code__',
(...)
'__name__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'func_closure', 'func_code',
'func_defaults', 'func_dict', 'func_doc',
'func_globals', 'func_name']
Funções em Python – cont.(2)
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
13

Analogamente ao que era permitido em ROOT, o Python possui
funcionalidades de introspecção.



Qualquer objecto em Python pode ser observado introspectivamente.
Apresentamos aqui algumas funções frequentemente utilizadas.
help():
◦ Informação geral sobre o objecto. Eventual descrição dos constructores e outros
métodos

dir():
◦ Lista todos os membros e métodos desse objecto

type():
◦ retorna o tipo de objecto que usamos como argumento
>>> a = "Ola"
>>> help(a)
no Python documentation found for 'Ola'
>>> type(a)
<type 'str'>
>>> dir(a)
['__add__', '__class__', '__contains__', '__delattr__', '__doc__',
(…)
'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase',
'title', 'translate', 'upper', 'zfill']
Introspecção em Python
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
14

Podem utilizar a introspecção de forma recursiva:

Os comentários são feitos linha a linha com “#”.

Linhas vazias são ignoradas pelo compilador de Python.

Em modo interactivo, podem aceder ao resultado da última
operação através da variável “_”.

Analogamente ao “system(“Pause”) utilizado em Windows
para que a janela não feche imediatamente, podem usar:
◦ help(var1.method1().retvar).
◦ import math
◦ dir(math)
raw_input("\nPrima uma tecla para sair.")
Python - dicas
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
15

Mais sobre funções.

Classes, OOP.

Excepções (?)

Memoization (?)

Podem trazer o laptop para a aula teórica, não sendo
obrigatório. Os exemplos serão treinados na aula
prática.
Próximas aulas
14-12-2009
Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins
16
Download