28
Lista de guia rapidos Operações com Listas: Operação Descrição x in s 1 se x estiver contido em s, caso contrário 0. n not in s 1 se x não estiver contido em s, caso contrário 0. s + t concatenação de s + t. s * n n cópias de s concatenado. s[i] elemento cujo índice é i, primeiro índice é 0. s[i:j] seqüencia de elementos entre os índices i e j. len(s) números de elementos da seqüência (comprimento). min(s) menor valor da seqüência. max(s) maior valor da seqüência. s[i] = j substitui um elemento. s[i:j] = t substitui um grupo de elementos. del s[i] remove o elemento da posição i. del s[i:j] remove um grupo de elementos. s.append(x) adiciona um elemento (no final da lista). s.extend(x) adiciona uma lista (ao final da lista). s.count(x) retorna o número de vezes que um elemento está presente na lista s.index(x) retorna o menor índice do elemento. s.insert(i,x) insere o elemento x na posição i. s.pop([i]) retira um elemento da posição i. Padrão i = -1. s.remove(x) remove um elemento. s.reverse() inverte a ordem da lista. s.sort([cmpfunc]) ordena a lista. Exemplos: >>> a = [1,2,3] >>> s = [1,2,3] >>> t = [4,5,6] >>> x = 2 >>> x in s True >>> x not in s False >>> s + t [1, 2, 3, 4, 5, 6] >>> s * 2 [1, 2, 3, 1, 2, 3] >>> s[2] 3 >>> s[1:3] [2, 3] >>> len(s) 3 >>> min(s) 1 >>> max(s) 3 >>> a = [1,2,3,4] >>> a[1] = 10 >>> a [1, 10, 3, 4] >>> a.append(30) >>> a [1, 10, 3, 4, 30] >>> a.extend([90,32]) >>> a [1, 10, 3, 4, 30, 90, 32] >>> a.index(30) 4 >>> a.reverse() >>> a [32, 90, 30, 4, 3, 10, 1] >>> a.pop() 1 P3ListasResumoAula MarcoAndreLopesMendes >>> quadradoMagico = ['Ronaldo', 'Kaka','Ronaldinho', 'Adriano'] 1

Lista de Guia Rapidos Python

Embed Size (px)

DESCRIPTION

curso de programação

Citation preview

Lista de guia rapidosOperaes com Listas:OperaoDescriox in s1 se x estiver contido em s, caso contrrio 0.n not in s1 se x no estiver contido em s, caso contrrio 0.s + t concatenao de s + t.s * n n cpias de s concatenado.s!i"e#emento cu$o %ndice & i, primeiro %ndice & 0.s!i:$"se'(encia de e#ementos entre os %ndices i e $.#en)s*n+meros de e#ementos da se'(,ncia )comprimento*.min)s*menor va#or da se'(,ncia.max)s*maior va#or da se'(,ncia.s!i" - $su.stitui um e#emento.s!i:$" - tsu.stitui um grupo de e#ementos.de# s!i"remove o e#emento da posio i.de# s!i:$"remove um grupo de e#ementos.s.append)x* adiciona um e#emento )no /ina# da #ista*.s.extend)x* adiciona uma #ista )ao /ina# da #ista*.s.count)x*retorna o n+mero de ve0es 'ue um e#emento est presente na #istas.index)x*retorna o menor %ndice do e#emento.s.insert)i,x* insere o e#emento x na posio i.s.pop)!i"*retira um e#emento da posio i. 1adro i - 21.s.remove)x* remove um e#emento.s.reverse)* inverte a ordem da #ista.s.sort)!cmp/unc"* ordena a #ista.3xemp#os:444 a - !1,5,6"444 s - !1,5,6"444 t - !7,8,9"444 x - 5444 x in s:rue444 x not in s;a#se444 s + t!1, 5, 6, 7, 8, 9"444 s * 5!1, 5, 6, 1, 5, 6"444 s!5"6444 s!1:6"!5, 6"444 #en)s*6444 min)s*1444 max)s*6444 a - !1,5,6,7"444 a!1" - 10444 a!1, 10, 6, 7"444 a.append)60*444 a!1, 10, 6, 7, 60"444 a.extend)!#ist>4444 /or $ogador in 'uadrado=agico:print $ogador

