Física Computacional 1. 2. 3. 4. 5. Python: 1. 2. O que é, features Instalação 1. 2. “Calculadora”, “Hello World”, Números complexos. 1. 2. Operações básicas, Slicing. Operações básicas: Exemplo com instruções de comparação. Strings: Listas - introdução 7-12-2009 [email protected] Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 1 O Python é uma linguagem de programação simples e poderosa. Outras linguagens semelhantes são o Perl, Ruby ou Java. Funcionalidades interessantes em Python : ◦ A indentação é obrigatória nos programas, simplificando a leitura de código a posteriori . ◦ É rápida e fácil de utilizar para escrever programas rápidos, podendo funcionar como caixa de testes (sandbox) para códigos mais complexos, mesmo em outras linguagens. ◦ “Batteries included”: a distribuição standard de Python já inclui uma enorme variedade de bibliotecas com soluções prontas a utilizar (web, regular expressions, I/O). ◦ Modularidade: o Python permite incorporar outras (shared) libraries (módulos) escritas em linguagens compiladas como C/C++. ◦ Corre em practicamente todos os sistemas operativos (Windows, MacOS, Unix, Linux, OS/2,…). O que é o Python 7-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. Suporta OOP através da implementação de classes e herança. Podemos agrupar o código em bibliotecas (“módulos” e “pacotes”) , para maior flexibilidade. Utilização de exceptions standard e personalizadas. Os tipos de dados são “dynamically typed”. No entanto, é impossível misturar tipos incompatíveis sem obter um erro (excepção). Gestão automática de memória (melhor que em Java). A distribuição standard de Python já inclui um integrated development environment (IDE) chamado IDLE, que iremos utilizar nas próximas aulas. Python - features 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 3 Instalem o Python em http://www.python.org/download/ (versão 2.6.4 para Windows/Linux/MacOS). Para quem já tiver o Python instalado, qualquer versão >= 2.4 será suficiente. Em sistemas Linux, o Python já vem instalado por default. Em practicamente todos os sistemas operativos, existe um automatic installer, pelo que a tarefa é muito simplificada. Para os próximos exemplos, podem começar o Python em linha de comandos. ◦ Em Linux/Unix/MacOS, escrevam simplesmente “python” ◦ Em Windows, Menu Start -> Python 2.x -> Python (command-line) Python - instalação 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 4 Podem utilizar o Python como “calculadora de bolso”: >>> 3+5 8 >>> 3/4 0 >>> 3./4 0.75 >>> from math import sin >>> sin(3.14) 0.0015926529164868282 >>> from math import pi >>> pi 3.1415926535897931 >>> b = 2*pi >>> sin(b) -2.4492935982947064e-16 >>> b 6.2831853071795862 Tal como no ROOT, aqui possuem uma “prompt” onde podem introduzir os comandos (>>>). 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 de um valor à mesma. A utilização de funções é, em primeira aproximação, igual a C++. Python – operações básicas 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 5 A partir da shell de python: ◦ print “Hello World” Se quisermos correr isto a partir de um ficheiro (): #!/usr/bin/python print "Hello, Python!" Em Unix/Linux temos que dar permissões de execução ao ficheiro ◦ chmod +x teste.py A chamada ao ficheiro faz-se: ./test.py Em Windows, os ficheiros .py e pyw são automaticamente corridos pelo Python. ◦ A partir da linha de comandos: ◦ python test.py “Hello World” 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 6 O Python suporta nativamente números complexos, onde a parte imaginária é representada pela letra “j” ou “J”. Podem ser escritos através da notação típica x +yj ou através do constructor do tipo básico complex(x,y). Os membros “real” e “imag” são obtidos directamente, o valor absoluto é calculado através da função global “abs”. >>> 3j + 2J 5j >>> 3j*2J (-6+0j) >>> 3j*complex(0,2) (-6+0j) >>> 3+j*3 Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> 3+j*3 NameError: name 'j' is not defined >>> 3+1j*3 (3+3j) >>> a = 3+2j >>> a.real 3.0 >>> a.imag 2.0 >>> abs(a) 3.6055512754639896 Números complexos 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 7 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 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 8 Como foi visto no exemplo anterior, 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 “”” Para imprimir qualquer uma das strings anteriores, usa-se o comando “print”. Os caracteres especiais como “\n” (new line), “\t” (new tab), etc., continuam a ser válidos aqui. As operações com strings podem ser efectuadas como se de um número se tratasse, com algumas restrições: ◦ A soma é permitida, a subtracção não está definida. ◦ A multiplicação por inteiros é permitida, a divisão não está definida. Strings 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 9 a = "Hello" b = ' ' a+=b c = a + 'World' a = c.strip() print a*2 print a print a[0] print a[-1] print a[3:] print a[:-2] print a[2:-4]+' '+a[:2]+' '+a[-4:] print type(a) Hello WorldHello World Hello World H d lo World Hello Wor llo W He orld <type 'str'> O método “strip()” permite a remoção de caracteres indesejados da string (“cleaning”). Por defeito, remove espaços no final e caracteres de new-line como \n e \r. Exemplo de slicing (a explicar mais tarde com listas). Strings - exemplo 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 10 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 listas!: Simplifidade para definir operações com matrizes. Listas 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 11 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 não funciona com strings. Para criarmos uma lista de inteiros começando em 0 e terminando em len(VARIAVEL) – 1: ◦ range(len(VARIAVEL)). 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 listas e strings - semelhanças 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 12 O Python é case-sensitive como o C/C++. 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: raw_input("\nPrima uma tecla para sair.") Python - dicas 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 13 Mutáveis e imutáveis. Dicionários. Introspecção. Funções. Classes, OOP. 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 7-12-2009 Física Computacional - MEFT 2009/10 – P. Bicudo & P. Martins 14