Mini Cur So Python 1

65
Minicurso de Python B´ asico Ana L´ ıvia S. S. Almeida, Guilherme Giordano P. Guimar˜ aes 25 de junho de 2013 Ana L´ ıvia S. S. Almeida,Guilherme Giordano P. Guimar˜ aes Minicurso de Python B´ asico

description

Minicruso de Python

Transcript of Mini Cur So Python 1

Page 1: Mini Cur So Python 1

Minicurso de Python Basico

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes

25 de junho de 2013

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 2: Mini Cur So Python 1

Introducao a Linguagem Python

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 3: Mini Cur So Python 1

O que e Python?

Python e uma linguagem de altıssimo nıvel, orientada a objetos,de tipagem dinamica forte, interativa e interpretada. Possui umasintaxe clara e concisa, que favorece a legibilidade do codigo,tornando a linguagem mais produtiva.E possıvel integrar o Pythona outras linguagens como C e Fortran.

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 4: Mini Cur So Python 1

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 Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 5: Mini Cur So Python 1

Informacoes sobre o Python

•Os arquivos sao identificados pela extensao “.py” (arquivo.py)•Nao ha declaracao de tipo de variaveis, nem abertura efechamento de chaves. Porem, a identacao e extremamenteimportante!!•Aceita os tipos de dados basicos (int, float, long int, boolean,char...)•Para comentar uma linha, basta inserir “]” no inıcio da linha•Variaveis no interpretador Python sao criadas atraves daatribuicao e destruıdas 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), dıgitos ousublinhados ( ), sendo que maiusculas e minusculas saoconsideradas diferentes.

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 6: Mini Cur So Python 1

Tipos de Dados

Alem disso, existem tipos que funcionam como colecoes. Osprincipais sao:•Lista•Tupla•DicionarioOs tipos no Python podem ser•Mutaveis: permitem que os conteudos das variaveis sejamalterados•Imutaveis: nao permitem que os conteudos das variaveis sejamalterados

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 7: Mini Cur So Python 1

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 Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 8: Mini Cur So Python 1

Tipos - numeros

Saıda:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 9: Mini Cur So Python 1

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 inteiroimediatamente inferior, mesmo quando aplicado em numeros reais,porem neste caso o resultado sera real tambem•Modulo (): retorna o resto da divisao.•Potencia (**): pode ser usada para calcular a raiz, atraves deexpoentes fracionarios (exemplo: 100 ** 0.5)•Positivo (+)•Negativo (-) ]

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 10: Mini Cur So Python 1

Operacoes

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

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 11: Mini Cur So Python 1

Tipos - Textos

A inicializacao de strings pode ser:•Com aspas simples ou duplas•Em varias linhas consecutivas, desde que seja entre tres aspassimples ou duplas•Sem expansao de caracteres (exemplo: s = r’\n’, em que scontera os caracteres “\” e “n”)

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 12: Mini Cur So Python 1

Tipos - Textos

Fatias (slices) de strings podem ser obtidas colocando ındices entrecolchetes apos a string.

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 13: Mini Cur So Python 1

Tipos - Textos - Metodos

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 14: Mini Cur So Python 1

Tipos - Textos - Metodos

Saıda

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 15: Mini Cur So Python 1

Tipos - Listas

•Listas sao colecoes heterogeneas de objetos, que podem ser dequalquer tipo, inclusive outras listas•As listas no Python sao mutaveis, podendo ser alteradas aqualquer momento•Listas podem ser fatiadas da mesma forma que as strings, mascomo as listas sao mutaveis, e possıvel fazer atribuicoes a itens dalista•Estruturas de dados nativas: list•Crescem ate o limite da memoria•Metodos para adicionar, remover, ordenar, procurar, contar•Listas sao delimitadas por [ e ]•Sintaxe: lista = [a, b, ..., z]

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 16: Mini Cur So Python 1

Operacoes com listas

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 17: Mini Cur So Python 1

Operacoes com listas

Saıda:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 18: Mini Cur So Python 1

Tipos - Tuplas

•Estruturas de dados nativas: tuple•Colecoes de objetos heterogeneos•Crescem ate o limite da memoria•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 vırgula•Pode ter ou nao parenteses para delimitar a tupla•Particularidade: tupla com apenas um elemento e representadacomo: t1 = (1,)

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 19: Mini Cur So Python 1

Tipos - Tuplas