?ona#do@aAa?ona#dinBoCdriano444 #en)'uadrado=agico*17444 /or i in range)#en)'uadrado=agico**:print 'uadrado=agico!i"

?ona#do@aAa?ona#dinBoCdriano444 range)#en)'uadrado=agico**!0, 1, 5, 6"444 range)7*!0, 1, 5, 6"444 ' - 'uadrado=agico444 $ogador>Cdriano>444 #en)'*7444 print '!0"?ona#do444 print '!1"@aAa444 print '!5"?ona#dinBo444 print '!6"Cdriano444 '!7":race.acA )most recent ca## #ast*:;i#e FEpDsBe##G584F, #ine 1, in 2top#eve#2'!7"Hndex3rror: #ist index out o/ range444 /or i in range)#en)'uadrado=agico**:print i, 'uadrado=agico!i"

0 ?ona#do1 @aAa5 ?ona#dinBo6 Cdriano444 '!>?ona#do>, >@aAa>, >?ona#dinBo>, >Cdriano>"444 /or i in range)#en)'uadrado=agico**:i/ 'uadrado=agico!i"!0" -- >?>: print i, 'uadrado=agico!i"

0 ?ona#do5 ?ona#dinBo444 /or i in range)#en)'uadrado=agico**:i/ 'uadrado=agico!i"!0" -- >?>: print i, 'uadrado=agico!i"@eD.oardHnterrupt444 /or $ogador in ':i/ $ogador!0" -- >?>:print $ogador

?ona#do?ona#dinBo444 'uadrado=agico.sort)*444 /or $ogador in ':print $ogador

Cdriano5@aAa?ona#dinBo?ona#do444 'uadrado=agico.reverse)*444 /or $ogador in ':print $ogador

?ona#do?ona#dinBo@aAaCdriano444 /or i in range)#en)'uadrado=agico**:print i, 'uadrado=agico!i"

0 ?ona#do1 ?ona#dinBo5 @aAa6 Cdriano444 $ogador>Cdriano>444 $ogador in 'uadrado=agico:rue444 $ogador - >Iianca>444 $ogador in 'uadrado=agico;a#se444 444 444 /or $ogador in ':i/ $ogador!0:5" -- >?o>:print $ogador

?ona#do?ona#dinBo444 '.append)>?icardinBo>*444 #en)'*8444 '!>?ona#do>, >?ona#dinBo>, >@aAa>, >Cdriano>, >?icardinBo>"444 /or $ogador in ':i/ $ogador!0" -- >?>:print $ogador

?ona#do?ona#dinBo?icardinBo444 /or $ogador in ':i/ $ogador!0:5" -- >?o>:print $ogador

?ona#do?ona#dinBo444 #en)'*@eD.oardHnterrupt444 /or $ogador in ':print $ogador

?ona#do?ona#dinBo6@aAaCdriano?icardinBo444 '.sort)*444 '!>Cdriano>, >@aAa>, >?icardinBo>, >?ona#dinBo>, >?ona#do>"444 /or $ogador in ':print $ogador

Cdriano@aAa?icardinBo?ona#dinBo?ona#do444 '!0" - >Cdriano Hmperador>444 '!>Cdriano Hmperador>, >@aAa>, >?icardinBo>, >?ona#dinBo>, >?ona#do>"444 '!1" - >1rincipe> + > > + '!1"444 '!>Cdriano Hmperador>, >1rincipe @aAa>, >?icardinBo>, >?ona#dinBo>, >?ona#do>"444 /or $ogador in ':print $ogador

Cdriano Hmperador1rincipe @aAa?icardinBo?ona#dinBo?ona#do444 '!5" - >?omrio>444 '!>Cdriano Hmperador>, >1rincipe @aAa>, >?omJxe1rio>, >?ona#dinBo>, >?ona#do>"444 /or $ogador in ':print $ogador

