Upload
marcio-greich-riberio-paes
View
233
Download
1
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_Rossum8/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//idlelib8/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