•Os elementos de uma tupla podem ser referenciados da mesmaforma 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 elementosnao podem sofrer atribuicao, pois isto modificaria a referencia aoobjeto.•As tuplas sao mais eficientes do que as listas convencionais, poisconsomem menos recursos computacionais (memoria), por seremestruturas mais simples, tal como as strings imutaveis em relacaoas strings mutaveis.

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 20: Mini Cur So Python 1

Operacoes com tuplas

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 21: Mini Cur So Python 1

Operacoes com tuplas

Saıda:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 22: Mini Cur So Python 1

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 listasE muito mais!

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 23: Mini Cur So Python 1

Estruturas de Controle:

Controle de Fluxo if-else

E muito comum em um programa que certos conjuntos deinstrucoes sejam executados de forma condicional, em casos comovalidar entradas de dados, por exemplo.•Sintaxe:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 24: Mini Cur So Python 1

Estruturas de Controle:

Controle de Fluxo if-else

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

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 25: Mini Cur So Python 1

Estruturas de Controle:

Controle de Fluxo if-else

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 26: Mini Cur So Python 1

Estruturas de Controle:

Controle de Fluxo if-else

Saıda:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 27: Mini Cur So Python 1

Estruturas de Controle:

Lacos

•Lacos (loops) sao estruturas de repeticao, geralmente usados paraprocessar colecoes de dados, tais como linhas de um arquivo ouregistros de um banco de dados, que precisam ser processados porum mesmo bloco de codigo.

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 28: Mini Cur So Python 1

Estruturas de Controle:

Lacos - for

•E a estrutura de repeticao mais usada no Python. A instrucaoaceita nao so sequencias estaticas, mas tambem sequenciasgeradas por iteradores•Iteradores sao estruturas que permitem iteracoes, ou seja, acessoaos itens de uma colecao de elementos, de forma sequencial•Durante a execucao de um laco for, a referencia aponta para umelemento da sequencia•A cada iteracao, a referencia e atualizada, para que o bloco decodigo do for processe o elemento correspondente

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 29: Mini Cur So Python 1

Estruturas de Controle:

Lacos - for

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 30: Mini Cur So Python 1

Estruturas de Controle:

Lacos - for

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 31: Mini Cur So Python 1

Estruturas de Controle:

Lacos - for

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 32: Mini Cur So Python 1

A Funcao range()

A funcao range(m, n, p), e muito util em lacos, pois retorna umalista de inteiros, comecando em m e menores que n, em passos decomprimento p, que podem ser usados como sequencia para o laco.A funcao gera uma lista contendo progressoes aritmeticas

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 33: Mini Cur So Python 1

Estruturas de Controle:

while

•Executa um bloco de codigo atendendo a uma condicao•O laco while e adequado quando nao ha como determinarquantas iteracoes vao ocorrer e nao ha uma sequencia a seguirExemplo:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 34: Mini Cur So Python 1

Funcoes

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

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 35: Mini Cur So Python 1

Funcoes

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 36: Mini Cur So Python 1

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 Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 37: Mini Cur So Python 1

Procedimentos

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 38: Mini Cur So Python 1

Computacao Cientıfica usando Python

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 39: Mini Cur So Python 1

Workflow Cientıfico

Objetivo:Apresentar os elementos basicos da linguagemPython para escrever programas para solucao computacionalde problemas cientıficos, manipular, processar e visualizar osdadosAplicacoes:•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 relatorios e publicacoes•Apresentacoes

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 40: Mini Cur So Python 1

NumPy

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 41: Mini Cur So Python 1

E uma biblioteca para manipulacao de arrays multidimensionais ematrizes.• Operacoes rapidas em arrays (funcoes vetorizadas)• Diferenca com relacao a listas tradicionais do Python- Vetor homogeneo- Muito mais eficientes do que as listas- Numero de elemento deve ser conhecido a priori. O array podeser redimensionado posteriormente- Muito eficiente (implementado em C)

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 42: Mini Cur So Python 1

Criando vetores (arrays) em Numpy

Arrays NumPy podem ser criados a partir de estruturas de dadosdo Python (listas, tuplas) ou a partir de funcoes especıficas paracriacao 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 Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 43: Mini Cur So Python 1

Criando vetores (arrays) em Numpy

•random.random((m,n)) → vetor mxn de numeros 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 ouuma tupla•arrange(i,f,p) → vetor com inıcio i, final f e passo p•linspace(i,f,n) → vetro com n numeros de i ate f

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 44: Mini Cur So Python 1