Cdriano Hmperador1rincipe @aAa?omrio?ona#dinBo?ona#do444 '!5" +- FKovLF444 '!>Cdriano Hmperador>, >1rincipe @aAa>, >?omJxe1rioKovJx/7>, >?ona#dinBo>, >?ona#do>"444 /or $ogador in ':print $ogador

Cdriano Hmperador1rincipe @aAa?omrioKovL?ona#dinBo?ona#do444 '!5" - FKovo ?omarioF444 '!>Cdriano Hmperador>, >1rincipe @aAa>, >Kovo ?omario>, >?ona#dinBo>, >?ona#do>"444 /or $ogador in ':print $ogador

Cdriano Hmperador1rincipe @aAaKovo ?omario?ona#dinBo7?ona#do444 '!6" +- > Ma+cBo>444 /or $ogador in ':print $ogador

Cdriano Hmperador1rincipe @aAaKovo ?omario?ona#dinBo Ma+cBo?ona#do444 '!7" +- > Io#ao>444 /or $ogador in ':print $ogador

Cdriano Hmperador1rincipe @aAaKovo ?omario?ona#dinBo Ma+cBo?ona#do Io#ao444 444 444 444 444 444 444 '.sort)*444 /or $ogador in ':print $ogador

Cdriano Hmperador1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario444 #en)'*8444 $ogador - '!0"444 $ogador>Cdriano Hmperador>444 n - $ogador.sp#it)*444 n!>Cdriano>, >Hmperador>"444 '!0" - n!1" + > > + n!0"444 '!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>"444 /or $ogador in ':print $ogador

Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario444 '!0".sp#it)*!>Hmperador>, >Cdriano>"444 '!0".sp#it)*!0">Hmperador>444 nome - '!0"444 nome>Hmperador Cdriano>444 nomeN - nome.sp#it)*8444 nomeN!>Hmperador>, >Cdriano>"444 nomeN!0">Hmperador>444 /or $ogador in 'uadrado=agico:print $ogador

Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario444 '!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>"444 'uadrado=agico!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>"444 copia - 'uadrado=agico!:"444 copia!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>"444 copia.pop)*>Kovo ?omario>444 copia!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>"444 '!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>"444 'uadrado=agico!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>"444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!0"

Hmperador1rincipe?ona#dinBo?ona#doKovo444 copia.pop)*@eD.oardHnterrupt444 /or $ogador in 'uadrado=agico:print $ogador.upper)*

H=13?CDO? CD?HCOO1?HOPH13 @C@C?OOCLDHOQO MCRPQO?OOCLDO IOLCOKOKO ?O=C?HO444 @eD.oardHnterrupt444 /or i in range)#en)'uadrado=agico**:print i, 'uadrado=agico!i"

0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do Io#ao7 Kovo ?omario444 /or i in range)#en)'uadrado=agico**:print i, '[email protected] /or $ogador in 'uadrado=agico:

[email protected] /or i in range)#en)'uadrado=agico**:'!i" - '!i".#oSer)*print '!i"

imperador adrianoprincipe AaAarona#dinBo ga+cBorona#do .o#aovovo romario444 /or $ogador in 'uadrado=agico: print $ogadorimperador adrianoprincipe AaAarona#dinBo ga+cBorona#do .o#aovovo romario444 '!>imperador adriano>, >principe AaAa>, >rona#dinBo gaJx/acBo>, >rona#do .o#ao>, >vovo romario>"444 /or $ogador in 'uadrado=agico: print $ogador.tit#e)*Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario444 /or $ogador in 'uadrado=agico: print $ogador.capita#i0e)*Hmperador adriano1rincipe AaAa?ona#dinBo ga+cBo?ona#do .o#aoKovo romario444 /or i in range)#en)'uadrado=agico**:'!i" - '!i".tit#e)*print '!i"

Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario444 #en)'*8444 444 444 444 /or $ogador in 'uadrado=agico: print [email protected] /or i in range)#en)'uadrado=agico**:print '!i"

Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario444 /or i in range)#en)'uadrado=agico**:print i, '!i"

T0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do Io#ao7 Kovo ?omario444 '.append)>3dson Crantes do Oascimento>*444 '!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>, >3dson Crantes do Oascimento>"444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!0"

