Você está na página 1de 65

Minicurso de Python Basico

Ana Lvia S. S. Almeida,


Guilherme Giordano P. Guimaraes

25 de junho de 2013

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Introduc
ao `
a Linguagem Python

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

O que e Python?

Python e uma linguagem de altssimo nvel, orientada a objetos,


de tipagem din
amica forte, interativa e interpretada. Possui uma
sintaxe clara e concisa, que favorece a legibilidade do codigo,
possvel integrar o Python
tornando a linguagem mais produtiva.E
a outras linguagens como C e Fortran.

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Por que usar Python?

Facil e simples
Sintaxes limpas
Diversas bibliotecas inclusas
Mais expressiva do que muitas linguagens (C/C++, Perl, Java)
Interativa
Prototipos rapidos
Alta produtividade
Interfaces para outras linguagens como C/C++ e Fortran

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Informacoes sobre o Python


Os arquivos sao identificados pela extensao .py (arquivo.py)
Nao ha declaracao de tipo de variaveis, nem abertura e
fechamento de chaves. Porem, a identacao e extremamente
importante!!
Aceita os tipos de dados basicos (int, float, long int, boolean,
char...)
Para comentar uma linha, basta inserir ] no incio da linha
Variaveis no interpretador Python sao criadas atraves da
atribuicao e destrudas pelo coletor de lixo (garbage colector),
quando nao existem mais referencias a elas.
Nomes das variaveis devem comecar com letra (sem acentuacao)
ou sublinhado ( ) e seguido por letras (sem acentuacao), dgitos ou
sublinhados ( ), sendo que mai
usculas e min
usculas sao
consideradas diferentes.

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos de Dados

Alem disso, existem tipos que funcionam como colecoes. Os


principais sao:
Lista
Tupla
Dicionario
Os tipos no Python podem ser
Mutaveis: permitem que os conte
udos das variaveis sejam
alterados
Imutaveis: nao permitem que os conte
udos das variaveis sejam
alterados

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - numeros
Python oferece alguns tipos numericos na forma de builtins:
Inteiro (int): i = 1
Real de ponto flutuante (float): f = 3.14
Complexo (complex): c = 3 + 4j

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - numeros
Sada:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Operacoes
Operacoes aritmeticas:
Soma (+)
Diferenca (-)
Multiplicacao (*)
Divisao (/): entre dois inteiros funciona igual `a divisao inteira.
Em outros casos, o resultado e real
Divisao inteira (//): o resultado e truncado para o inteiro
imediatamente inferior, mesmo quando aplicado em n
umeros reais,
porem neste caso o resultado sera real tambem
Modulo (): retorna o resto da divisao.
Potencia (**): pode ser usada para calcular a raiz, atraves de
expoentes fracionarios (exemplo: 100 ** 0.5)
Positivo (+)
Negativo (-) ]

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Operacoes

Operacoes logicas:
Menor (<)
Maior (>)
Menor ou igual (<=)
Maior ou igual (>=)
Igual (==)
Diferente (!=)

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - Textos
A inicializacao de strings pode ser:
Com aspas simples ou duplas
Em varias linhas consecutivas, desde que seja entre tres aspas
simples ou duplas
Sem expansao de caracteres (exemplo: s = r\n, em que s
contera os caracteres \ e n)

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - Textos
Fatias (slices) de strings podem ser obtidas colocando ndices entre
colchetes apos a string.

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - Textos - Metodos

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - Textos - Metodos

Sada

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - Listas

Listas sao colecoes heterogeneas de objetos, que podem ser de


qualquer tipo, inclusive outras listas
As listas no Python sao mutaveis, podendo ser alteradas a
qualquer momento
Listas podem ser fatiadas da mesma forma que as strings, mas
como as listas sao mutaveis, e possvel fazer atribuicoes a itens da
lista
Estruturas de dados nativas: list
Crescem ate o limite da mem
oria
Metodos para adicionar, remover, ordenar, procurar, contar
Listas sao delimitadas por [ e ]
Sintaxe: lista = [a, b, ..., z]

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Operacoes com listas

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Operacoes com listas

Sada:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - Tuplas

Estruturas de dados nativas: tuple


Colecoes de objetos heterogeneos
Crescem ate o limite da mem
oria
Acesso sequencial, em fatias ou direto
Metodos para adicionar, remover, ordenar, procurar, contar
Tuplas sao imutaveis, diferentes das listas
Tuplas sao delimitadas por ( e )
Uma tupla e uma colecao de objetos separados por vrgula
Pode ter ou nao parenteses para delimitar a tupla
Particularidade: tupla com apenas um elemento e representada
como: t1 = (1,)

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Tipos - Tuplas

Os elementos de uma tupla podem ser referenciados da mesma


