pythondobsicoweb-131028070251-phpapp02

Embed Size (px)

Citation preview

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    1/224

    Antonio Srgio Nogueira

    Programando em PythonDo Bsico WEB

    1a Edio2012

    1

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    2/224

    Programando em Python Do Bsico WEB

    Nota do Autor

    Agradeo a todos os que me cercam e que tem compartilhadocomigo este sonho de fornecer meus conhecimentos e pesquisasna rea de informtica.

    Aos leitores espero que saibam aproveitar este material didticoescrito com amor, carinho e muito trabalho.A minha filha anessa !ta "ogueira o meu especialagradecimento por confeccionar a capa deste material didtico.

    Antonio #$rgio "ogueira

    2

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    3/224

    Antonio Srgio Nogueira

    Sumrio

    %ntroduo....................................................................................&1. ! interpretador '(thon..........................................................101.1 #ua hist)ria .........................................................................101.2 *icena.................................................................................121.+ so do %nterpretador '(thon................................................1-1.+.1 ual '(thon usar/.............................................................1-1.+.2 '(thon em indos.........................................................1-1.+.2.1 !po 1 %nstalando o Active'(thon.............................131.+.2.2 !po 2 %nstalando o '(thon do '(thon.org................142. '(thon %ntroduo, 5ipos e 6omandos 7sicos...................1&2.1 %nterpretador........................................................................1&2.2 'alavras 8eservadas............................................................1&2.+ 9igitando comandos no %9*E.............................................1&2.: 5ipos de 9ados....................................................................1;2.- "es boolenas......................................................:12.1-.2 !peradores in , is , is not...............................................:+2.13 ariveis............................................................................::2.14 !perador ?........................................................................:-+. 6ontrole de @lu=o e Estrutura de 9ados................................:4

    +

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    4/224

    Programando em Python Do Bsico WEB

    +.1 6ontrole de @lu=o................................................................:4+.1.1 %nstruo hile ...............................................................:4

    +.1.2 %nstruo for ....................................................................:;+.1.+ 6lusulas brea, continue e else ......................................-0+.1.: %nstruo if........................................................................-1+.1.- 6onstruo pass................................................................-++.1.3 5$cnicas de *ao..............................................................-++.2.1 sando *istas como 'ilhas...............................................--+.2.2 sando *istas como @ilas.................................................--+.2.+ @un>es sobre listas filterBC, mapBC, e reduceBC................-3+.2.: AbrangDncia de *istasBlist comprehensionsC....................-4+.2.- ! comando del..................................................................-&+.2.3 5rabalhando com conuntos F sets....................................-&:. @un>es, 8ecurso, E=ceo, Arquivos e G)dulos...............31:.1 @un>es................................................................................31:.1.1 Escopo das variveis.........................................................3+:.1.2 @un>es como parHmetro..................................................3:

    :.1.+ @uno com 2 argumentos................................................3-:.1.: @uno com valores padro ou default.............................3-:.1.- @uno com argumentos opcionais...................................33:.1.3 @uno com conunto de argumentos nomeados .............34:.1.4 @uno lambda .................................................................3&:.2 @un>es recursivas...............................................................3&:.+ @un>es pr$Fdefinidas..........................................................40:.: G)dulos...............................................................................4+:.:.1 G)dulos padro................................................................43:.:.2 'acotes..............................................................................&0:.:.+ %mportando I de m 'acote.............................................&+:.:.: 8eferDncias em m Gesmo 'acote..................................&::.:.- 'acotes em mes de entrada e saJda..................................................&4

    :

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    5/224

    Antonio Srgio Nogueira

    :.-.1 !pera>es com arquivos...................................................;2:.-.2 G$todos do obeto arquivo...............................................;+

    :.-.+ %nterao com sistema operacional...................................;3:.3 @uno varsBC.......................................................................;4:.4 Erros e e=ce>es..................................................................;&:.4.1 6omo ler uma mensagem de erro.....................................;&-. 7iblioteca 'adro.................................................................10+-.1 %nterface com #istema !peracional ..................................10+-.2 G)dulo shutil.....................................................................10+-.+ G)dulo glob......................................................................10:-.: G)dulo s(s........................................................................10:-.- G)dulo math......................................................................10--.3 G)dulo random.................................................................10--.4 G)dulo datetime................................................................103-.& G)dulo Klib........................................................................104-.; G)dulo arra(.....................................................................104-.10 G)dulo collection............................................................10&

    -.11 G)dulo decimal...............................................................10&-.12 G)dulo itime...................................................................10;3. !rientao a !beto.............................................................1113.1 %ntroduo a 'rogramao !rientada a !betosB'!!C......1113.2 ! que '!!/.......................................................................1113.+ 9efini>es bsicas de orientao a obeto.........................1123.: '!! em '(thon.................................................................11+3.- 9efinindo 6lasses..............................................................1133.3 Lerana..............................................................................1203.4 Atributos 'rivados.............................................................12+3.& !utros G$todos.................................................................12:3.; @un>es Mteis....................................................................1243.10 %ntrospeco e refle=o....................................................12&4. E=emplos de !rientao a !betos e !utros.......................1+04.1 9efinio de uma classe....................................................1+0

    -

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    6/224

    Programando em Python Do Bsico WEB

    4.2 %nstHncias abertas e classes NvaKias...................................1+14.+ Atributos de classe O de instHncia......................................1+1

    4.: G$todos de classe O estticos.............................................1+24.- Lerana..............................................................................1+24.3 Encapsulamento.................................................................1+-4.4 'assagem de parHmetros....................................................1+34.& 'olimorfismo.....................................................................1+4&. 5inter F G)dulo de %nterface Prfica.................................1:0&.1 %ntroduo..........................................................................1:0&.2 A classe 5.........................................................................1:2&.2.1 %tem 7sico.....................................................................1:2&.2.2 m programa bem simples.............................................1:2&.2.+ "osso primeiro obeto P%............................................1:+&.2.: 6ontainers e idgets.......................................................1:3&.2.- sando classes para estruturar o programa....................1:4&.2.-.1 Elementos do 5inter...................................................1-1&.2.3 'osicionando os bot>es...................................................1-+

    &.2.4 Ganipulando os eventos Bevent handlerC........................1-3&.2.4.1 Eventos do Gouse.......................................................1-;&.2.4.2 @oco e eventos do teclado ...........................................130&.2.& sando 6hec7utton......................................................13:&.2.; 6riando Genus...............................................................133&.2.10 7arra de ferramentas.....................................................13&&.2.11 Alarme com 5inter......................................................140&.2.12 6riar uma anela de entrada de dados...........................141&.2.1+ sando o configure.......................................................14-&.2.1: sando a opo fill.......................................................144&.2.1- 6anvas..........................................................................14&;. 6P% e #ervidor L55'..........................................................1;1;.1 ! 6P% B6ommon Patea( %nterfaceC...............................1;1;.2 ! servidor Apache.............................................................1;2;.+ L55' e L5G*..................................................................1;+

    3

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    7/224

    Antonio Srgio Nogueira

    ;.: 'ginas 9inHmicas.............................................................1;:;.- #ervidor Apache................................................................1;:

    10. 'rogramas 6P%..................................................................20110.1 %ntroduo........................................................................20110.2 Gais 'rogramas...............................................................20-10.2.1 9ados do ambiente.......................................................20-10.2.2 9ata e Lora do #ervidor atualiKadas............................20-10.+ G$todos PE5 e '!#5.....................................................20410.: sando 6LE6Q7!R......................................................20;10.- sando 7oto 8adio........................................................21110.3 sando te=to....................................................................21210.4 sando 9rop 9onbo=...................................................21+10.& sando o m)dulo cgitab..................................................21-10.; sando arquivos de te=to para armaKenar informa>es. .21&10.10 sando 6ooies em programao 6P%.........................21;10.11 @aKendo donload de arquivos......................................22210.12 !utros 'rogramas..........................................................22+

    8eferDncias 7ibliogrficas.......................................................22-

    4

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    8/224

    Programando em Python Do Bsico WEB

    Introduo

    Este te=to no tem a pretenso de ser uma bJblia dalinguagem '(thon, mas ele aborda a linguagem em suae=tenso, mostrando os aspectos mais peculiares como

    ! interpretador '(thon e o ambiente para edio ee=ecuo %9*ES

    A estrutura bsica da linguagem e seus tipos de

    dadosS A definio de bloco por indentao ao inv$s de

    marcadores de inJcio e fim de blocoS A orientao a obetosS A interface grfica 5interS E por fim como desenvolver um programa para

    eb.

    *anada por Puido van 8ossum em 1;;1, o '(thonatualmente possui um modelo de desenvolvimento comunitrioe aberto, gerenciado pela organiKao sem fins lucrativos'(thon #oftare @oundation.'(thon $ simples de usar, e $ umaverdadeira linguagem de programao que oferece tipos nativosde alto nJvel como fle=Jveis vetores, matriKes e dicionrios. 'orser uma linguagem interpretada de alto nJvel, orientada aobetos e de tipagem dinHmica e forte. '(thon $ muito mais fcilde usar do que as linguagens compiladas e o interpretador podeser usado interativamente, o que torna fcil e=perimentardiversas caracterJsticas da linguagem, escrever e testarprogramas e fun>es em um desenvolvimento bottom-up.

    ! nome da linguagem no tem nada a ver com osfamosos r$pteis e sim com o famoso sho da 776 NGont('(thonTs @l(ing 6ircusU. Gas neste e=ato momento se vocD

    &

    http://pt.wikipedia.org/wiki/Guido_van_Rossumhttp://pt.wikipedia.org/wiki/Python_Software_Foundationhttp://pt.wikipedia.org/wiki/Python_Software_Foundationhttp://pt.wikipedia.org/wiki/Guido_van_Rossum
  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    9/224

    Antonio Srgio Nogueira

    ainda no se convenceu com a linguagem '(thon, saiba que a"asa e a %ndustrial *ight V Gagic, a companhia de efeito visual

    que criou #tar ars, usa '(thon. Agora que vocD seconvenceu, que tal continuar a e=aminar o te=to com maiordetalhe e testar o interpretador '(thon com os e=emplosmostrados no te=to.

    ! '(thon e sua e=tensa biblioteca padro estodisponJveis na forma de c)digo fonte ou binrio para a maioriadas plataformas a partir do site, httpOO.p(thon.orgO,e deveser distribuJdos livremente. "o mesmo sJtio esto disponJveisdistribui>es e referDncias para diversos m)dulos, programas,ferramentas e documentao adicional contribuJdos porterceiros. Acesse as documenta>es atrav$s dehttpOOp(thon.orgOdocO onde vocD vai encontrar '(thon *ibrar(8eference, '(thon 8eference Ganual, E=tending andEmbedding the '(thon %nterpreter, '(thonO6 A'% 8eference.

    ;

    http://www.python.org/http://www.python.org/
  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    10/224

    Programando em Python Do Bsico WEB

    1. inter!retador Python

    1.1 "ua hist#ria

    "o final de 1;&; Puido van 8ossum criou o '(thon no%nstituto de 'esquisa nacional para Gatemtica e 6iDncia da6omputao B6%C, nos 'aJses 7ai=os, um sucessor dalinguagem chamada de A76. 5endo como foco principal oaumento de produtividade do programador, em 1;;1, Puido

    publicou o c)digo B verso 0.;.0C no grupo de discussoalt.sources. Em 1;;: formouFse o principal f)rum de discussodo '(thon, comp.lang.python, isto foi o marco para ocrescimento de usurios da linguagem. A verso 1.0 foi lanadaem aneiro de 1;;:. Al$m das funcionalidades que estavampresentes como classes com herana, tratamento de e=ce>es,fun>es e os tipos de dados nativos, lista, dicionrios e strings,sistema de m)dulos e assim por diante, esta nova verso incluJa

    ferramentas para programao funcional como lambda, map,filter e reduce. A ltima verso que Puidolanou enquanto estava na 6% foi o '(thon 1.2. Puidocontinuou o trabalho, em 1;;-, no 6"8% em 8eston, #A, deonde lanou diversas vers>es. "a verso 1.: a linguagemganhou parHmetros nomeados1 e suporte nativo a n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    11/224

    Antonio Srgio Nogueira

    comprehension, uma relevante funcionalidade de linguagensfuncionais como #E5* e Lasell, e essa verso 2.0 tamb$m

    introduKiu um sistema coletor de li=o capaK de identificar etratar ciclos de referDncias. ! lanamento incluiu a mudana naespecificao para suportar escopo aninhado, assim como outraslinguagens com escopo esttico. ma grande inovao daverso 2.2 foi a unificao dos tipos '(thon Bescritos em N6UC eclasses Bescritas em '(thonC em somente uma hierarquia, comisto o modelo de obetos do '(thon tornaFse consistentementeorientado a obeto e foi adicionado generator, inspirado em %con.! incremento da biblioteca padro e as escolhas sintticas foramfortemente influenciadas por Wava em alguns casos o pacotelogging introduKido na verso 2.+, o analisador sinttico#AR, introduKido na verso 2.0 e a sinta=e de decoradores queusa @, adicionadas na verso 2.:. Em 1 de outubro de 200& foilanada a verso 2.3, visando a transio para a verso +.0 dalinguagem. Entre outras modifica>es, foram incluJdas

    bibliotecas para multiprocessamento, W#!", EO#, al$m de umanova forma de formatao de cadeia de caracteres.Atualmente a linguagem $ usada em diversas reas, comoservidores de aplicao e computao grfica. Est disponJvelcomo linguagem script em aplica>es como !pen !fficeB'(thon "! 7ridgeC e pode ser utiliKada em procedimentosarmaKenados no sistema gerenciador de banco de dados'ostgre#*B'*O'(thonC. X%Q%'E9%A Y 24O11O200Z.

    E=istem diversas implementa>es do '[5!" so elas

    $!ythonY esta $ a verso original escrita em N6U.

    Acti%ePython F $ um padro industrial do '(thon, disponJvelpara indos, *inu=, Gac !# R, #olaris, A%R e L'FR.

    11

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    12/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    13/224

    Antonio Srgio Nogueira

    Apache #oftare @oundation BA#@C. eahttpOO.p(thon.orgOpsfO para mais informa>es sobre '#@.

    5E8G!# E 6!"9%\]E# 'A8A A6E##A8 ! 9E !58A@!8GA 5%*%^A8 '[5L!"

    _____________________________________________

    6!"58A5! 9E *%6E"\A '#@

    _____________________________________________

    1. Este 6!"58A5! 9E *%6E"\A realiKaFse entre'(thon #oftare @oundation BN'#@UC e o %ndivJduoou !rganiKao BN*icenciadoUC acessando ou deoutra forma utiliKando o programa de computador'(thon 2.1.1 em forma binria ou c)digoFfonte esua documentao associada.2. "os termos e condi>es deste 6ontrato de

    *icena, '#@ outorga ao *icenciado, por esteinstrumento, uma *icena no e=clusiva, semencargos patrimoniais Bro(altiesC, de abrangDnciamundial para reproduKir, analisar, testar, e=ecutarou e=por publicamente, preparar obras derivadas,distribuir e de outra forma utiliKar '(thon 2.1.1,isolado ou em qualquer verso derivada, contantoque, por$m, este 6ontrato de *icena '#@ e o aviso

    de direitos autorais '#@, i.e., N6op(right ` 2001'(thon #oftare @oundation, All 8ights 8eservedUseam incluJdos em '(thon 2.1.1, isolado ou emqualquer verso derivada preparada pelo*icenciado.+. 6aso o *icenciado prepare uma obra derivadabaseada em '(thon 2.1.1 ou que o incorpore por

    1+

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    14/224

    Programando em Python Do Bsico WEB

    inteiro ou qualquer trecho seu, e desee tornar estaobra derivada disponJvel a outrem como aqui

    previsto, ento o *icenciado concorda em incluirem tal obra um breve sumrio das mudanas feitassobre '(thon 2.1.1.:. '#@ torna '(thon 2.1.1 disponJvel ao *icenciadoN6!G! E#5U. '#@ "! !@E8E6EA%#E8 PA8A"5%A# !9E6*A8A\]E#, ER'8E##A# ! 56%5A#.6!G! EREG'*!, GA# "! *%G%5A\!,'#@ "! !@E8E6E E #E %#E"5A 9EA%#E8 PA8A"5%A# !9E6*A8A\]E# 9E 6!GE86%A7%*%9A9E! A9EA\! A @%"A*%9A9E#E#'E6@%6A#, ! 9E E ! #! 9E'[5L!" 2.1.1 "! %!*A8 A%#E89%8E%5!# 9E 5E86E%8!#.

    -. '#@ "! #E8 8E#'!"#E* 'E8A"5E! *%6E"6%A9! ! A%#E8 !58!##8%!# 9E '[5L!" 2.1.1 '!8 'E89A# E9A"!#, #EWAG %"6%9E"5A%#, E#'E6%A%#! 6!"#EE"5E#, 6!G! 8E#*5A9! 9EG!9%@%6A\!, 9%#58%7%\!, ! !58A@!8GA 9E 5%*%^A\! 9E '[5L!" 2.1.1,! A*E8 9E #A# !78A#9E8%A9A#, GE#G! E L!E##E #%9!A%#A9A 9E#5A '!##%7%*%9A9E.3. Este 6ontrato de *icena ser automaticamenterescindido em caso de violao material de seustermos e condi>es.4. "ada neste 6ontrato de *icena pode serinterpretado de forma a criar qualquer relao de

    1:

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    15/224

    Antonio Srgio Nogueira

    agDncia, parceria ou ointFventure entre '#@ e o*icenciado. Este 6ontrato de *icena no outorga

    permisso para usar marcas ou nomes comerciaisde '#@ como conunto distintivo para endossar oupromover produtos ou servios do *icenciado oude qualquer terceiro.&. Ao copiar, instalar ou de outra formautiliKar '(thon 2.1.1, o *icenciado obrigaFse aostermos e condi>es deste 6ontrato de *icena.

    _____________________________________________

    1.+ ,so do Inter!retador Python

    1.+.1 -ua Python usar/

    ! indos no vem com '(thon. Gas no se preocupe

    L diversas formas fceis de entrar no mundo '(thon usandoindos. 6omo vocD pode ver, '(thon roda em muitossistemas operacionais. A lista completa inclui indos, o Gac!#, o Gac !# R e todos os sistemas gratuitos compatJvel com"%R como o pr)prio *inu=. L tamb$m vers>es que rodam no#un #olaris, A#O:00, Amiga, !#O2, 7e!# e muitas outrasplataformas que vocD provavelmente nunca ouviu falar.

    1.+.) Python em Windo0s

    "o indos, vocD tem diversas escolhas para instalar o'(thon. A Active#tate tem um instalador '(thon para indosque inclui a verso completa do '(thon, um %9E com um editorde c)digo e e=tens>es indos para o '(thon que permitemacesso a servios especJficos do indos, suas A'%s e o

    1-

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    16/224

    Programando em Python Do Bsico WEB

    registro. ! Active'(thon pode ser bai=ado gratuitamente, masno $ open source. #e vocD realmente precisa da

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    17/224

    Antonio Srgio Nogueira

    1.+.).) !o ) Instaando o Python do Python.org

    1. 7ai=e o instalador indos do '(thon emhttpOO.p(thon.orgOdonloadOreleasesO2.4.2O2. E=ecute o arquivo '(thonF2.4.2+. #iga as instru>es na tela.:. Ap)s o t$rmino da instalao, feche o instalador e abra%niciarF'rogramasF'(thon 2.4F%9*EB'(thon P%C.

    14

    i ura 1: IDLE P thon GUI

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    18/224

    Programando em Python Do Bsico WEB

    ). Python Introduo3 (i!os e $omandos Bsicos

    ).1 Inter!retador

    '(thon $ uma linguagem interpretada, o que significaque o c)digo no precisa ser compilado para que sea e=ecutado.Assim, o interpretador lD e e=ecuta o c)digo diretamente.*inguagens interpretadas, normalmente, funcionam atrav$s de6ompilao WustF %nF5ime ou %nterpretao pura ou em

    7(tecode. ocD pode criar seu arquivo '(thon e salvFlo com ae=tenso N.p(U ou ainda pode e=ecutar no modo shell, ou sea,vocD digita o c)digo diretamente no interpretador. '(thon $multi plataforma, roda em indos, *inu=, ni=, Gacintosh,etc. 'ode ser utiliKado um ambiente para edio e e=ecuocomo o %9*E, que $ nativo da linguagem e para acessFlo emindos basta ir em %"%6%A8'8!P8AGA#'[5L!"2.4%9*E. Em computadores com indos, '(thon $ instalado

    geralmente em j6k'(thon24T, apesar de vocD poder mudar issoenquanto est e=ecutando o instalador. 'ara adicionar essediret)rio ao path, vocD pode digitar o seguinte comando no9!# set path_?path?S6kp(thon24

    ).) Paa%ras 4eser%adas

    #o palavras que no podem ser usadas para dar nomesaos obetos. #o and3 assert3 5rea63 cass3 continue3 de3 de'3ei'3 ese3 e2ce!t3 e2ec3 'inay3 'or3 'rom3 go5a3 i'3 im!ort3 in3is3 am5da3 not3 or3 !ass3 !rint3 raise3 return3 try3 0hie.

    ).+ Digitando comandos no ID*E

    'odemos usar o %9*E como uma calculadora,

    1&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    19/224

    Antonio Srgio Nogueira

    visualiKando resultados e usando os resultados em clculosfuturos.

    a_1 b_2 ab aOb aIb

    ).7 (i!os de Dados

    #o categorias de valores que so processados de formasemelhante. 'or e=emplo, n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    20/224

    Programando em Python Do Bsico WEB

    $om!ostos listas, dicionrios, tuplas e conuntos.

    (i!os de'inidos !eo usurio so correspondentes a classesBorientao obetoC.

    ).9 N:mero !onto 'utuante e com!e2o

    L total suporte para ponto flutuanteS operadores comoperandos de diferentes tipos convertem o inteiro para pontoflutuante

    + I +.4- O 1.-4.- 4.0 O 2+.-

    "

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    21/224

    Antonio Srgio Nogueira

    B12COB11CB1.-0.-C

    "

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    22/224

    Programando em Python Do Bsico WEB

    "o modo interativo, a

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    23/224

    Antonio Srgio Nogueira

    Tmais menosTTmais menosT

    NvidasUvidas

    TU!*AU, 7!G 9%A.TTU!*AU, 7!G 9%A.T

    k!*A,k 7!G 9%A.T!*A, 7!G 9%A.T

    #trings que cont$m mais de uma linha podem serconstruJdas de diversas maneiras. 5erminadores de linha podemser embutidos na string com barras invertidas.

    FIF coding cp12-2 FIF'rograma que imprime oioi _ Esta $ uma string longa contendoknkdiversas linhas de te=to assim como vocD faria em 6.knk!bserve que os espaos em branco no inicio da linha so ksignificativos.print oi

    8esultado da e=ecuo

    Esta ' uma string longa conteno

    i%ersas linhas e te#to assim como %oc) "aria em *.

    +bser%e ,ue os espaos em branco no inicio a linha s!o

    signi"icati%os.

    2+

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    24/224

    Programando em Python Do Bsico WEB

    !bserve que terminadores de linha ainda precisam serembutidos na string usando knS a quebra de linha ap)s a

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    25/224

    Antonio Srgio Nogueira

    ola

    tuo bem e ai como

    %ai.

    ! interpretador imprime o resultado de opera>es sobrestrings da mesma forma que as strings so formatadas nadigitao dentro de aspas, e com caracteres especiais embutidosem escape se,uences0, para mostrar seu valor com preciso astring ser delimitada por aspas duplas se ela cont$m um

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    26/224

    Programando em Python Do Bsico WEB

    #trings podem ser inde=adasS como em 6, o primeiroJndice da string $ o 0. "o e=iste um tipo separado para

    caracteresS um caractere $ simplesmente uma string unitria.Assim como na linguagem %con, substrings3 podem serespecificadas atrav$s da notao slice4 dois Jndices separadospor dois pontos.

    palavraX:Zv

    palavraX02Zpa palavraX2:Zla

    ndices de fatias seguem uma padroniKao

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    27/224

    Antonio Srgio Nogueira

    palavraXF1F1Z imprime ao contrrio a palavraA arvalap

    !s principais m$todos das strings so

    capitaliKe F transforma o primeiro caractere em mai

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    28/224

    Programando em Python Do Bsico WEB

    uU!la ida UuT!la ida T

    ! juT antes das aspas ou ap)strofo indica a criao deuma string nicode. #e vocD desear incluir caracteres especiaisna string, vocD pode faKDFlo atrav$s da codificao '(thonUnicoe-Escape.

    uT!laku0020ida TuT!la ida T

    ! c)digo de escape ku0020 indica a insero do caracternicode com valor ordinal 0=0020& na posio determinada.Al$m dessa codificao padro, '(thon oferece um outroconunto de maneiras de se criar strings nicode.

    A funo interna unicodeBC provD acesso a todos osnicode codecs; registrados. Alguns dos mais conhecidoscodecs so Latin-1, 56*II, U7F-8, and U7F-19. !s doises de tamanho varivel para armaKenarcada caractere nicode em um ou mais b(tes. A codificaopadro $ A#6%%, que trata normalmente de caracteres nointervalo de 0 a 124 mas reeita qualquer outro com um erro.uando uma string nicode $ impressa, escrita em arquivo ou

    convertida por strBC, a codificao padro $ utiliKada.

    uabcuTabcT

    & Espao em branco.; 6oders and 9ecoders Y 6odificadores e decodificadores.

    2&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    29/224

    Antonio Srgio Nogueira

    strBuabcCTabcT uuTk=e:k=f3k=fcT

    strBuC

    5racebac Bmost recent call lastC @ile p(shell1, line 1, in module

    strBuCnicodeEncodeError ascii codec cant encode characters inposition 0F2 ordinal not in rangeB12&CErro ? caractere no C !adro A"$II

    'ara se converter uma string nicode em uma string &Fbits, usando uma codificao especJfica, basta invocar o m$todoencodeBC de obetos nicode, passando como parHmetro o nomeda codificao destino. preferJvel utiliKar nomes decodificao em letras min

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    30/224

    Programando em Python Do Bsico WEB

    ). *istas

    A mais verstil estrutura de dados do '(thon $ a listaBlistC, que pode ser escrita como uma lista de valores separadospor vJrgula e entre colchetes. Gais importante, os valorescontidos na lista no precisam ser do mesmo tipo e podem terseus elementos modificados.

    lista _ X1,um,1.0Z lista.insertB+,humC print listaX1, um, 1.0, humZ

    ma varivel chamada lista retorna uma lista com umvalor inteiro, uma string e um valor float. Em seguida, foiinserida no final da lista Bo n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    31/224

    Antonio Srgio Nogueira

    sort( F ordena os elementos da lista.

    l _ X10,-3,+2,&;,2-,1:Z l.appendB;0C append lX10, -3, +2, &;, 2-, 1:, ;0Z

    l.insertB+,-0C insert l

    X10, -3, +2, -0, &;, 2-, 1:, ;0Z

    l.popB4C pop;0 lX10, -3, +2, -0, &;, 2-, 1:Z

    l.inde=B&;C inde=

    :

    a _ X1-,;0,3&Z a.e=tendBlC e=tend aX1-, ;0, 3&, 10, -3, +2, -0, &;, 2-, 1:, -, -Z

    a.sortBC sort aX10, 1:, 1-, 2-, +2, -0, -3, 3&, &;, ;0, -, -Z

    9a mesma forma que Jndices de string, Jndices de listacomeam do 0, listas tamb$m podem ser concatenadas e sofrer ooperado>es deslice(cortes.

    +1

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    32/224

    Programando em Python Do Bsico WEB

    Este e=emplo $ para entender o slice.

    AX0+Z

    X10,1:,1-Z

    ). (u!as

    #o obetos como as listas, com a diferena de que tuplasso imutveis como strings. ma veK criadas, no podem sermodificadas. saFse ou no BC como delimitador.

    tupla _ BGaria, 'edro, Wos$C tuplaX0ZGaria tuplaX0Z_@tima5racebac Bmost recent call lastC@ile p(shell2-, line 1, in moduletuplaX0Z_@tima

    5(peError tuple obect does not support item assignmentErro ? na tentati%a de atri5uir um no%o %aor. tupla_ 1,2,+tuplaB1,2,+C

    m problema especial $ a criao de tuplas contendo 0

    +2

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    33/224

    Antonio Srgio Nogueira

    ou 1 itens a sinta=e tem certos truques para acomodar estescasos. 5uplas vaKias so construJdas por uma par de parDnteses

    vaKios. E uma tupla unitria $ construJda por um

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    34/224

    Programando em Python Do Bsico WEB

    9icionrios so conuntos no ordenados de pares, onde

    o primeiro elemento do par $ o Jndice chamado de chave e osegundo de valor. m dicionrio, em '(thon, suporta qualquertipo de obeto, sea ele uma lista ou at$ mesmo outrosdicionrios e pode ser modificado. 'ara criar um dicionriobasta declarar pares NchavevalorU separados por vJrgula edelimitados por chaves.

    dic _ 1um, 2dois, +trDs dicX1Zum dicX:Z_quatro dic1 um, 2 dois, + trk=eas, : quatro

    !s dicionrios possuem alguns m$todos, entre eles

    itemsGHF esse m$todo retorna uma lista de tuplas, ou sea, todosos pares chavevalor na forma de tuplasS

    dic.itemsBCXB1, umC, B2, doisC, B+, trk=easC, B:, quatroCZ

    6eysGHF esse m$todo retorna somente as chavesS

    dic.e(sBCX1, 2, +, :Z

    %auesGHF esse m$todo retorna somente os valoresS

    +:

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    35/224

    Antonio Srgio Nogueira

    dic.valuesBCXum, dois, trk=eas, quatroZ

    getGcha%eHF retorna o valor da chave passada como parHmetroS

    dic.getB2Cdois print dic.getB-C

    "one

    has;6eyGcha%eH F verifica se e=iste a chave passada comoparHmetro, retornando true ou falseS

    dic.hase(B-C@alse

    dic.hase(B2C5rue

    u!dateGdicionrioHF atualiKa um dicionrio com base em outropassado como parHmetro. 6aso elementos do primeirodicionrio e=istam tamb$m no segundo, esse sobrescreve oprimeiro, ou se o segundo conter elementos e=clusivos, sero

    adicionados ao primeiro dicionrio.

    dic _ 1um, 2dois, +trDs dic2 _ 1one, 2to, -five dic.updateBdic2C dic1 one, 2 to, + trk=eas, - five

    +-

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    36/224

    Programando em Python Do Bsico WEB

    dictBC F produK dicionrios diretamente a partir de uma lista dechavesFvalores, armaKenadas como tuplas.

    dictBXBsapo, :1+;C, Bpato, :124C, Bgato, :0;&CZCsapo :1+;, gato :0;&, pato :124

    dictBXB=, =II2C for = in B2, :, 3CZC usando construtor de processamento de lista2 :, : 13, 3 +3

    dictBsapo_10,lua_-,cidade_+Clua -, cidade +, sapo 10

    ).11 Doc"tring e comentrio

    Docstring F #o strings que servem para documentar c)digo.7asta criar a string entre sequDncias de trDs aspas.

    def mBCAutor "ogueira9ata 2+O0+O200;

    ersao 0.0print Ginha funo

    m.doc mostra documentao da funoAutor "ogueira9ata 2+O0+O200;

    +3

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    37/224

    Antonio Srgio Nogueira

    ersao 0.0

    $omentrioG>H F usado para faKer comentrio em '(thon, tudoap)s este simbolo $ considerado como comentrio na linha.

    primeiro comentrio

    #'AG _ 1 e esse $ o segundo comentrio

    ... e ainda um terceiro

    #58%"P _ Este no $ um comentrio.

    ).1) !eradores AritmCticos

    adio

    F subtrao

    I multiplicao

    O diviso

    ? m)dulo

    II e=ponenciao

    !s operadores e ; faKem concatenao de strings, listas etuplas.

    2II+ o mesmo que dois ao cubo&

    +4

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    38/224

    Programando em Python Do Bsico WEB

    2IIB+3C 9ois elevado a nove-12 4 ? 2 ! resto da diviso entre 4 e 21

    ! sinal de igual Bj_TC $ utiliKado para atribuio de umvalor a uma varivel.

    largura _ 20 altura _ -I; largura I altura;00

    m valor pode ser atribuJdo a diversas variveissimultaneamente

    = _ ( _ K _ 0 0 $ atribuJdo a =, ( e K =0 (0 K0

    ).1+ !eradores de atri5uio

    _ #oma com valor atribuJdo

    F_ #ubtrai o valor atribuJdo

    O_ 9ivide pelo valor atribuJdo

    +&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    39/224

    Antonio Srgio Nogueira

    I_ Gultiplica pelo valor atribuJdo

    a_- b_3 a_b a_ab a11 b

    3 aF_b a_aFb a- a_10 b_- aO_b a_aOb inteiro

    a2 aI_b a_aIb a10

    ).17 !eradores de condio

    _ _ %gual

    _ 9iferente

    Gaior

    Genor

    _ Gaior ou igual

    +;

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    40/224

    Programando em Python Do Bsico WEB

    _ Genor ou igual

    in Est dentro da sequDncia ou dodicionrio

    - in B2,+,-C5rue m in Worge@alse

    a_1 b_2 a __ b __ testa se a $ igual a b@alse a _ b _ testa se a $ diferente de b5rue a b tamb$m testa se a $ diferente de b5rue

    a b testa se a $ maior que b@alse a b testa se a $ menor que b5rue 2Ia _ b testa se o dobro de a $ maior ou igual a b5rue

    Em '(thon, a sinta=e a seguir $ vlida

    i' F21Fprint =

    :0

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    41/224

    Antonio Srgio Nogueira

    ).19 !eradores #gicos

    and e

    or ou

    not no

    is $

    %s not no $

    ).19.1 E2!ressJes 5ooenas

    5amb$m chamadas e=press>es l)gicas. 8esultam emverdadeiro B5rueC ou falso B@alseC. #o usadas em comandoscondicionais e de repetio. #ervem para analisar o estado deuma processamento e permitir escolher o pr)=imo passo. A

    e=presso $ avaliada da esquerda para a direita.#e o resultadoBverdadeiro ou falsoC puder ser determinado sem avaliar orestante, este $ retornado imediatamente.

    1_ _15rue 1_ _2

    @alse 1_ _1 or 1_ _25rue 1_ _1 and 1_ _2@alse 12 and 2+5rue not 12

    :1

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    42/224

    Programando em Python Do Bsico WEB

    @alse not 12 or 2+5rue not B12 or 2+C@alse alo and 11 alo or 1alo

    0 or 100100 @alse or 100100 abc or 1abc 1 and 22

    0 and +0 @alse and +@alse 1 and 2 or +2 0 or 2 and +

    + 1 and not 05rue

    :2

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    43/224

    Antonio Srgio Nogueira

    ).19.) !eradores in 3 is 3 is not

    a_-b_aa is b5ruea_-b_3a is b

    @alsea is not b5ruea_X1,2,+Z1 in a5ruea_@alseb_5rue

    c_ a and b armaKenar em c o resultado de uma e=pressobooleanac@alse

    $om!arando o5Ketos seLuMncias de mesmo ti!o

    B1,2,+C B1,2,:C5rue

    A766'(thon5rue

    :+

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    44/224

    Programando em Python Do Bsico WEB

    permitido comparar obetos de diferentes tipos. !resultado $ determinJstico, por$m, arbitrrio os tipos so

    ordenados pelos seus nomes. Ento, uma lista $ sempre menordo que uma string, uma string $ sempre menor do que umatupla, etc. 5ipos num$ricos mistos so comparados de acordocom seus valores num$ricos, logo 0 $ igual a 0.0, etc Bestacomparao no $ confivel podendo mudar com a versoC

    ).1= ari%eis

    #o nomes dados a reas de mem)ria "omes podem sercompostos de algarismos, letras ou . ! primeiro caractere nopode ser um algarismo. 'alavras reservadas Bif, hile, etcC soproibidas. As variveis servem para guardar valoresintermedirios,construir estruturas de dados,etc... ma varivel$ modificada usando o comando de atribuio%ar _ e#press!o

    possJvel tamb$m atribuir a vrias variveissimultaneamente%ar1

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    45/224

    Antonio Srgio Nogueira

    t(pe str var _ +.0 t(peBvarCt(pe float

    'ara descobrir o tipo da varivel, basta usar a funotype(. 6om linguagem dinHmica, vocD garante a simplicidade efle=ibilidade da funo. Em '(thon, tudo $ obeto, que possuiatributos e m$todos e pode ser atribuJdo a uma varivel ou

    passado como argumento de uma funo. 'or e=emplo, umavarivel que cont$m uma string $ um obeto, pois qualquerstring possui um m$todo chamado upper que converte a stringpara maies int, float e string.

    ).1 !erador O

    Esse operador $ muito

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    46/224

    Programando em Python Do Bsico WEB

    nome _ Eliane print Geu nome $ ?s ? nomeGeu nome $ Eliane

    =_abaca=i (_amarelo print ! ?s $ ?s. ?B=, (C! abaca=i $ amarelo.

    num%nt _ 1; print Eu tenho ?d anos ? num%ntEu tenho 1; anos

    num@loat _ 1.3 print Altura ?.2f m ? num@loatAltura 1.30 m

    num@loat _ -:.&0 print 'eso ?10.1f g ? num@loat'eso -:.& g

    N?.2fU corresponde a duas casas decimais e N?10.1U, a deKespaos, uma casa decimal.

    :3

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    47/224

    Antonio Srgio Nogueira

    +. $ontroe de 8u2o e Estrutura de Dados

    +.1 $ontroe de 8u2o

    Assim como nas outras linguagens, '(thon possuiestruturas de controle de flu=o Bcondio e laoC tamb$m.

    +.1.1 Instruo 0hie

    8epete uma sequDncia de comandos enquanto uma dadae=presso booleana $ avaliada como verdadeira. Em '(thon,como em 6, qualquer valor inteiro no nulo $ consideradoverdadeiro BtrueC, Kero tem valor falso B"alse. A condio podeser ainda uma lista ou string, na verdade qualquer sequDnciaSqualquer coisa com comprimento no nulo tem valor true esequDncias vaKias tem valor "alse. !s operadores padro paracomparao so os mesmos de 6 Bmenor queC, Bmaior queC,__BigualC, _ Bmenor ou igualC, _ Bmaior ou igualC and _BdiferenteC.8ormato 0hie e#press!o > no se esLuea da indentao comano ... comano

    a_10

    hile a&aF_1print a

    ;&

    :4

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    48/224

    Programando em Python Do Bsico WEB

    E2em!o sCrie de 8i5onacci

    #erie de @ibonacci ... A soma de dois elementos define o pr)=imo

    a,b_0,1 hile b1000

    print b,a,b_b,ab

    1 1 2 + - & 1+ 21 +: -- &; 1:: 2++ +44 310 ;&4

    ! corpo do lao $ indentado12. '(thon BaindaC nopossui facilidades automticas de edio de linha. "a prticavocD ir preparar scripts '(thon comple=os em um editor dete=toS a maioria dos editores de te=to possui facilidades deindentao automtica. uando comandos compostos foremalimentados ao interpretador interativamente, devem serencerrados por uma linha em branco B que o parser no temcomo adivinhar qual $ a

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    49/224

    Antonio Srgio Nogueira

    10 11 12 1+ 1: 1- 13 14 1& 1; 20 21 22 2+ 2: 2- 2324 2& 2; +0 +1 +2 ++ ...6trlF6 aborta comando %9*E.

    +.1.) Instruo 'or

    A instruo 'orinterage com uma sequDncia, ou sea, requer umobeto lista ou qualquer outro de sequDncia.

    'ori inse,u)ncia comano @..

    comano

    a _ XWoo, 8afael, 9ouglasZ a

    XWok=e+o, 8afael, 9ouglasZ for i in aprint i

    Woo8afael9ouglas

    Gedindo algumas strings

    a _ XTgatoT, TanelaT, TvivendoTZ for = in aprint =, lenB=C

    gato :anela 3vivendo 4

    :;

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    50/224

    Programando em Python Do Bsico WEB

    A construo for em '(thon difere um pouco, do que se

    est acostumado, do 6 ou 'ascal. Ao inv$s de se iterar sobreprogress>es aritm$ticas Bcomo em 'ascalC, ou fornecer aousurio a habilidade de definir tanto o passo da iterao quanto acondio de parada Bcomo em 6C, o 'orde '(thon itera sobre ositens de uma sequDncia Buma lista ou uma stringC na ordem emque aparecem.

    8uno rangeGinicio3Q'im3!assoQH #e vocD precisar iterar

    sobre sequDncias num$ricas, a funo interna rangeBC $ aresposta. Ela gera listas contendo progress>es aritm$ticas.

    rangeB;CX0, 1, 2, +, :, -, 3, 4, &Z

    ! ponto de parada fornecido nunca $ gerado na listaSrangeB;C gera uma lista com ; valores, e=atamente os Jndicesvlidos para uma sequDncia de comprimento ;. possJveliniciar o intervalo em outro n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    51/224

    Antonio Srgio Nogueira

    ! brea, suspende o lao mais interno de um for ouhile. ! continue, continua o programa no pr)=imo comando

    situado fora do lao mais interno. *aos podem ter uma clusulaelse, que $ e=ecutada sempre que o lao se encerra por e=austoda lista Bno caso do forC ou quando a condio se torna falsa Bnocaso do hileC, mas nunca quando o lao $ encerrado por umbrea.

    for n in rangeB2, 10C

    for = in rangeB2, nCif n ? = __ 0print n, igual, =, I, nO=brea

    else encontrou numero primo

    print n, eh um numero primo

    2 eh um numero primo+ eh um numero primo: igual 2 I 2- eh um numero primo3 igual 2 I +4 eh um numero primo

    & igual 2 I :; igual + I +

    +.1.7 Instruo i'

    Em '(thon, no $ permitido faKer atribui>es em um i",ento $ necessrio usar o operador N_ _U quando fiKer

    -1

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    52/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    53/224

    Antonio Srgio Nogueira

    Entre com um numero22 $ positivo!brigado

    +.1.9 $onstruo !assA construo pass no faK nada. Ela pode ser usada

    quando a sinta=e e=ige um comando mas a semHntica doprograma no requer nenhuma ao. 'or e=emplo

    hile 5ruepass 7us(Fait Bespera ocupadaCF para com

    a interrupo de teclado

    +.1.= (Ccnicas de *ao

    mCtodo iteritemsGH F para obter chaveOvalor ao percorrer umdicionrio com lao.

    dicionario_1um, 2dois, +tresfor i, in dicionario.iteritensBC

    print i,

    1 um2 dois

    'uno enumerateGHF obtem o Jndice e o valor correspondenteem uma lista.

    lista_Xum, dois, tresZfor i, in enumerateBlistaC

    -+

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    54/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    55/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    56/224

    Programando em Python Do Bsico WEB

    fila.popB0CTWoT filaXTGiguelT, T5eresaT, TPilsonTZ

    +.).+ 8unJes so5re istas 'iterGH3 ma!GH3 e reduceGH

    S'iterGfuno3 sequnciaHF retorna uma sequDncia consistindodos itens pertencentes a sequDncia para os quais"un!oBitemC $

    verdadeiro. #e a sequDncia for string ou tuple, o resultado sersempre do mesmo tipoS caso contrrio, ser sempre uma lista.'or e=emplo, para computar n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    57/224

    Antonio Srgio Nogueira

    ... mapBsomaBseq, seqCCX0, 2, :, 3, &, 10, 12, 1:Z

    SreduceGfuno3 sequnciaHF esta funo pega dois primeirositens da sequDncia e passa para a funo e depois pega o retornoda funo e o pr)=imo item e passa para a funo, faKendo issoat$ acabar a sequDncia. 'or e=emplo, para computar a soma dos10 primeiros n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    58/224

    Programando em Python Do Bsico WEB

    X+I= for = in vec if = +ZX12, 1&Z X+I= for = in vec if = 2ZXZ XB=, =II2C for = in vecZXB2, :C, B:, 13C, B3, +3CZ vec1 _ X2, :, 3Z vec2 _ X:, +, F;Z X=I( for = in vec1 for ( in vec2Z

    X&, 3, F1&, 13, 12, F+3, 2:, 1&, F-:Z X=( for = in vec1 for ( in vec2ZX3, -, F4, &, 4, F-, 10, ;, F+Z Xvec1XiZIvec2XiZ for i in rangeBlenBvec1CCZX&, 12, F-:Z

    +.).9 comando de

    8emove item da lista a partir de um Jndice. 'ermitetamb$m fatiar a lista BsliceC. 5amb$m apaga variveis.

    a _ XF1, 1, 33.2-, +++, +++, 12+:.-Z del aX0Z aX1, 33.2-, +++, +++, 12+:.-Z

    del aX2:Z aX1, 33.2-, 12+:.-Z del a apagando variveis

    +.).= (ra5ahando com conKuntos ? sets

    -&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    59/224

    Antonio Srgio Nogueira

    '(thon tamb$m inclui um tipo de dados chamadoconunto BsetC. m conunto $ uma coleo desordenada de

    dados, sem elementos duplicados. sos comuns para issoincluem verifica>es da e=istDncia de obetos em outrassequDncias e eliminao de itens duplicados. 6onuntos tamb$msuportam opera>es matemticas como unio, interseo,diferena e diferena sim$trica.

    cesta@rutas _ XTabacateT, TlaranaT, TlaranaT, TperaT,

    TbananaTZ frutas _ setBcesta@rutasC cria conunto sem duplicao frutassetBXTabacateT, TlaranaT, TperaT, TbananaTZC TbananaT in frutas teste rpido5rue TaboticabaT in frutas@alse

    9emonstrao de opera>es de conuntos... a _ setBTabracadabraTC asetBXTaT, TrT, TbT, TcT, TdTZC set dei=a apenas uma letra decada sem repetio

    b _ setBTalacaKamTC bsetBXTaT, Tl,c,K,mZC a F b letras em a e no em bsetBXTrT, TdT, TbTZC

    a b letras em a e em bsetBXTaT, TcT, TrT, TdT, TbT, TmT, TKT, TlTZC

    -;

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    60/224

    Programando em Python Do Bsico WEB

    a V b letras em ambos a e bsetBXTaT, TcTZC

    a w b letras em a ou b e no em ambossetBXTrT, TdT, TbT, TmT, TKT, TlTZC

    30

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    61/224

    Antonio Srgio Nogueira

    7. 8unJes3 4ecurso3 E2ceo3 ArLui%os e T#duos

    7.1 8unJes

    @un>es so blocos de c)digo com um nomeS recebemum conunto de parHmetros Bou argumentosC e retornam umvalor. '(thon possui, como seria esperado de uma linguagem deprogramao completa, suporte a fun>es. E=istem diversasfun>es pr$Fdefinidas pelo interpretador. A sinta=e geral para

    definir uma funo $

    de'nomefuncaoBarg1, arg2, ..., argnC bloco de c)digo contendo corpo da funo returnvalorderetorno retornar $ opcional

    !s argumentos so valores fornecidos na chamada da funo, eque ficam disponJveis por meio de variveis locais no corpo dafuno. Ao encontrar o comando return, a funo terminaimediatamente e o controle do programa volta ao ponto onde afuno foi chamada. #e uma funo chega a seu fim semnenhum valor de retorno ter sido especificado, o valor deretorno $ "one.

    ! corpo da funo deve comear na linha seguinte e deve serindentado. !pcionalmente, a primeira linha do corpo da funopode ser uma string, cuo prop)sito $ documentar a funo. #epresente, essa string chamaFse docstring.

    def fBC docstring funcao f

    31

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    62/224

    Programando em Python Do Bsico WEB

    do sergioreturn

    print fBC"one

    f endereo da funo na mem)riafunction f at 0R00e20+40

    f.doc documentao da funo

    funcao fknktdo sergio

    def fBC return !i print fBC!i

    def fBnomeC

    return !i, nome print fBWoaoC!i, Woao

    E2em!o de !rograma com 'uno

    def imprimecardapio BpratosC

    print 6ardapio para hoekn for p in pratos

    imprimepratoBpC

    print kn5otal de pratos ?d ? lenBpratosC

    32

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    63/224

    Antonio Srgio Nogueira

    def imprimepratoBpC

    print ?s ........ ?10.2f ? BpXnomeZ, pXprecoZC

    defino dicionrios descrevendo os pratos

    p1 _ nome ArroK com brocolis, preco ;.;0

    p2 _ nome #oa com legumes, preco 4.&0

    p+ _ nome *entilhas, preco :.&0

    listapratos _ Xp1, p2, p+Z

    e chamo uma funo, passando os pratos como argumento

    imprimecardapioBlistapratosC

    FFFFFFFFFFFFFFFFFfim programaFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

    7.1.1 Esco!o das %ari%eis

    A e=ecuo da funo gera uma nova tabela de sJmbolosutiliKada para as

    variveis locais da funo,mais precisamente, toda atribuio a varivel dentro dafuno armaKena o valor na tabela de sJmbolos local.8eferDncias a variveis so buscadasprimeiramente na tabela local, ento natabela de smbolos global e finalmente na

    tabela de sJmbolos interna Bbuilt-inC. 'ortanto, deveFsedeclarar que a varivel $ global antes de atribuir um valor para

    3+

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    64/224

    Programando em Python Do Bsico WEB

    ela, se vocD desea acessar a varivel e=terna, se fiKer o contrrioda erro. ! uso de uma varivel e=terna $ possJvel, sem definir

    ela globalmente, s) no $ possJvel faKer atribuio a ela, pois alinguagem gera uma varivel local.

    v _ 0def processaBC global v v _ 1

    v_0def pBC

    =_1 v_+

    print =,v

    pBC

    1 +

    v vea usamos a varivel v internamente e a v e=terna nofoi alterada0

    7.1.) 8unJes como !arUmetro

    "omes de fun>es podem ser manipulados comovariveis e mesmo como argumentos de fun>es. 'ara saber seum nome se refere a uma funo, use o predicado callableBC.

    def fBgC

    3:

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    65/224

    Antonio Srgio Nogueira

    return gB-C

    def hB=Creturn =I=

    fBhC2- m _ h callableBmC

    5rue fBmC2-

    4.1.3 Funo com 2 argumentos

    >>> def c(,!"#

    return $!

    >>>c(%,&"'>>>c(a,b" )mudana do tipo de variveldurante a eecuoab

    4.1.4 Funo com valores padro ou default

    def aplicamultaBvalor, ta=a_0.1C return valor valor I ta=aaplicamultaB10C11.0

    3-

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    66/224

    Programando em Python Do Bsico WEB

    aplicamultaB10,0.-C1-.0

    9ica "o utiliKe como valor padro listas, dicionrios e outrosvalores mutveisS os valores padr>es so avaliados apenas umaveK e o resultado obtido no $ o que intuitivamente se esperaria.

    4.1.5 Funo com argumentos opcionais

    def somatoriaBIargumentosCsoma _ 0for i in argumentos

    soma_i igual a soma_somaireturn soma

    somatoriaB1,2,+,:,-C

    1-

    A funo pode receber quantos os argumentos o usuriodesear. #e o argumento no for compatJvel retorna um erro.

    somatoriaB1,2,+,:,testeC

    5racebac Bmost recent call lastC@ile p(shell112, line 1, in modulesomatoriaB1,2,+,:,testeC@ile p(shell110, line :, in somatoriasoma_i5(peError unsupported operand t(peBsC for _ int and str

    def testaprimoBnC

    33

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    67/224

    Antonio Srgio Nogueira

    teste_1for i in rangeB2,nC

    if n ? i __ 0teste_teste1

    if teste _ 1print "

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    68/224

    Programando em Python Do Bsico WEB

    7.1. 8uno am5da

    6om a palavraFchave lambda, fun>es curtas e annimaspodem ser criadas. Aqui est uma funo que devolve asoma de seus dois argumentosjam5da a3 5 aV5T. @un>es *ambda podem ser utiliKadas emqualquer lugar que e=igiria uma funo tradicional.#intaticamente, fun>es *ambda esto restritas a uma es defun>es aninhadas, fun>es lambda no podem referenciarvariveis de um escopo mais e=terno.

    def maeincrementorBnCreturn lambda = = n

    f _ maeincrementorB:2C fB0C:2 fB1C:+

    7.) 8unJes recursi%as

    @un>es recursivas so fun>es que chamam a si mesma,de forma que para resolver um problema maior utiliKa a recursopara chegar as unidades bsicas do problema em questo e entocalcular o resultado final.

    8i5onacci recursi%o

    3&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    69/224

    Antonio Srgio Nogueira

    coding utfF& fibrecursivo.p(def fibonacciBindiceC if indice __ 1 return 0 elif indice __ 2 return 1 else return fibonacciBindice F 1C fibonacciBindice F 2C chamada recursiva

    for i in rangeB1,11Cprint fibonacciBiC,

    Busca Binria 4ecursi%a

    def testaBlista,valorC def buscabinariaBimin,ima=C

    if imin__ima= return imin else meio_Bima=iminCO2 if valorlistaXmeioZ return buscabinariaBmeio1,ima=C else return buscabinariaBimin,meioC i _ buscabinariaB0,lenBlistaCF1C

    if listaXiZ__valor print valor,encontrado na posicao,i else print valor,nao encontrado

    testaBX1,2,-,3,;,12Z,-C

    3;

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    70/224

    Programando em Python Do Bsico WEB

    - encontrado na posicao 2

    uando uma funo $ chamada, um pouco de mem)ria $usado para guardar o ponto de retorno, os argumentos evariveis locais. Assim, solu>es iterativas so normalmentemais eficientes do que solu>es recursivas equivalentes. %sto noquer diKer que solu>es iterativas sempre seam preferJveis asolu>es recursivas. #e o problema $ recursivo por natureKa,uma soluo recursiva $ mais clara, mais fcil de programar e,

    frequentemente, mais eficiente.

    7.+ 8unJes !rC?de'inidas

    !t-on possui uma srie de fun/espr0definidas, que 1 esto disponveisquando eecutamos o interpretador, sem terque recorrer a bibliotecas eternas.

    Algumas fun/es importantes que ainda foramou no apresentadas no teto seguem#

    range(a,b" recebe dois inteiros, retorna uma lista deinteiros entre a e b, no incluindo b. Esta funo $frequentemente utiliKada para iterar laos for.

    print rangeB1,10CX1, 2, +, :, -, 3, 4, &, ;Z

    len(a" retorna o comprimento da varivel a. aralistas, tuplas e dicionrios, retorna o n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    71/224

    Antonio Srgio Nogueira

    +

    round(a, n" recebe um float e um n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    72/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    73/224

    Antonio Srgio Nogueira

    1.0

    int(n" converte um float em inteiro.

    print intB-.-C-

    str(n" converte qualquer tipo em uma string. 5ipossequDncias so convertidos de forma literal,peculiarmente.

    print strBX1,2,+ZC, strBa 1CX1, 2, +Z a 1

    list(l"e tuple(l" convertem uma sequDncia emuma lista ou tupla, respectivamente.

    print listBbacoCX, b, a, c, oZ

    7.7 T#duos

    A medida que seus programas crescem, pode serdesevel dividiFlos em vrios arquivos para facilitar amanuteno. 5alveK vocD at$ queira reutiliKar uma funo semcopiar sua definio a cada novo programa. 'ara permitir isto,'(thon possui uma maneira de depositar defini>es em umarquivo e posteriormente reutiliKFlas em um script ou seointerativa do interpretador. Esse arquivo $ denominado m)dulo.9efini>es de um m)dulo podem ser importadas por outros

    4+

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    74/224

    Programando em Python Do Bsico WEB

    m)dulos ou no m)dulo principal. m m)dulo $ um arquivocontendo defini>es e comandos '(thon. ! nome do arquivo

    recebe o sufi=o j.p(T . 9entro de um m)dulo, seu nome BumastringC est disponJvel na varivel global name. ! comandoreoadGm#duoHrecarrega m)dulo.

    ! procedimento para criar um m)dulo $ o mesmo paraescrever um programa completo. Abra uma anela nova em%9*EB@ile"e indoC, ou digite 6rtlF". Agora digite asfun>es e salve com a e=tenso .p(, este programa deve estar nodiret)rio que estea no path. E=emplo

    9escobrindo diret)rio

    import s(s s(s.pathGostra todos os diret)rios do path X 6p(thon2- ,6kk'(thon2-kk*ibkkidlelib,.....Z

    Escreveremos o m)dulo funcoes.p( e armaKenaremos numarquivo de nome funcoes.p(.

    funcoes.p(

    def perimetroBrC

    esta funcao calcula perimetro de um circulo de raio r tr( r_floatBrC return 2I+.1:Ir

    e=cept

    4:

    http://python25//Lib//idlelibhttp://python25//Lib//idlelib
  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    75/224

    Antonio Srgio Nogueira

    print Erro argumento

    def areaBrC r_floatBrC calcula area tr( r_floatBrC return +.1:IBrII2C e=cept

    print argumento e numerodef nadaBC faK nada so para mostrardoc strings pass

    "o shell importaremos o m)dulo e veremos o funcionamento,quando o m)dulo $ importado o '(thon gera o arquivocompilado '(thon Bfuncoes.p(cC

    import funcoesdir BfuncoesCmostra atributos e m$todos

    print funcoes.doc

    "one no tem documentao

    print funcoes.nada.docfaK nada so para mostrardoc strings

    print funcoes.perimetroB:C

    4-

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    76/224

    Programando em Python Do Bsico WEB

    2-.12

    "a hora de e=ecuo devemos informarm)dulo.funoBparHmetrosC.

    !utra forma de usar fun>es $ importFlas diretamente

    'romm)dulo im!ortfuncao1, funcao2,.....

    form funcoes import areaprint areaB:C use s) o nome da funo-0.2:

    7.7.1 T#duos !adro

    '(thon possui um biblioteca padro de m)dulos, descrita

    em um documento em separado, a Python Library Ae"erenceBdoravante N*ibrar( 8eferenceUC. Alguns m)dulos estoembutidos no interpretadorS estes possibilitam acesso aopera>es que no so parte do n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    77/224

    Antonio Srgio Nogueira

    s(s.ps2T... T s(s.ps1 _ T6 T6 print T[ucT[uc6

    Essas variveis s) esto definidas se o interpretador est emmodo interativo.

    A varivel s(s.path cont$m uma lista de strings quedetermina os caminhos de busca de m)dulos conhecidos pelointerpretador. Ela $ inicialiKada para um caminho defaultdeterminado pela varivel de ambiente '[5L!"'A5L ou porum valor default interno se a varivel no estiver definida. ocDpode modificFla utiliKando as opera>es tJpicas de lista, pore=emplo

    import s(s s(s.path.appendBTOufsOguidoOlibOp(thonTC

    A funo interna dirBC $ utiliKada para se descobrir que nomesso definidos por um m)dulo. Ela retorna umalista ordenada de strings

    import fibo, s(s dirBfiboCXTnameT, TfibT, Tfib2TZ

    dirBs(sCXTdispla(hooT, TdocT, Te=cepthooT,TnameT, TstderrT,

    44

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    78/224

    Programando em Python Do Bsico WEB

    TstdinT, TstdoutT, TgetframeT, TapiversionT, TargvT,TbuiltinmodulenamesT, Tb(teorderT, TcallstatsT, Tcop(rightT,Tdispla(hooT, Te=cclearT, Te=cinfoT, Te=ct(peT,Te=cepthooT,Te=ecprefi=T, Te=ecutableT, Te=itT, TgetdefaultencodingT,TgetdlopenflagsT,TgetrecursionlimitT, TgetrefcountT, The=versionT, Tma=intT,Tma=unicodeT,TmetapathT, TmodulesT, TpathT, TpathhoosT,

    TpathimportercacheT,TplatformT, Tprefi=T, Tps1T, Tps2T, TsetchecintervalT,TsetdlopenflagsT,TsetprofileT, TsetrecursionlimitT, TsettraceT, TstderrT, TstdinT,TstdoutT,TversionT, TversioninfoT, TarnoptionsTZ

    #em nenhum argumento, dirBC lista os nomes atualmentedefinidos.

    a _ X1, 2, +, :, -Z import fibo fib _ fibo.fib dirBCXTbuiltinsT, TdocT, TfileT, TnameT, TaT, TfibT,

    TfiboT, Ts(sTZ

    !bserve que ela lista nomes dos mais diversos tipos variveis,m)dulos, fun>es, etc.dirBC no lista nomes de fun>es ou variveis internas. #e vocDdesear conhecDFlos, eles esto definidos no m)dulo padrobuiltin

    4&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    79/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    80/224

    Programando em Python Do Bsico WEB

    TfroKensetT, TgetattrT, TglobalsT, ThasattrT, ThashT, ThelpT, The=T,TidT, TinputT, TintT, TinternT, TisinstanceT, TissubclassT, TiterT,TlenT, TlicenseT, TlistT, TlocalsT, TlongT, TmapT, Tma=T, TminT,TobectT, ToctT, TopenT, TordT, TpoT, Tpropert(T, TquitT, TrangeT,TrainputT, TreduceT, TreloadT, TreprT, TreversedT, TroundT, TsetT,TsetattrT, TsliceT, TsortedT, TstaticmethodT, TstrT, TsumT, TsuperT,TtupleT, Tt(peT, TunichrT, TunicodeT, TvarsT, T=rangeT, TKipTZX'[5Z

    7.7.) Pacotes

    'acotes so uma maneira de estruturar espaos de nomespara m)dulos utiliKando a sinta=e de Nseparao por pontoU.6omo e=emplo, o m)dulo A.7 designa um subm)dulo chamadoj7T num pacote denominado jAT. ! uso de pacotes permite queautores de grupos de m)dulos Bcomo "um'( ou '%*C no sepreocupem com a coliso entre os nomes de seus m)dulos e osnomes de m)dulos de outros autores. #uponha que vocD deseeproetar uma coleo de m)dulos Bum NpacoteUC para ogerenciamento uniforme de arquivos de som. E=istem muitosformatos diferentes Bnormalmente identificados pela e=tenso donome de arquivo, por e=emplo. j.avT, j.aiffT, j.auTC, de formaque vocD pode precisar criar e manter uma crescente coleo dem)dulos de converso entre formatos. Ainda podem e=istir

    muitas opera>es diferentes passJveis de aplicao sobre osarquivos de som Bmi=agem, eco, equaliKao, efeito est$reoartificialC. *ogo, possivelmente vocD tamb$m estar escrevendouma interminvel coleo de m)dulos para aplicar estasopera>es. Aqui est uma possJvel estrutura para o seu pacoteBe=pressa em termos de um sistema hierrquico de arquivosC

    &0

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    81/224

    Antonio Srgio Nogueira

    #oundO 'acote de mais alto nJvelinit.p( %nicialiKa pacote de som@ormatsO #ub pacote para arquivos de

    converso de formatoinit.p(avread.p(avrite.p(aiffread.p(...

    EffectsO #ub pacote de efeito de sonsinit.p(echo.p(surround.p(reverse.p(...

    @iltersO #ub pacote para filtrosinit.p(

    equaliKer.p(vocoder.p(araoe.p(

    ...

    Ao importar esse pacote o '(thon busca pelosubdiret)rio com mesmo nome nos diret)rios listados ems(s.path. !s arquivos jinit.p(T so necessrios para que

    '(thon trate os diret)rios como um conunto de m)dulos. %ssofoi feito para evitar diret)rios com nomes comuns, comojstringT, de inadvertidamente pode esconder m)dulos vlidosque ocorram a posteriori no caminho de busca. "o caso maissimples, jinit.p(T pode ser um arquivo vaKio. 'or$m, elepode conter c)digo de inicialiKao para o pacote ou gerar avarivel all, que ser descrita depois. surios do pacotepodem importar m)dulos individuais, por e=emplo

    &1

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    82/224

    Programando em Python Do Bsico WEB

    import #ound.Effects.echo

    Assim se carrega um subm)dulo #ound.Effects.echo. Ele deveser referenciado com seu nome completo, como em#ound.Effects.echo.echofilterBinput, output, dela(_0.4, atten_:C

    ma alternativa para a importao $from #ound.Effects import echo

    Assim se carrega o m)dulo sem necessidade de prefi=ao nahora do uso. *ogo, pode ser utiliKado como se segueecho.echofilterBinput, output, dela(_0.4, atten_:C

    5amb$m $ possJvel importar diretamente uma

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    83/224

    Antonio Srgio Nogueira

    7.7.+ Im!ortando @ de ,m Pacote

    Agora, o que acontece quando um usurio escreve from#ound.Effects import I / %dealmente, poderia se esperar quetodos subm)dulos presentes no pacote fossem importados.%nfeliKmente, essa operao no funciona muito bem nasplataformas Gac ou indos, onde no e=iste distino entremai

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    84/224

    Programando em Python Do Bsico WEB

    nome definido em jinit.p(T bem como em qualquersubm)dulo importado a partir deste. 6onsidere o c)digo abai=o

    import #ound.Effects.echoimport #ound.Effects.surroundfrom #ound.Effects import I

    "este e=emplo, os m)dulos echo esurroun so importados noespao de nomes corrente, pois esto definidos no pacote#ound.Effects. ! que tamb$m funciona quando all estiverdefinida. Em geral, a prtica de importar I de um dado m)dulo $desaconselhada, principalmente por preudicar a legibilidade doc)digo. 6ontudo, $ recomendada em sess>es interativas paraevitar e=cesso de digitao. *embreFse que no h nada deerrado em utiliKar from 'acage import specificsubmodule 9efato, essa $ a notao recomendada a menos que o m)dulo queefetua a importao precise utiliKar subm)dulos homnimos em

    diferentes pacotes. B5utorial '(thonC

    7.7.7 4e'erMncias em ,m Tesmo Pacote

    !s subm)dulos frequentemente precisam referenciar unsaos outros. 'or e=emplo, o m)dulo surround talveK preciseutiliKar o m)dulo echo. 9e fato, tais referDncias so to comunsque o comando import primeiro busca m)dulos dentro do pacoteantes de utiliKar o caminho de busca padro. 'ortanto, o m)dulosurround pode usar simplesmente import echo ou from echoimport echofilter. #e o m)dulo importado no for encontrado nopacote corrente Bo pacote do qual o m)dulo corrente $subm)duloC, ento o comando import procura por um m)dulode mesmo nome no escopo global. uando pacotes soestruturados em sub pacotes Bcomo no e=emplo #oundC, no

    &:

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    85/224

    Antonio Srgio Nogueira

    e=iste atalho para referenciar subm)dulos de pacotes irmos,ento o nome completo do pacote deve ser utiliKado. 'or

    e=emplo, se o m)dulo #[email protected] precisa utiliKar om)dulo echo no pacote #ound.Effects, $ preciso importFlocomo from #ound.Effects import echo. B5utorial '(thonC.

    7.7.9 Pacotes em m:ti!os diret#rios

    'acotes suportam mais um atributo especial, path.Este $ inicialiKado como uma lista contendo o nome do diret)riocom o arquivo jinit.p(T do pacote, antes do c)digo naquelearquivo ser e=ecutado. Esta varivel pode ser modificadaS issoafeta a busca futura de m)dulos e sub pacotes contidos nopacote. Apesar de no ser muito usado, pode ser usado paraestender o conunto de m)dulos usado num pacote. B5utorial'(thonC

    7.7.= T#duos Im!ortantes4 um grande con1unto de m5dulos que

    se instalam 1untamente com o interpretador!t-on6 so descritos nesta seo algunsdos mais interessantes.

    s!s oferece vrias opera>es referentes ao pr)priointerpretador. %nclui pat-, uma lista dos diret)rios debusca de m)dulos do p(thon, argv, a lista deparHmetros passados na linha de comando e eit(",uma funo que termina o programa.

    time oferece fun>es para manipular valores de tempo.%nclui time(", uma funo que retorna o timestampBdata e hora atualCS sleep(n", que pausa a e=ecuo

    &-

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    86/224

    Programando em Python Do Bsico WEB

    por n segundosS e strftime(n", que formata a data ehora atual em uma string de acordo com um formato

    fornecido. os oferece fun>es relacionadas ao ambiente de

    e=ecuo do sistema. %nclui m7dir(", que criadiret)riosS rename(", que altera nomes e caminhos dearquivosS e s!stem, que e=ecuta comandos do sistema.

    os.pat- oferece fun>es de manipulao do caminho

    independente de plataforma. %nclui isdir(p", quetesta se d$ um diret)rioS eists(p", que testa se pe=isteS 1oin(p,m", que retorna uma string com os doiscaminhos pe mconcatenados.

    string oferece fun>es de manipulao de string Bquetamb$m esto disponJveis como m$todos da stringC.%nclui split(c, s, p", que divide a string cem at$

    pparti>es separadas pelo sJmbolo s, retornandoFas emuma listaS lo2er(c", que retorna a string cconvertidaem min

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    87/224

    Antonio Srgio Nogueira

    getopt processamento de argumentos de comando delinhaS ou sea, os parHmetros que passamos para o

    interpretador na linha de e=ecuo. %nclui getopt(",que retorna duas listas, uma com argumentos e outra comop>es da linha de comando.

    87inter um m)dulo que permite a criao deprogramas com interface grfica, incluindo anelas,bot>es e campos te=to.

    A documentao do !t-on inclui umadescrio detal-ada (e muito boa" de cadaum destes m5dulos e de seus membros.

    7.9 8unJes de entrada e sada

    Entrada e saJda so opera>es de comunicao de umprograma com o mundo e=terno. Essa comunicao se dusualmente atrav$s de arquivos. Arquivos esto associados adispositivos. 'or e=emplo, disco, impressora, teclado. Em'(thon, um arquivo pode ser lidoOescrito atrav$s de um obetoda classe file.

    #empre que um comando print $ e=ecutado, o resultadovai para um arquivo chamado s(s.stdout. #empre que lemos umdado atrav$s do comando input ou rainput, na verdadeestamos lendo de um arquivo chamado s(s.stdin.Gensagens de

    erro ou de rastreamento de e=ce>es so enviadas para umarquivo chamado s(s.stderr.

    import s(s s(s.stdout.riteBaloCalo print alo

    &4

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    88/224

    Programando em Python Do Bsico WEB

    alo s(s.stdin.readlineBCsfadfassfadfaskn rainputBCfasdfadsffasdfadsf

    !s arquivos s(s.stdin, s(s.stdout e s(s.stderr

    normalmente esto associados ao teclado e ao displa( doterminal que est sendo usado, mas podem ser associados aoutros dispositivos.

    Em ni=O*inu= e indos

    !rograma X arLui%oE=ecuta programa redirecionando stdout para arquivo

    !rograma arLui%oE=ecuta programa redirecionando stdin de arquivo

    !rograma1 Y !rograma)E=ecuta programa1 e programa2 sendo que a saJda deprograma1 $ redirecionada para a entrada de programa2

    rainputBC F funo que retorna sempre uma string

    = _ rainputB%nforme a fase C%nforme a fase vapor =vapor

    &&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    89/224

    Antonio Srgio Nogueira

    8etornando um inteiro ou float

    r _ floatBrainputB8aio CC8aio :.- t(peBrCt(pe float a _ intBrainputB5amanho do lado do quadrado C5amanho do lado do quadrado 2+

    t(peBaCt(pe int

    inputBC F funo que retorna n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    90/224

    Programando em Python Do Bsico WEB

    1 d)lar vale 2.;& reais2 d)lares valem -.;3 reais+ d)lares valem &.;: reais a _ XWoo, 8afael, 9ouglasZ aXWok=e+o, 8afael, 9ouglasZ for i in a

    print i

    Woo8afael9ouglas for = in a

    print ?s tem ?i letras ?B=,lenB=CC

    Woo tem : letras

    8afael tem 3 letras9ouglas tem 4 letras a_X1,2,+Z for i in rangeBlenBaCC

    print i

    1

    2+

    a_X1,2,+Z for i in rangeBlenBaCC

    print i,

    1 2 +

    ;0

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    91/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    92/224

    Programando em Python Do Bsico WEB

    z.z.12.KfillB-C string com Kero a esquerda0001-

    tabela _ #ergio :124, Wose :0;&, 9ino 434& for nome, fone in tabela.itemsBC

    print ?F10s __ ?10d ? Bnome, foneC

    9ino __ 434&Wose __ :0;ergio __ :124

    7.9.1 !eraJes com arLui%os

    Em '(thon, assim como em outras linguagens, $ possJvelmanipular arquivos. 9esse modo, o usurio consegue abrir, ler,alterar, gravar e fechar um arquivo. 5udo o que vocD precisapara manipular, corretamente, um arquivo $ conhecer osm$todos responsveis por cada coisa. A funoopen(nomeCar,ui%o

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    93/224

    Antonio Srgio Nogueira

    conte

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    94/224

    Programando em Python Do Bsico WEB

    t.readBCTEsse $ todo o conte

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    95/224

    Antonio Srgio Nogueira

    t.0riteGstringH escreve o conte

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    96/224

    Programando em Python Do Bsico WEB

    t _ openBTtestearquivoT, TrTC o arquivo deve e=istirt.riteBT012+:-34&;abcdefTCt.seeB-C ai para o se=to b(teprint t.readB1Ct.seeBF+, 2C ai para o terceiro b(te antes do fimprint t.readB1Cprint t.tellBCt.closeBC fecha arquivo

    -d1:

    t.coseGHfecha arquivo.

    7.9.+ Interao com sistema o!eraciona

    !pera>es de entrada e saJda so na verdade realiKadaspelo sistema operacional. ! m)dulo Nos< possui diversasvariveis e fun>es que audam um programa '(thon a seadequar ao sistema operacional, por e=emplo

    im!ort osF importa m)dulo NosU.

    os.getc0dGHF retorna o diret)rio corrente.

    os.chdirGdirHF muda o diret)rio corrente para ir.

    os.se!F $ uma string com o caractere que separa componentesde um caminho BO para Uni#, kk para inosC.

    ;3

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    97/224

    Antonio Srgio Nogueira

    os.!ath.e2istsGZcaminhoH F informa se e=iste o caminho.

    os.systemGZstring cuidado 'ormata o disco

    os.start'ieG[arLui%o[H ? e=ecuta um arquivo se ele for dotipo .bat ou .e=e.

    os.startfileBc.batC

    E=emplo de um programa instalador, que cria umdiret)rio na linha 3, copia o programa para o diret)rio e abreum arquivo de te=to com o bloco de notas.

    instalar.p(

    import oscomando_os.s(stemcomandoBcop( akmeumodulo.p( ck'(thon24C"!GE_rainputB#eu nome C *inha :"!GE_'(thonF"!GEcomandoBmd ck"!GEC *inha 3comandoBcop( akmeuprograma.p( ck"!GECabrir_os.startfileabrirBaOleiame.t=tC

    7.= 8uno %arsGH

    ! dicionrio obtido com a funo varsBC pode ser usadopara ter acesso a todas as variveis definidas num escopo.

    ;4

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    98/224

    Programando em Python Do Bsico WEB

    varsBCbuiltins module builtin BbuiltFinC,name main, doc "one def fBC

    = _ 1print varsBC

    varsBCf function f at 0=b3e4f-3c, builtins

    module builtin BbuiltFinC, namemain, doc "one fBC= 1

    7. Erros e e2ceJes

    #o os dois tipos de erro mais comuns. m erro desinta=e ocorre quando vocD no respeita a sinta=e, digitandoerrado ou esquecendo de algo, como NU.

    if = 10#(nta=Error invalid s(nta=

    "esse caso, est faltando NU no final da condio.

    7..1 $omo er uma mensagem de erro

    A dura realidade $ que um programador profissionalpassa boa parte de sua vida caando erros, e por isso $fundamental saber e=trair o m=imo de informa>es dasmensagens resultantes. A essa altura vocD talveK tenha

    ;&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    99/224

    Antonio Srgio Nogueira

    provocado um erro para ver o que acontece. amos faKer issoagora, e aprender a ler as mensagens resultantes. 'ode parecer

    perda de tempo, mas $ importantJssimo saber interpretar asmensagens de erro porque a melhor forma de aprender aprogramar $ e=perimentando, e ao e=perimentar vocDcertamente vai provocar muitos erros. 6omo e=emplo, vamosdigitar um programa com uma e=presso aritm$tica sem sentido.

    c_1

    print ca_42print 4O0

    5racebac Bmost recent call lastC @ile 6O'(thon24Oteste.p(, line :, in module print 4O0^ero9ivisionError integer division or modulo b( Kero

    A primeira linha da mensagem de erro informa o arquivoonde ocorreu o erro8ie \$]Python)]teste.!y\3 ine 73 in modueX.

    uando vocD est usando o interpretador em modointerativo essa informao $ in

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    100/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    101/224

    Antonio Srgio Nogueira

    diversas e#cept com diferentes tipos de e=ce>es, entre elesValueError3IndeError3 !"peError.

    E=istem, ainda, duas outras instru>es raise e"inally. "oprimeiro caso, fora a ocorrDncia de um determinado tipo dee=ceo. uando e=istir a instruo"inally, seus comandos seroe=ecutados independentemente de e=istir ou no e=ce>es, esero e=ecutados antes das e=ce>es. A instruo try nuncapermite que o usurio use e#cept e "inally, simultaneamente.Al$m de e=istir diversos tipos pr$Fdefinidos de e=ce>es no'(thon, o usurio tem a liberdade de criar seus pr)prios tipos dee=ce>es atrav$s de classes.

    hile 5ruetr(

    = _ intBrainputBEntre com um n

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    102/224

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    103/224

    Antonio Srgio Nogueira

    9. Bi5ioteca Padro

    9.1 Inter'ace com "istema !eraciona

    ! m)dulo os oferece interfaceamento com o sistemaoperacional e possui vrias fun>es. 'ara carregFlo digiteim!ort os, vea os comandosdirGosH e he!GosH.

    os.getc0dGH F retorna o diret)rio corrente.

    os.getcdBC6kk'(thon2-

    os.chdirGdiret#rioXHF muda o diret)rio corrente.

    os.chdirBOC

    os.getcdBC6kk

    se import os ao inv$s de from os import I, que pode ocultarfun>es como os.openBCque funcionam diferente.

    renameG%ehoX3no%oarLui%oXH F renomeia arquivo.

    ea documentao atrav$s do helpBosC.

    9.) T#duo shuti

    tilitrio com fun>es para copiar arquivos e rvore dediret)rios.

    10+

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    104/224

    Programando em Python Do Bsico WEB

    import shutil importa m)dulo shutil.cop(fileBTdata.dbT, Tarchive.dbTC copia arquivo shutil.moveBTObuildOe=ecutablesT, TinstalldirTC movearquivo ou diret)rio para outro local

    9.+ T#duo go5

    8etorna uma lista de arquivos de diret)rio, usandocaracteres coringa.

    glob.glob BI.p(C retorna todos os arquivos de e=tenso.p( do diret)rio.

    Xteste.p(Z

    9.7 T#duo sys

    'rovD acesso a alguns obetos usados ou mantidos pelointerpretador que interage diretamente com o interpretador.

    s(s.path Y lista os diret)rios do path.

    X6O'(thon24, 6kk'(thon24kk*ibkkidlelib,6kk%"9!#kks(stem+2kkp(thon24.Kip,6kk'(thon24kk9**s, 6kk'(thon24kklib,6kk'(thon24kklibkkplatFin, 6kk'(thon24kklibkklibFt,6kk'(thon24, 6kk'(thon24kklibkksiteFpacagesZ

    #cripts geralmente precisam processar argumentospassados na linha de comando. Esses argumentos soarmaKenados como uma lista no atributo arg% do m)dulo s(s.

    10:

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    105/224

    Antonio Srgio Nogueira

    'or e=emplo, terJamos a seguinte saJda e=ecutando S!ythondemo.!y um dois tresna linha de comando

    import s(s print s(s.argvXTdemo.p(T, TumT, TdoisT, TtresTZ

    s(s.e=itBC F encerra um script.

    9.9 T #duo math

    !ferece acesso xs fun>es da biblioteca 6 paramatemtica e ponto flutuante.

    import math math.cosBmath.pi O :.0C0.4041034&11&3-:4-4 math.logB102:, 2C10.0

    9.= T#duo random

    @ornece ferramentas para gerar sele>es aleat)rias.

    import random random.choiceBXTappleT, TpearT, TbananaTZCTappleT random.sampleB=rangeB100C, 10C e=emplo semsubstituicaoX+0, &+, 13, :, &, &1, :1, -0, 1&, ++Z

    10-

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    106/224

    Programando em Python Do Bsico WEB

    random.randomBC randomico float0.14;40;&43;+4031&3 random.randrangeB3C escolhendo randomico de umafai=a de 3:

    9. T#duo datetime

    @ornece classes para manipulao de datas e horas nas

    mais variadas formas.

    6alendrios so facilmente formatados e construJdos

    from datetime import date no _ date.toda(BC no

    datetime.dateB200+, 12, 2C no.strftimeB?mF?dF?(. ?d ?b ?[ is a ?A on the?d da( of ?7.CT12F02F0+. 02 9ec 200+ is a 5uesda( on the 02 da( of9ecember.T

    #uporte a operao aritm$ticas entre datas

    birthda( _ dateB1;3:, 4, +1C age _ no F birthda( age.da(s1:+3&

    103

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    107/224

    Antonio Srgio Nogueira

    9. T#duo Ri5

    6ompresso de dados.

    import Klib =_! rato roeu a roupa rasgada do rei de 8omalenB=C:2t_Klib.compressB=C

    lenBtC:2a_Klib.decompressBtCprint t! rato roeu a roupa rasgada do rei de 8oma

    9. T#duo array

    @ornece obeto arrayGH, para trabalhar com listas.

    #omando uma lista com : elementos num$ricos todos comtamanho de 2 b(tes em veK de 13 b(tes da representaonormal. from arra( import arra(

    a _ arra(BTLT, X:000, 10, 400, 22222ZC sumBaC23;+2 aX1+Zarra(BTLT, X10, 400ZC

    104

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    108/224

    Programando em Python Do Bsico WEB

    9.1F T#duo coection

    !beto deLuepara ane=ar e remover rapidamenteelementos em listas.

    from collections import deque d_dequeBXtar1,tar2,tar+ZC d.appendBtar:C print Ganipulando,d.popleftBCGanipulando tar1

    9.11 T#duo decima

    'ara trabalhar com nes financeiras.

    from decimal import I 9ecimalBT0.44TC I 9ecimalBT1.03TC9ecimalB0.&132C getconte=tBC.prec _ +3 9ecimalB1C O 9ecimalB4C9ecimalB0.1:2&-41:2&-41:2&-41:2&-41:2&-41:2&-4C

    getconte=tBC.prec_-: 9ecimalB1CO9ecimalB4C9ecimalB0.1:2&-41:2&-41:2&-41:2&-41:2&-41:2&-41:2&-41:2&-41:2&-4C

    10&

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    109/224

    Antonio Srgio Nogueira

    9.1) T#duo itime

    'ara medi>es de tempo.

    from timeit import 5imer 5imerBTt_aS a_bS b_tT, Ta_1S b_2TC.timeitBC0.1-2;24:3;--:124+&- 5imerBTa,b _ b,aT, Ta_1S b_2TC.timeitBC0.0;;:3-;:+1+:+3204&

    9.1+ T#duo doctest

    'ara e=ecutar testes automticos com o docstring. 8etorna errose o resultado no for o esperado.

    gere este arquivo teste.p(def mediaBvaluesC

    6alcula a media aritmetica de uma lista print mediaBX20, +0, 40ZC

    -0.0return sumBvalues, 0.0C O lenBvaluesC

    import doctestdoctest.testmodBC

    10;

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    110/224

    Programando em Python Do Bsico WEB

    No she a!arecer mensagem de erro

    IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII@ile main, line +, in main.media@ailed e=ample print mediaBX20, +0, 40ZCE=pected -0.0Pot

    :0.0IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII1 items had failures 1 of 1 in main.mediaIII5est @ailedIII 1 failures.

    "u5stitua o %aor 9F !or 7F e a 'uno no retorna nenhumresutado.

    110

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    111/224

    Antonio Srgio Nogueira

    =. rientao a 5Keto

    =.1 Introduo a Programao rientada a 5KetosGPH

    Este termo foi criado por Alan 6urtis Qa(, autor dalinguagem de programao #malltal. Antes da criao do#malltal, algumas das ideias da '!! eram aplicadas, sendoque a primeira linguagem a realmente utiliKar estas ideias foi alinguagem #imula 34, criada por !le Wohan 9ahl e Qristen

    "(gaard em 1;34. Este paradigma de programao $ bastanteantigo e hoe vem sendo aceito nas grandes empresas dedesenvolvimento de #oftare. E=emplos de linguagensmodernas que utiliKam '!! Wava, 6, 6, !bect 'ascalB9elphiC, 8ub(, '(thon, *isp, ...

    =.) Lue P/

    6om o obetivo de apro=imar o mundo real do mundovirtual, a programao orientada a obeto tenta simular o mundoreal dentro do computador. 'ara isso, nada mais natural do queutiliKar obetos, afinal, nosso mundo $ composto de obetos,certo/ 6om isto, o programador $ responsvel por moldar omundo dos obetos, e e=plicar para estes obetos como elesdevem interagir entre si. !s obetos conversam uns com osoutros atrav$s do en%io de mensagens, e o papel principal doprogramador $ especificar quais sero as mensagens que cadaobeto pode receber, e tamb$m qual a ao que aquele obetodeve realiKar ao receber aquela mensagem especJfica. mamensagem $ um pequeno te=to que os obetos conseguementender e, por quest>es t$cnicas, no pode conter espaos.Wunto com algumas dessas mensagens ainda $ possJvel passaralgumas informa>es para o obeto BparHmetrosC, dessa forma,

    111

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    112/224

    Programando em Python Do Bsico WEB

    dois obetos conseguem trocar informa>es entre si facilmente.'or e=emplo num sistema de controle de clientes podemos

    afirmar que um dos obetos so os clientes.

    =.+ De'iniJes 5sicas de orientao a o5Keto

    ! obeto $ um tipo abstrato que cont$m dados mais osprocedimentos que manipulam esses dados, ou $ uma unidadede softare que encapsula algoritmos e os dados sobre o qual osalgoritmos atuam.

    Tensagens uma informao enviada ao obeto para que elese comporte de uma determinada maneira. m programaorientado a obetos em e=ecuo consiste em envios,interpreta>es e respostas xs mensagens.

    TCtodos #o procedimentos ou fun>es residentes nos obetos

    que determinam como eles iro atuar ao receber as mensagens.

    ari%eis de InstUncia #o variveis que armaKenaminforma>es ou dados do pr)prio obeto. 'odem tamb$m serchamadas de propriedades do obeto.

    $asse *strutura fundamental para definirnovos ob1etos. 9ma classe definida emc5digo0fonte, e possui nome, um con1unto deatributos e mtodos.

    "u5casse ma nova classe originada de uma classe maiorBclasse paiC.InstUncia#o os obetos de uma classe. 6ada obeto utiliKadoem uma aplicao pertencente a uma classe, e $ uma instHncia

    112

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    113/224

    Antonio Srgio Nogueira

    dessa classeBdiKFse que o obeto fabricado por uma classe $ umainstncia da classeC.

    _ereditariedade um mecanismo que permite ocompartilhamento de m$todos e dados entre classes, subclassese obetos. A hereditariedade permite a criao de novas classesprogramando somente as diferenas entre a nova classe e aclasse pai.

    Enca!suamento ou a5strao um mecanismo que permite

    o acesso aos dados do obeto somente atrav$s dos m$todos desseobeto. "enhuma outra parte do programa pode operar sobre osdados de nenhum obeto. A comunicao entre os obetos $ feitaapenas atrav$s de mensagens.

    Poimor'ismo ma mesma mensagem pode provocar respostasdiferentes quando recebidas por obetos diferentes. 6om o

    polimorfismo, podeFse enviar uma mensagem gen$rica e dei=ara implementao a cargo do obeto receptor da mensagem.

    PersistMncia a permanDncia de um obeto na mem)ria.uando um obeto $ necessrio, ele $ criado na mem)riaBm$todos construtoresC. uando ele no for mais necessrio, $destruJdo da mem)ria Bm$todos destrutoresC. uando um obeto$ destruJdo, seu espao na mem)ria $ liberado automaticamente.Este processo recebe o nome de Ncoleta de li=oU BgarbagecollectorC.

    =.7 P em Python

    Em '(thon todos os tipos de dados so obetos. 6om oobetivo de entender classes, $ preciso falar das regras de escopo

    11+

  • 8/12/2019 pythondobsicoweb-131028070251-phpapp02

    114/224

    Programando em Python Do Bsico WEB

    em '(thon. ! que h de importante para saber $ que no e=istenenhuma relao entre nomes em espaos distintos. 'or

    e=emplo, dois m)dulos podem definir uma funo de nomeNma=imiKeU sem confuso Y usurios dos m)dulos devemprefi=ar a funo com o nome do m)dulo para evitar coliso. normal utiliKar a palavra atributopara qualquer nome depois deum ponto. "a e=presso K.real, por e=emplo, real $ um atributodo obeto K. Estritamente f