Hmperador1rincipe?ona#dinBo?ona#doKovo3dson444 444 444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!21"

Cdriano@aAaMa+cBoIo#ao?omarioOascimento444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!1"

Cdriano@aAaMa+cBoIo#ao?omarioCrantes444 '!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>, >3dson Crantes do Oascimento>"444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!21"

Cdriano@aAaMa+cBoIo#ao?omarioOascimento444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!0", nomeNeparado!21"

Hmperador CdrianoU1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario3dson Oascimento444 '.append)>=arco Cndre Lopes =endes>*444 444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!21"

Cdriano@aAaMa+cBoIo#ao?omarioOascimento=endes444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!0"

Hmperador1rincipe?ona#dinBo?ona#doKovo3dson=arco444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!0", nomeNeparado!21"

Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario3dson Oascimento=arco =endes444 /or i in range)#en)'uadrado=agico**:print i, '!i"

0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do Io#ao7 Kovo ?omario8 3dson Crantes do Oascimento9 =arco Cndre Lopes =endes444 i - 0444 SBi#e 1 E #en)'*:print '!i"i +- 1

Hmperador Cdriano1rincipe @aAa?ona#dinBo Ma+cBo?ona#do Io#aoKovo ?omario3dson Crantes do OascimentoHmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >?ona#do Io#ao>, >Kovo ?omario>, >3dson Crantes do Oascimento>, >=arco Cndre Lopes =endes>"444 de# 'uadrado=agico!7"444 /or $ogador in 'uadrado=agico:nomeNeparado- $ogador.sp#it)*print nomeNeparado!0", nomeNeparado!21"@eD.oardHnterrupt444 /or i in range)#en)'uadrado=agico**:print i, '!i"

0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do Io#ao7 3dson Crantes do Oascimento8 =arco Cndre Lopes =endes444 $ogador- '.pop)*10444 $ogador>=arco Cndre Lopes =endes>444 /or i in range)#en)'uadrado=agico**:print i, '!i"

0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 ?ona#do Io#ao7 3dson Crantes do Oascimento444 $ogador- '.pop)6*444 $ogador>?ona#do Io#ao>444 /or i in range)#en)'uadrado=agico**:print i, '!i"

0 Hmperador Cdriano1 1rincipe @aAa5 ?ona#dinBo Ma+cBo6 3dson Crantes do Oascimento444 '.append)FDiogoF*444 '!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >3dson Crantes do Oascimento>, >Diogo>"444 '.insert)0,FQe#enoF*444 '!>Qe#eno>, >Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >3dson Crantes do Oascimento>, >Diogo>"444 /ruta - !>.anana>,>maca>"444 /ruta!>.anana>, >maca>"444 /rutas - !>.anana>,>maca>"444 /or i in range)#en)/rutas**:/rutas!i" +- FsF

444 /rutas!>.ananas>, >macas>"444 /or i in range)5*:/rutas!i" +- FsF

444 /or i in range)5*:print /rutas!i"

.ananassmacass444 /rutas.append)>AiSi>*444 /or i in range)5*:print /rutas!i"

.ananassmacass444 /or i in range)6*:print /rutas!i"