forma que os elementos de uma lista: primeiro elemento = tupla[0]
Listas podem ser convertidas em tuplas: tupla = tuple(lista)
e tuplas podem ser convertidas em listas: lista = list(tupla)
Embora a tupla possa conter elementos mutaveis, esses elementos
nao podem sofrer atribuicao, pois isto modificaria a referencia ao
objeto.
As tuplas sao mais eficientes do que as listas convencionais, pois
consomem menos recursos computacionais (mem
oria), por serem
estruturas mais simples, tal como as strings imutaveis em relacao
`as strings mutaveis.

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Operacoes com tuplas

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Operacoes com tuplas

Sada:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Existem mais tipos!!

Dicionarios
Conjuntos
Listas como Pilhas
Listas como Filas
Funcoes especiais para listas (map, filter, reduce)
Funcoes lambda
Tecnicas especiais de iteracao em listas
E muito mais!

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Controle de Fluxo if-else

muito comum em um programa que certos conjuntos de


E
instrucoes sejam executados de forma condicional, em casos como
validar entradas de dados, por exemplo.
Sintaxe:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Controle de Fluxo if-else

Onde:
<condicao>: sentenca que possa ser avaliada como verdadeira ou
falsa
<bloco de codigo>: sequencia de linhas de comando
As clausulas elif e else sao opcionais e podem existir varios elifs
para o mesmo if, porem apenas um else ao final
Parenteses so sao necessarios para evitar ambiguidades

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Controle de Fluxo if-else

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Controle de Fluxo if-else

Sada:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Lacos

Lacos (loops) sao estruturas de repeticao, geralmente usados para


processar colecoes de dados, tais como linhas de um arquivo ou
registros de um banco de dados, que precisam ser processados por
um mesmo bloco de c
odigo.

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Lacos - for

a estrutura de repeticao mais usada no Python. A instrucao


E
aceita nao so sequencias estaticas, mas tambem sequencias
geradas por iteradores
Iteradores sao estruturas que permitem iterac
oes, ou seja, acesso
aos itens de uma colecao de elementos, de forma sequencial
Durante a execucao de um laco for, a referencia aponta para um
elemento da sequencia
A cada iteracao, a referencia e atualizada, para que o bloco de
codigo do for processe o elemento correspondente

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Lacos - for

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Lacos - for

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
Lacos - for

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

A Func
ao range()

A funcao range(m, n, p), e muito u


til em lacos, pois retorna uma
lista de inteiros, comecando em m e menores que n, em passos de
comprimento p, que podem ser usados como sequencia para o laco.
A funcao gera uma lista contendo progress
oes aritmeticas

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Estruturas de Controle:
while

Executa um bloco de c
odigo atendendo a uma condicao
O laco while e adequado quando nao ha como determinar
quantas iteracoes vao ocorrer e nao ha uma sequencia a seguir
Exemplo:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Funcoes
Funcoes sao blocos de c
odigo identificados por um nome, que
podem receber parametros pre-determinados.
No Python, as funcoes:
Podem retornar ou nao objetos
Aceitam Doc Strings
Aceitam parametros opcionais (com defaults). Se nao for passado
o parametro sera igual ao default definido na funcao
Aceitam que os parametros sejam passados com nome. Neste
caso, a ordem em que os parametros foram passados nao importa
Tem namespace proprio (escopo local), e por isso podem ofuscar
definicoes de escopo global
Podem ter suas propriedades alteradas (geralmente por
decoradores)

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Funcoes

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Algumas funcoes uteis:

dir() lista atributos de um objeto


help() help interativo ou help(objeto), info. sobre objeto
type() retorna tipo do objeto
raw input() prompt de entrada de dados
int(), str(), float()... typecast
chr(), ord() ASCII
max(), min() maior e menor de uma string, lista ou tupla

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Procedimentos

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Computac
ao Cientfica usando Python

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Workflow Cientfico
Objetivo:
Apresentar os elementos basicos da linguagem
Python para escrever programas para solucao computacional
de problemas cientficos, manipular, processar e visualizar os
dados
Aplicacoes:
Gerar dados (simulacao, experimentos)
Manipular e processar os dados
Visualizar os resultados
Para entender, interpretar e validar o que estamos fazendo
Comunicar os resultados
Produzir figuras para relat
orios e publicac
oes
Apresentacoes

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

NumPy

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

uma biblioteca para manipulacao de arrays multidimensionais e


E
matrizes.
Operacoes rapidas em arrays (func
oes vetorizadas)
Diferenca com relacao a listas tradicionais do Python
- Vetor homogeneo
- Muito mais eficientes do que as listas
- N
umero de elemento deve ser conhecido a priori. O array pode
ser redimensionado posteriormente
- Muito eficiente (implementado em C)

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Criando vetores (arrays) em Numpy

Arrays NumPy podem ser criados a partir de estruturas de dados


do Python (listas, tuplas) ou a partir de func
oes especficas para
criacao de arrays.
zeros((m,n)) vetor de 0 (zero),com m linhas, n colunas
ones((m,n)) vetor de 1 (um), com m linha e n colunas
empty((m,n)) vetor vazio, com m linhas e n colunas
zeros like(A) vetor de 0 (zero), no mesmo formato de A
ones like(A) vetor de 1 (um), no mesmo formato de A
empty like(A) vetor vazio, no mesmo formato de A

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Criando vetores (arrays) em Numpy

random.random((m,n)) vetor mxn de n


umeros aleatorios
identity(n) matriz identidade de ordem n, ponto flutuante
array([[1,2,3],[4,5,6]]) cria um array a partir de um lista ou
uma tupla
arrange(i,f,p) vetor com incio i, final f e passo p
linspace(i,f,n) vetro com n n
umeros de i ate f

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Criando vetores (arrays) em Numpy

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Criando vetores (arrays) em Numpy

Outros metodos de arrays:


a.size tamanho do array
a.ndim dimensao do array
a.reshape alterar a ordem do array

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Criando vetores (arrays) em Numpy

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Acesso a arrays

a[x,y] acessa o elemento na posicao x,y de a


a[x,:] ou a[x] acessa a linha x de a
a[:,y] acessa a coluna y de a
a[-1] acessa a u
ltima linha de a a[x:x,:] acessa as linhas
de x ate a anterior de x
a[::x,::y] acessa os elementos nas linhas 0 e x, e nas colunas 0
ey

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Operacoes com Arryas

NumPy suporta operac


oes entre arrays sem uso de loops (como em
c, por exemplo)
a+n soma n unidades aos elementos de a
a*n multiplica os elementos de a por um escalar n
a*b multiplica um array a por outro array b
a**n eleva os elementos de a, a n-esima potencia
dot(a,b) produto escalar entre a e b
cross(a,b) produto vetorial entre a e b
outer(a,b) multiplica cada elemento de a por cada elemento de
b, e cria uma matriz onde cada produto e uma linha.

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Operacoes com Arrays


Exemplo de outer:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Metodos dos vetores

a.sum() retorna a soma dos elementos de a


a.min() retorna o menor elemento de a
a.max() retorna o maior elemento de a
a.mean() retorna a media dos elementos de a
a.std() retorna o desvio padrao dos elementos de a
a.var() retorna a variancia dos elementos de a
a.trace() traco de a
a.copy() retorna a c
opia de a
a.conjugate() retorna o complexo conjugado de a

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Matrizes

Os arrays apresentados ate agora sao do tipo ndarray.Ha um tipo


de array bidimensional chamado matrix, que possui algumas
propriedas especiais de matrizes:
matrix.I inversa
matrix.T transposta
matrix.H conjugada
matrix.A transforma a matriz em um array
O operador * efetua operac
oes usuais de algebra linear, tipo
matriz-matriz, matriz-vetor, vetor-matriz. O m
odulo
numpy.linalg possui diversas func
oes de algebra linear, como a
solucao de sistemas de equac
oes lineares por exemplo.
x = linalg.solve((A,B))

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Polinomios

O numpy define tambem um tipo para polin


omios, com operacoes
aritimeticas, derivacao, integracao e avaliacao de polinomios.
possivel tambem fazer o ajuste de curvas atraves do Metodo dos
E
Mnimos Quadrados.

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

SciPy

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

uma colecao de algoritmos matematicos e funcoes utilitarias,


E
implementadas sobre o NumPy, dividas em sub-m
odulos:
constants: Constantes fsicas
fftpack: Transformada Rapida de Fourier
integrate: Integracao numerica e ODE solvers
interpolate: Interpolacao (Splines)
stats: Distribuicoes e func
oes estatsticas
optimize: Otimizacao
sparse: Matrizes esparsas

linalg: Algebra
Linear
io: Entrada e Sada
signal: Processamendo digital de sinais
ndimage: Processamento digital de imagens

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

matplotlib

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

matplotlib

O matplotlib e uma biblioteca que permite a visualizacao de dados


2D seguindo o estilo do MATLAB. Gera graficos de qualidade para
publicacoes,exporta para diversos formatos e tem a possibilidade de
embutir em interfaces graficas (Qt, GTK, ...).
Baseado no NumPy e SciPy pylab: m
odulo com diversas
funcoes para plotar graficos de
forma facil

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

matplotlib

Exepmlo usando o plot(x,y)

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Grafico Plotado:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

matplotlib

Adicionando mais informac


oes ao grafico:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

matplotlib

Grafico Plotado:

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Ha muitas situacoes praticas e aplicadas onde nao e possvel ou e


bastante complicado detrminar a solucao analtica(ou exata) de
Equacoes Diferenciais Ordinarias. Neste caso, e necessario utilizar
m
etodos num
ericos. Uma forama numerica de se determinar a
solucao de uma EDO, e utilizando Metodo de Euler Explicito
uk+1 = uk + 4tf (uk ,tk )

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Resolucao de EDO usando Python

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Resolucao de EDO usando Python

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Resolucao de EDO usando Scipy

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Muito Obrigado!
Ana Lvia Soares Silva de Almeida - Bolsista do Grupo de
Educacao Tutorial da Engenharia Computacional
Guilherme Giordano de Paula Guimaraes - Bolsista do Programa de
Educacao Tutorial da Engenharia Civil
-Universidade Federal de Juiz de Fora

Ana Lvia S. S. Almeida,Guilherme Giordano P. Guimar


aes

Minicurso de Python B
asico

Você também pode gostar