Criando vetores (arrays) em Numpy

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 45: Mini Cur So Python 1

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 Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 46: Mini Cur So Python 1

Criando vetores (arrays) em Numpy

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 47: Mini Cur So Python 1

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 ultima linha de a •a[x:x’,:] → acessa as linhasde x ate a anterior de x’•a[::x,::y] → acessa os elementos nas linhas 0 e x, e nas colunas 0e y

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 48: Mini Cur So Python 1

Operacoes com Arryas

NumPy suporta operacoes entre arrays sem uso de loops (como emc, 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 deb, e cria uma matriz onde cada produto e uma linha.

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 49: Mini Cur So Python 1

Operacoes com Arrays

Exemplo de outer:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 50: Mini Cur So Python 1

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 copia de a•a.conjugate() → retorna o complexo conjugado de a

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 51: Mini Cur So Python 1

Matrizes

Os arrays apresentados ate agora sao do tipo ndarray.Ha um tipode array bidimensional chamado matrix, que possui algumaspropriedas especiais de matrizes:•matrix.I → inversa•matrix.T → transposta•matrix.H → conjugada•matrix.A → transforma a matriz em um array•O operador * efetua operacoes usuais de algebra linear, tipomatriz-matriz, matriz-vetor, vetor-matriz. •O modulonumpy.linalg possui diversas funcoes de algebra linear, como asolucao de sistemas de equacoes lineares por exemplo.x = linalg.solve((A,B))

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 52: Mini Cur So Python 1

Polinomios

O numpy define tambem um tipo para polinomios, com operacoesaritimeticas, derivacao, integracao e avaliacao de polinomios.E possiıvel tambem fazer o ajuste de curvas atraves do Metodo dosMınimos Quadrados.

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 53: Mini Cur So Python 1

SciPy

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 54: Mini Cur So Python 1

E uma colecao de algoritmos matematicos e funcoes utilitarias,implementadas sobre o NumPy, dividas em sub-modulos:•constants: Constantes fısicas•fftpack: Transformada Rapida de Fourier•integrate: Integracao numerica e ODE solvers•interpolate: Interpolacao (Splines)•stats: Distribuicoes e funcoes estatısticas•optimize: Otimizacao•sparse: Matrizes esparsas•linalg: Algebra Linear•io: Entrada e Saıda•signal: Processamendo digital de sinais•ndimage: Processamento digital de imagens

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 55: Mini Cur So Python 1

matplotlib

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 56: Mini Cur So Python 1

matplotlib

O matplotlib e uma biblioteca que permite a visualizacao de dados2D seguindo o estilo do MATLAB. Gera graficos de qualidade parapublicacoes,exporta para diversos formatos e tem a possibilidade deembutir em interfaces graficas (Qt, GTK, ...).• Baseado no NumPy e SciPy •pylab: modulo com diversasfuncoes para plotar graficos de•forma facil

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 57: Mini Cur So Python 1

matplotlib

Exepmlo usando o plot(x,y)

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 58: Mini Cur So Python 1

Grafico Plotado:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 59: Mini Cur So Python 1

matplotlib

Adicionando mais informacoes ao grafico:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 60: Mini Cur So Python 1

matplotlib

Grafico Plotado:

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 61: Mini Cur So Python 1

Ha muitas situacoes praticas e aplicadas onde nao e possıvel ou ebastante complicado detrminar a solucao analıtica(ou exata) deEquacoes Diferenciais Ordinarias. Neste caso, e necessario utilizarmetodos numericos. Uma forama numerica de se determinar asolucao de uma EDO, e utilizando Metodo de Euler Expliıcitouk+1 = uk + 4tf (uk ,tk)

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 62: Mini Cur So Python 1

Resolucao de EDO usando Python

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 63: Mini Cur So Python 1

Resolucao de EDO usando Python

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 64: Mini Cur So Python 1

Resolucao de EDO usando Scipy

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico

Page 65: Mini Cur So Python 1

Muito Obrigado!Ana Lıvia Soares Silva de Almeida - Bolsista do Grupo deEducacao Tutorial da Engenharia ComputacionalGuilherme Giordano de Paula Guimaraes - Bolsista do Programa deEducacao Tutorial da Engenharia Civil-Universidade Federal de Juiz de Fora

Ana Lıvia S. S. Almeida,Guilherme Giordano P. Guimaraes Minicurso de Python Basico