.ananassmacassAiSi444 /ruta!>.anana>, >maca>"444 /ruta - /rutas!0"11444 /ruta>.ananass>444 /ruta!:21">.ananas>444 /ruta!:25">.anana>444 /ruta!:">.ananass>444 /ruta>.ananass>444 /ruta!0:25">.anana>444 /ruta!0:5">.a>444 /ruta!0:6">.an>444 /ruta!0:25">.anana>444 '!>Qe#eno>, >Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >3dson Crantes do Oascimento>, >Diogo>"444 '.pop)*>Diogo>444 '!>Qe#eno>, >Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >3dson Crantes do Oascimento>"444 #en)'*8444 '.remove)FQe#enoF*444 '!>Hmperador Cdriano>, >1rincipe @aAa>, >?ona#dinBo MaJx/acBo>, >3dson Crantes do Oascimento>"444 444 444 444 min)'*>3dson Crantes do Oascimento>444 notas - !o: to .ro'ram. .rentice >all-2II2P3ClassesResumoMarcoAndreLopesMendes18Objetivos:A pro'ramao orientada a o$;etos 5.336 um meio diferente de pensar so$re pro'ramao. J uma metodolo'ia moderna *ue foi a$raadapela ind@stria de soft:are e usada na criao da maioria dos soft:are comerciais novos. 3 $loco $&sico de construo em .33 o o$;eto desoft:are8fre*Kentementec%amados apenas deo$;eto. A'ora- voc9dar&seus primeiros passos emdireoFcompreensoda.33.Especificamente- voc9 aprender& aL1. )riar classes para definir o$;etos2. Escrever mtodos e criar atri$utos para o$;etos. Mnstanciar o$;etos a partir de classes". !estrin'ir o acesso a atri$utos do o$;etoA pro'ramao orientada a o$;etos 5.336 encapsula 5i.e.- em$rul%a6 dados 5atri$utos6 e funes 5comportamentos6 em componentes c%amadosde classes. 3s dados e funes de uma classe intimamente esto li'ados.4maclassecomoumdesen%otcnico. 4sandoumdesen%otcnico- umconstrutor podeconstruir umacasa. 4sandoumaclasse- umpro'ramador podem criar um o$;eto 5tam$m c%amado de uma instncia6.)lasses t9m uma propriedade c%amada de ocultao da informao. Em$ora o$;etos possam sa$er como comunicar1se atravs de interfaces$em1definidas- a um o$;eto normalmente no deve ser permitido sa$er como outro o$;eto implementado 8 detal%es de implementao soescondidos dentro dos o$;etos.Em pro'ramao procedural- a unidade de pro'ramao a funo. Em pro'ramao orientada a o$;etos- a unidade de pro'ramao a classede *uem o$;etos eventualmente so instanciados..ro'ramadores procedurais se concentram em escrever funes. 3s ver$os numa especificao de sistema a;udam o pro'ramador procedural adeterminar o con;unto de funes *ue tra$al%aro ;untos para implementar o sistema..ro'ramadores de .33 concentram1se em criar seus prprios tipos de dados definidos pelo usu&rio- c%amados de classes. 3s su$stantivosnuma especificao de sistema a;udam o pro'ramador de .33 a determinar o con;unto de classes *ue ser& usado para criar os o$;etos *uetra$al%aro ;untos para implementar o sistema.)lasses simplificam a pro'ramao por*ue os clientes necessitam estar preocupados s com as operaes encapsuladas ou em$utidas noo$;eto 8 a interface de o$;eto.A palavra1c%ave class inicia uma definio de classe. A palavra1c%ave se'uida pelo nome da classe- *ue se'uido por um sinal de dois pontos5L6. A lin%a *ue contm a palavra1c%ave class e o nome de classe c%amada de ca$eal%o 5%eader6 da classe.3 corpo da classe um $loco de cdi'o endentado *ue contm mtodos e atri$utos *ue pertencem F classe.4mastrin'dedocumentao opcional daclassedescreveaclasse. ?euma classecontmumastrin's dedocumentao- a strin'sdeveaparecer na lin%a ou lin%as se'uindo o ca$eal%o da classe.3 mtodo init o mtodo construtor de uma classe. 4m construtor um mtodo especial *ue e+ecuta cada ve7 um o$;eto de uma classe criado. 3 construtor inicia os atri$utos do o$;eto e retorna Cone.#odos os mtodos- incluindo construtores- devem especificar ao menos um parmetro 8 a refer9ncia de o$;eto. Este parmetro representa oo$;eto da classe para o *ual o mtodo c%amado. 3s mtodos devem usar a refer9ncia de o$;eto para acessar atri$utos e outros mtodos *uepertencem F classe. .or conveno- o ar'umento de refer9ncia de o$;eto c%amado self.)ada o$;eto tem o prprio namespace *ue contm osmtodos do o$;eto e atri$utos. 3 construtor da classe comea com um o$;eto va7io 5self6 e adiciona atri$utos ao namespace do o$;eto.4ma ve7 *ue uma classe foi definida- pro'ramas podem criar o$;etos dessa classe. 3s pro'ramadores podem criar o$;etos como necess&rio. Msto uma ra7o por *ue ./t%on dita ser uma lin'ua'em e+tens,vel.4m dos princ,pios fundamentais de um $om pro;eto de soft:are *ue o cliente no deve necessitar sa$er como uma classe implementadapara usar essa classe. 3 uso de mdulos de ./t%on facilita esta a$strao de dados 8 um pro'rama pode importar uma definio de classe eusar a classe sem sa$er como a classe implementada..ara criar um o$;eto de uma classe- simplesmente 0c%ama1se2 o nome da classe como se fosse uma funo. Este c%amado invoca o construtorda classe. )lasses e o$;etos de classes am$os t9m atri$utos especiais *ue podem ser manipulados. Estes atri$utos- *ue ./t%on cria *uandouma classe definida ou *uando um o$;eto de uma classe criado- fornecem informao so$re a classe ou o$;eto de uma classe a *ue elespertencem.193 acesso direto aos dados do o$;eto pode dei+ar os dados num estado inconsistente.A maioria das lin'ua'ens de pro'ramao orientadas a o$;etos permitem *ue um o$;eto se previna de *ue seus clientes acessem os dados doo$;eto diretamente. Co entanto- em ./t%on- o pro'ramador usa convenes de nomes de atri$utos para esconder os dados de clientes.Em$ora um cliente possa acessar os dados do o$;eto diretamente 5e talve7 fa7er com *ue os dados entrem em um estado inconsistente6- umpro'ramador pode pro;etar classes para encora;ar o uso correto. 4ma tcnica fornecer mtodos de acesso para a classe para *ue os dados daclasse podem ser lidos e escritos numa maneira cuidadosamente controlada.Duando uma classe define mtodos de acesso- um cliente deve acessar atri$utos do o$;eto s por esses mtodos de acesso.)lasses fre*Kentemente fornecem mtodos *ue permitem *ue os clientes colo*uem ou rece$am os valores dos atri$utos. Em$ora estes mtodosno precisem ser c%amados set e 'et- eles fre*Kentemente so. Mtodos 'et tam$m so c%amados de mtodos de per'unta.4m mtodo set pode controlar o formato dos dados. 4m mtodo set pode 8 e $em possivelmente devia 8 verificar tentativas de modificar ovalor dos atri$utos. Msto asse'ura *ue o novo valor apropriado para a*uele item de dados.4m mtodo set pode especificar *ue uma mensa'em de erro 8 c%amada uma e+ceo 8 levantado ao cliente *uando as tentativas de clientedesi'nar um valor inv&lido a um atri$uto.Duando um autor de uma classe cria um atri$uto com um @nico su$lin%ado principal- o autor no *uer *ue os usu&rios da classe acessem oatri$uto diretamente. ?e um pro'rama e+i'e acesso aos atri$utos- o autor da classe fornece al'um outro meio para fa7er este acesso.Emlin'ua'ensdepro'ramaotaiscomo)NNeOava- umaclassepodedeclarar e+plicitamente*ueatri$utosoumtodospodemseracessados por clientes da classe. Estes atri$utos ou mtodos so c%amados de p@$licos. 3s atri$utos e mtodos *ue no podem ser acessadospor clientes da classe so c%amados de privados..ara prevenir o acesso indiscriminado a um atri$uto- colo*ue como prefi+o ao nome do atri$uto dois 5 caracteres de su$lin%ado6.Duando ./t%on encontra um nome de atri$uto *ue comea com dois su$lin%ados- o interpretador previne o acesso indiscriminado aos dados. Elemuda o nome de um atri$uto por incluir informao so$re a classe a *ue o atri$uto pertence.)onstrutorespodemdefinir ar'umentospadro*ueespecificamvaloresiniciaisparaatri$utosdoo$;eto- seoclientenoespecificaumar'umento no momento da construo.)onstrutores podem definir ar'umentos de palavra1c%ave *ue capacitam o cliente a especificar valores para determinados ar'umentos.)onstrutores fornecidos pelo pro'ramador *ue possuem valores padro para todos os seus ar'umentos 5ou *ue no e+i'em e+plicitamentenen%um ar'umento6 tam$m so c%amados de construtores padro.?e nen%um construtor definido para uma classe- o interpretador cria um construtor padro. Co entanto- o esse construtor *ue ./t%on forneceno e+ecuta nen%uma iniciali7ao- ento- *uando um o$;eto criado- no %& 'arantia *ue o o$;eto este;a num estado coerente.4m destruidor e+ecutado *uando um o$;eto destru,do 5p.e.- depois *ue no e+iste mais nen%uma refer9ncia ao o$;eto6.4ma classe pode definir um mtodo especial c%amado del *ue e+ecutado *uando a @ltima refer9ncia a um o$;eto removida ou sai do escopo.4m destruidor normalmente no especifica nen%um parmetro alm de self e retorna Cone.4m atri$uto de classe representa informao da amplitude da classe 5i.e.- uma propriedade da classe- no de um o$;eto espec,fico da classe6.Em$ora atri$utos de classe possam parecer como vari&veis 'lo$ais- cada atri$uto de classe reside no espao de nome da classe em *ue criado. 3s atri$utos de classe devem ser iniciados uma ve7 5e s uma ve76 na definio de classe.4m atri$uto de classe pode ser acessado por *ual*uer o$;eto dessa classe. 3s atri$utos de classe tam$m e+istem mesmo *uando nen%umo$;eto dessa classe e+iste. Acessar um atri$uto de classe *uando nen%um o$;eto da classe e+iste- colo*ue como prefi+o o nome de classe-se'uido por um ponto- se'uido pelo nome do atri$uto..ro'ramadores ./t%on concentram1se em criar novas classes e em reutili7ar classes da $i$lioteca padro. Este tipo de reusa$ilidade de soft:area'ili7a o desenvolvimento de soft:are poderoso e de alta1*ualidade.A $i$lioteca padro capacita os desenvolvedores de ./t%on a construir aplicaes mais r&pido atravs da reutili7ao de classes previamentee+istentes e e+tensamente testadas.1TReferncias1. =eitel- >. M. et ali. ./t%on >o: to .ro'ram. .rentice >all-2II2P3StringsResumoAulaMarcoAndreLopesMendes>>> s1 = "BSI320">>> s2 = "BSI320">>> >>> len(s1) == len(s2)True>>> s1 == s2True>>> len(s1) == len(s2) ; s1 == s2TrueTrue>>> s2 = "bsi320">>> len(s1) == len(s2) ; s1 == s2TrueFalse>>> s1 = "bsi-320">>> len(s1) == len(s2) ; s1 == s2FalseFalse>>> s1 ; s2'bsi-320''bsi320'>>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print " iguais"else:print "diferentes"

