Transcription of Introdução à linguagem de programação Python
1 Introdu o linguagem de programa oPythonRafael Sachetto Oliveira11 Departamento de Ci ncia da Computa oUniversidade Federal de S o Jo o del ReiXIV Semana de Computa o da UFJFR afael Sachetto OliveiraIntrodu o linguagem de programa o PythonQuem esse cara?Formado em Ci ncia da Computa o pela em modelagem computacional pela em Ci ncia da Computa o pela rio Python desde rio Linux desde de software de c digo Sachetto OliveiraIntrodu o linguagem de programa o PythonSobre a linguagemCriada por Guido van Rossum em 1991 Origem do nome: grupo de humoristasMontyPythonLinguagem de alt ssimo n vel (VHLL)Sintaxe simples e f cil de ser assimiladaF cil de usar, aprender, lerOrientada objetos, estruturada e funcionalTipagem forte e din micaInterpretadaAmbiente interativoRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonMais sobre a linguagemExtremamente port vel (Multiplataforma)Unix/Linux, Windows, Mac, PalmOS, WindowsCE, RiscOS,VxWorks, QNX, OS/2, OS/390, AS/400, PlayStation, SharpZaurus, BeOS, para byte codecompila o impl cita e autom ticaGerenciamento autom tico mem ria (Garbage Collector)
2 Poderosas estruturas de dados nativasListasDicion riosLicen a GPL-compat velRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonAinda mais sobre a linguagemTudo objetoPacotes, m dulos, classes, fun esTratamento exce esSobrecarga de operadoresIdenta o para estrutura de blocoO resto sintaxe convencionalRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonPor que usar Python ?Uma das linguagens mais divertidas que se tematualmenteJ vem com baterias inclusas (vasto repert rio debibliotecas)Prot tipos r pidos sem preocupa o com detalhes deimplementa o da linguagemLinguagem Interpretada: evita codifica-compila-roda Bem menos linhas de c digo comparando com Java,C/C++..Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonQuem usa?Google (v rios projetos)NASA (v rios projetos)RedHat (ferramentas instala o Linux)Muitas Universidades, como MIT, e Sachetto OliveiraIntrodu o linguagem de programa o PythonVamos Come ar!
3 Esque a declara es de tipos de vari veisEsque a begin e endEsque a { e }Esque a ;Se voc j era organizado, n o sofrer !A identa o obrigat ria! :)Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonShell Interativa timo para aprender sobre a linguagemExperimentar bibliotecasTestar novos m dulosUsar como calculadoraExemplos>> print "opa!"opa!>> x = 2**3>> x / 24>>Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonTipos de dados b sicosN meros: int, long, float, complexStrings, Unicode: imut veisTuplas: imut veisListas, dicion rios e conjuntos: containers , mut veisRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonVari veis Num ricasS o tipos imut veis:num_int = 13num_int_long = 13 Lnum_real = Sachetto OliveiraIntrodu o linguagem de programa o PythonStringsS o imut veisArmazenam texto (conjuntos de caracteres)Crescem at o limite da mem riaSubstituemchare vetor decharAcesso sequencial, em fatias ou direto por ndiceImplementadas com arraysPossuem diversos m todos.
4 Procurar, contar, mudar caixa, Sachetto OliveiraIntrodu o linguagem de programa o PythonString - Exemplos>>"hello"+"world" # concatena o helloworld >>"hello"*3 #repeti o hellohellohello >>"hello"[0] h >>"hello"[-1] # (do final) o >>"hello"[1:4] # "slicing" ell >>len("hello") # tamanho5>>"hello" < "jello" # compara oTrue>>"e" in "hello" # buscaTrueRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonString - M todosPrincipais m todos: split, count, index, join, lower, upper,replacesplit()var = o guia do mochileiro das galaxias ()Sa da[ o , guia , do , mochileiro , das , galaxias ]count()var = o guia do mochileiro das galaxias ( guia )Sa da1 Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonString - M todosjoin()var = o guia do mochileiro das galaxias var2 = ()print"/".join(var2)Sa dao/guia/do/mochileiro/das/galaxiasRafae l Sachetto OliveiraIntrodu o linguagem de programa o PythonListas e tuplasArmazenam cole es de objetos heterog neosCrescem at o limite da mem riavetores, matrizes, registros e listas encadeadasAcesso sequencial, em fatias ou direto por ndiceImplementadas com arraysPossuem diversos m todos: adicionar, remover, ordenar,procurar, contarListas s o mut veis e tuplas s o imut veisListas s o delimitadas por [ e ] e tuplas s o delimitadospor ( e )Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonTuplasExemplotupla = ( MG , Juiz de Fora )printtupla[1]Sa daJuiz de ForaRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonListasArrays flex veisa = [98, "bottles of beer", ["on", "the", "wall"]]Opera es comunsa+b, a*3, a[0], a[-1], a[1:], len(a)Item e slicea[0] -> 98a[1.]
5 2] -> ["bottles", "of", "beer"]del a[-1]-> [98, "bottles", "of", "beer"]Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonListasExemploa = range(5) (5) (0, 42) () ()printaSa da[0, 1, 2, 3, 4][0, 1, 2, 3, 4, 5][42, 0, 1, 2, 3, 4, 5][5, 4, 3, 2, 1, 0, 42][0, 1, 2, 3, 4, 5, 42]Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonDicion riosArmazenam pares chave/valor de forma desordenadaCrescem at o limite da mem riaAcesso sequencial, em fatias ou direto pela chaveImplementados com tabelashashPossuem diversos m todos: adicionar, remover, procurar,contarRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonDicion riosExemplo>>>estoque = { peras : 5, laranjas : 2}>>>estoque[ peras ]5>>>estoque[ peras ] = 4>>>estoque[ bananas ] = 2>>> ( melancias , Em falta ) Em falta >>>estoque{ bananas : 2, laranjas : 2, peras : 4}>>> uvas in estoqueFalse>>> ( bananas )True>>> ()[( laranjas , 2), ( bananas , 2), ( peras , 4)]Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonSintaxeVari veisIdentificadores: (underscore ou letra) + (qualquer n merode d gitos ou underscores)Case sensitive (Var6=var)Nomes s o criados quando atribu dos pela primeira vezNomes devem ser atribu dos antes de serem referenciadosspam = Spam #basicospam, ham = yum , YUM #tuplaspam = ham = lunch #multiplospam + foo #Erro!
6 !Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonSintaxeAtribui oAtribui o manipula refer nciasx = y n o faz uma c pia de yx = y faz x referenciar ao objeto que y referenciaBastante til e eficiente,mas cuidado!Exemplo:>>> a = [1, 2, 3]>>> b = a>>> (4)>>> print b[1, 2, 3, 4]Para obter um novo objeto, ao inv s de uma refer nciapara um objeto existente deve-se usar o m dulocopyRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonAtribui o - ExemploRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonAtribui o - Outro ExemploRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonFormatando a sa da>>> print "numeros: %d e %05d" % (1,2)numeros: 1 e 00002print " linguagem : %s" % Python linguagem : PythonRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonEstruturas de ControleIf-Elseifexp:#comandoselse:#coma ndosIf-Else-If-Elseifexp:#comandoselifex p:#comandoselse:#comandosRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonEstruturas de ControleForfornuminrange(200).
7 PrintnumForforletrain Python :printletraWhilewhileexp:#comandosifexp: breakelifexp:continue#comandosRafael Sachetto OliveiraIntrodu o linguagem de programa o Pythonlist comprehensionseGeneratorslist comprehensionspares = [iforiinrange(100)if(i%2) == 0]impares = [iforiinrange(100)if(i%2) != 0]lista_zeros = [0foriinrange(10)]matriz = [ [ 0forjinrange(3) ]foriinrange(5)]Generatorspares = (iforiinrange(100)if(i%2) == 0) ()# ()#2soma_impares = sum (iforiinrange(100)if(i%2) != 0)Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonFun es e procedimentosdefnome(arg1, arg2, ..):"""Documentacao"""#comandosreturn#pr ocedimentoreturnexpressao#funcaoExemplod efexemplo(a,b,c):"""Soma tres valores"""returna + b + c>>> exemplo(5,1,3)9 Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonPassagem de par metrosdefchanger (x,y):x = 2#modifica x local apenasy[0] = hi #modifica o objeto compartilhadoRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonArgumentos Opcionais poss vel definir argumentos defaults que n o precisamser passadosdeffunc(a, b, c=10, d=100):printa, b, c, d>>> func(1,2)1 2 10 100>>> func(1,2,3,4)1,2,3,4 Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonArgumentos OpcionaisAviso Importante:O valor default avaliado apenas umavez.
8 Isso faz uma diferen a quando o default um objetomut vel como uma lista, dicion rio, ou inst ncias declasses. Por exemplo, a seguinte fun o acumula osargumentos passados em chamadas subsequentes:deff(a, L=[]) (a)returnL>>>printf(1)[1]>>>printf(2)[1, 2]>>>printf(3)[1, 2, 3]Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonArgumentos OpcionaisPara que esse problema n o aconte a voc pode escrevera fun o anterior da seguinte forma:deff(a, L=None):ifLisNone:L = [] (a)returnLRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonAlgumas fun es teisdir() -> lista atributos de um objetohelp() -> help interativo ou help(objeto), info. sobre objetotype() -> retorna tipo do objetoraw_input() -> prompt de entrada de dadosint(), str(), float().. -> typecastchr(), ord() -> ASCIImax(), min() -> maior e menor de uma string, lista ou tuplaRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonM dulosUm m dulo um arquivo contendo defini es de Python edeclara nome do arquivo o nome do m dulo com o sufixo.
9 Py de um m dulo, o nome do m dulo (como umastring) est dispon vel como o valor da vari vel Sachetto OliveiraIntrodu o linguagem de programa o PythonM # modulo Fibonaccideffib(n):"""Escreve a serie de Fibonacci ate n"""a, b = 0, 1whileb < n:printb,a, b = b, a+bdeffib2(n):"""Retorna a serie de Fibonacci ate n"""result = []a, b = 0, 1whileb < (b)a, b = b, a+breturnresultif__name__=="__main__":fib(10)Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonM dulos e fun esExemplo>>> import fibo>>> (1000)1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987>>> (100)[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]>>> fibo >>> help(fibo)Help on module (n)Escreve a serie de Fibonacci ate nfib2(n)Retorna a serie de Fibonacci ate nRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonExce esInformar que uma condi o anormal ocorreua = [ 1, 2, 3 ]try:printa[5]except IndexError:print"Posicao inexistente!
10 "finally:print"Fim do teste"Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonManipulando ArquivosLendo arquivosarq = open( , r )# ()Escrevendo arquivosarq = open( , w )# a , r+ , w+ , a+ ( linha1\n ) ( linha2\n ) ()Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonManipulando ArquivosAlguns M todos:read([nbytes]), readline(), readlines()write(string), writelines(list)seek(pos[, how]), tell()flush(), close()Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonPrograma exemploConta palavrasPedir ArquivoLer ArquivoContar quantas vezes aparece cada palavraListar as palavras em ordem alfab tica, junto com o seun mero de repeti es no textoRafael Sachetto OliveiraIntrodu o linguagem de programa o PythonPrograma ExemploConta palavrasp_count = {}arqnom = raw_input( Digite o nome do Arquivo: )arq = open(arqnom, r )forlinhainarq: palavras = ()forpalavrainpalavras:p_count[palavra] = (palavra,0) + () palavras = () ()forpalavrainpalavras:print Palavra:%s, Quantidade:%05i %(palavra, p_count[palavra])Rafael Sachetto OliveiraIntrodu o linguagem de programa o PythonGrafos com dicion riosPodemos utilizar dicion rios para representar diversostipos de dados, inclusive grafos!