>>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print " iguais"else:print "diferentes"else:print "Tamanho diferente"

Tamanho diferente>>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print " iguais"else:print "diferentes"else:print "Tamanho diferente"

Tamanho diferente>>> s1'bsi-320'1U>>> s2'bsi320'>>> s1 = 'bsi320'>>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print " iguais"else:print "diferentes"else:print "Tamanho diferente"

Mesmo tamanho iguais>>> s1 = 'bsi310'>>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print " iguais"else:print "diferentes"else:print "Tamanho diferente"

Mesmo tamanhodiferentes>>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print " iguais"else:print "diferentes"else:print "Tamanho diferente"

Mesmo tamanhodiferentes>>> s1 = "01">>> s2 = "1">>> if len(s1) == len(s2):print "Mesmo tamanho"if s1 == s2:print " iguais"else:print "diferentes"else:print "Tamanho diferente"

Tamanho diferente>>> s1 > s2False>>> s1 < s2True>>> int(s1)1>>> n = "Ronaldinho">>> n'Ronaldinho'>>> for l in range(len(n)-1,-1,-1): print n[l],1>> for l in range(len(n)-1,-1,-1): print n[l].upper(),O H N I D L A N O R>>> n[::-1].upper()'OHNIDLANOR'>>> >>> >>> >>> n = "ovo">>> ni = n[::-1]>>> n == niTrue>>> n = 'casa'>>> n == niFalse>>> ni = n[::-1]>>> n'casa'>>> ni'asac'>>> n = 'casa'>>> ni = n[::-1]>>> n == niFalse>>> n = 'natan'>>> ni = n[::-1]>>> n == niTrue>>> n = "socorram me subi no onibus em marrocos">>> ni = n.replace(" ","")>>> ni'socorrammesubinoonibusemmarrocos'>>> ni = ni[::-1]>>> n'socorram me subi no onibus em marrocos'>>> n = "socorram me subi no onibus em marrocos">>> n = n.replace(" ","")>>> ni = n[::-1]>>> n == niTrue>>> n = "Festa na sexta!">>> n'Festa na sexta!'>>> for l in range(len(n)-1,-1,-1): print n[l]!atxes an atseF50>>> for l in range(len(n)): print n[l]Festa na sexta!>>> for i in range(len(n)): print n[:i+1]FFeFesFestFestaFesta Festa nFesta naFesta na Festa na sFesta na seFesta na sexFesta na sextFesta na sextaFesta na sexta!>>> for i in range(len(n)): print n[0:i+1]FFeFesFestFestaFesta Festa nFesta naFesta na Festa na sFesta na seFesta na sexFesta na sextFesta na sextaFesta na sexta!>>> data = "29/10/1973">>> data[0:2]'29'>>> data[3:5]'10'>>> data[6:]'1973'>>> for i in range(len(n)-1,-1,-1): print n[0:i+1]Festa na sexta!Festa na sextaFesta na sext51Festa na sexFesta na seFesta na sFesta na Festa naFesta nFesta FestaFestFesFeF>>> >>> mesesExt = ['Jan','Fev','Mar']>>> data = "29/01/1973">>> mes = int(data[3:5])>>> mes1>>> >>> print mesesExt[mes-1]Jan>>> n'Festa na sexta!'>>> for i in range(len(n)): >>> c = 0>>> for i in range(len(n)):if i>>> for letra in n:if letra = " ":>>> for letra in n:if letra == " ":c +=1

>>> c2>>> print mesesExt[mes-1]>>> n'Festa na sexta!'>>> for letra in n:if letra == " ":c +=1>>> c4>>> c = 0>>> >>> >>> >>> >>> v = 0>>> for letra in n:if letra in == " ": v +=1

>>> v = 0>>> for letra in n:if letra in ['a','e','i','o','u']:v +=1>>> v5>>> n'Festa na sexta!'>>> n.upper()55'FESTA NA SEXTA!'>>> n = n.lower()>>> n'festa na sexta!'>>> n.title()'Festa Na Sexta!'>>> n.capitalize()'Festa na sexta!'>>> n.title()'Festa Na Sexta!'>>> 'Festa Na Sexta!''Festa Na Sexta!'>>> n'festa na sexta!'>>> l = range(10)>>> l[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> l.reverse()>>> l[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]>>> l[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]>>> l.sort()>>> l[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> import random>>> random.shuffle(l)>>> l[6, 9, 4, 0, 1, 3, 7, 5, 8, 2]>>> data'29/01/1973'>>> data[3]'0'>>> data[2]'/'>>> a = "marco">>> b = a>>> b'marco'>>> b = "andre">>> a'marco'>>> a'marco'>>> b'andre'>>> l[6, 9, 4, 0, 1, 3, 7, 5, 8, 2]>>> l1 = l>>> l1[6, 9, 4, 0, 1, 3, 7, 5, 8, 2]>>> l1.append(34566)>>> l1[6, 9, 4, 0, 1, 3, 7, 5, 8, 2, 34566]>>> l[6, 9, 4, 0, 1, 3, 7, 5, 8, 2, 34566]>>> l1 = l[:]>>> l1[6, 9, 4, 0, 1, 3, 7, 5, 8, 2, 34566]>>> l[6, 9, 4, 0, 1, 3, 7, 5, 8, 2, 34566]>>> l.pop()3456656>>> l[6, 9, 4, 0, 1, 3, 7, 5, 8, 2]>>> l1[6, 9, 4, 0, 1, 3, 7, 5, 8, 2, 34566]>>> 57