Apostila Do Minicurso de Python Ufu

Post on 24-Jan-2016

21 views 2 download

description

Apostila Do Minicurso de Python Ufu

Transcript of Apostila Do Minicurso de Python Ufu

1. Introdução2. IniciaçãoPython

i. IntroduçãoàLinguagemii. DownloadeInstalaçãoiii. IDLEiv. Arquivos.py

3. TiposBásicosi. InteiroseFloatsii. Stringsiii. Booleanoiv. Listas,TuplaseSetsv. Dicionários

4. Operaçõesi. OperadoresRelacionaiseLógicosii. Condiçõesiii. Repetições

5. OrientaçãoaObjetosi. Funçõesii. Variáveislocaiseglobaisiii. Classesiv. Herança

6. ConceitosFinaisi. Módulosii. MensagensdeErroiii. [FunçõesEmbutidas(Padrão)]capitulo_5/funcoes.md

7. Bibliografia

Tabeladeconteúdos

ApostiladoMinicursodePython-UFU

2

AquiestãoreunidososprincipaisassuntosqueserãotratadosnominicursoPythonpromovidopeloD.A.FEELTdaUniversidadeFederaldeUberlândia,bemcomoumavisãogeraldalinguagemPythoneexplicaçõesmaisdetalhadasdesuasfuncionalidades.

Bonsestudos!

Introdução

ApostiladoMinicursodePython-UFU

3Introdução

Comessaapostila,serãointroduzidosconceitoseexemplosdalinguagem,tudomuitobemdetalhado.Masparaquevocêaprenda,nãobastaapenasler.Porisso,sigaastrês"leis"abaixoenquantoestiverestudandoporessaapostilaeaproveiteaindamaisdoconteúdoaquidisponível.

Éimportantequetesteosexemplosmostradosnestematerial.Sempretestando,semprevendocomofunciona,sempreentendendo.Esenãoentender,éimportantequeentendapelomenosobásicodeinglês.Amaiorpartedosmateriaisdeapoioquevocêvaiencontrarestarãoeminglês,entãosevocênãoquerficarsofrendoparaexplicarseuproblemaparaosoutrosetorcerparaquealguémentendaounãoquerficareternamentebuscandosuasoluçãoemportuguês,porfavor,aprendainglês.Issoseráimportantetantonoseuaprendizadoquantonasuavidaprofissional.

Temalgumadúvidaejápesquisouemtodososlugarespossíveis?Tenterecorreràcomunidade.OsusuáriosdePythontemMUITOSgruposnoFacebook,noGoogleGroupsenoG+.Sempreestamosdispostosaajudar,desdequevocêtenhafeitosuaparteenãoestejasimplesmentecompreguiça.Nãopergunterespostasdeexercíciosoudeproblemasmuitocomplexossóporquevocênãoestácomdisposiçãodeprocurarasolução.Seoutraspessoasfizeremoprogramapravocê,vocênãoestáaprendendo.

Tenhadisposição,nãodesistaporqueparececomplexodemaisparavocê.Aprogramaçãoéumuniversoabertonomundovirtual,comelavocêpodecriaroseumundo,oqueébemmelhorquedominaromundodosoutros,viu?Nocomeçotudoéestranho,diferentedequalquercoisanormal.Porém,issosótornaacoisaaindamaisemocionantequandovocêfinalmenteentendetudo!Paraprogramar,énecessárioestarsempredispostoaaprenderearesolverproblemas,porquetudomudaeevoluimuitorápidoevocêdeveevoluirtambém.Vamosemfrenteencontrarseufuturobrilhante!

Agora,dêumpassoadianteevamoscomeçaraaprender!

Prefácio

ApostiladoMinicursodePython-UFU

4IniciaçãoPython

AlinguagemdeprogramaçãoPythonfoicriadaporGuidovanRossumem1989,eseunomefoiinspiradonogrupohumorísticoMontyPython,criadordofamosoMontyPython'sFlyingCircus.GuidonãoqueriaquePythonfosseassociadocomacobrapython(píton),porémquandofoilançarumdosprimeiroslivrossobrealinguagem,aeditoraO'Reilly,quetema"mania"decolocaranimaiscomocapa,sugeriucolocarumacobraeassimelaficouassociadaàlinguagem.

Desdeoinício,oprincipalfocodalinguagemfoiaumentaraprodutividadedoprogramador.Jáem1991,Guidopublicouocódigodalinguageme,desdeentão,elavemevoluindoemversõesefuncionalidades.Atualmente,alinguagemencontra-senaversão3eemconstanteaprimoramento.Abaixo,umexemplodoclássico"Hello,World!":

#atéaversão2.x

print"Hello,World!"

#apartirdaversão3.x

print("Hello,World!")

Pythonéumalinguagemdeprogramaçãointerpretada,decódigo-fonteabertoedisponívelparaváriossistemasoperacionais.Diz-sequeumalinguageméinterpretadaseestanãoprecisarsercompilada(traduzidaparaumalinguagemdamáquina),massimlidaporumoutroprograma(chamadodeinterpretador)quetraduziráparaamáquinaoqueseuprogramaquerdizer.OinterpretadorparaPythonéinterativo,ouseja,épossívelexecutá-losemfornecerumscript(programa)paraele.Aoinvésdisso,ointerpretadordisponibilizaráumainterfaceinterativaondeépossívelinseriroscomandosdesejadosumporumeveroefeitodecadaumdeles.OinterpretadordalinguagemPythonéchamadoIDLE(IntegratedDeveLopmentEnvironment).

IntroduçãoàLinguagem

ApostiladoMinicursodePython-UFU

5IntroduçãoàLinguagem

Oprimeiropassoparausaralinguageméteralinguagemnoseucomputador.Utilizaremosaversão3.xmaisrecente.

NossistemasoperacionaisLinuxeApple(OSX),aversãoPython2.7jáveminstaladaevocêpodeinteragircomseuinterpretadorviaterminal.Noentanto,aversão2.7acabaráperdendoosuportedosdesenvolvedores,vistoqueumanovaversãojáestáemuso.Alémdisso,algunsexemplosaquicontidospodemnãofuncionarnaversão2.7devidoàmudançadesintaxe.Assim,recomendoainstalaçãodaversãomaisrecenteemtodosossistemas.

Vocêpodeadquiriralinguagemeseuinterpretadorgratuitamentenapágina:https://www.python.org/downloads/.Ou,casopreferir,usaroterminalparabaixareinstalaralinguagem.

Parainstalaralinguagemeseuinterpretador,sigaessespassosapósterfeitoodownload:

1. Executeoarquivoquevocêacaboudebaixar.2. Oinstaladoriráiniciar,prosseguindocomainstalação.Vocêpodeaceitarolocalpadrãopropostoparainstalaçãoou

mudarapasta.3. Aseguir,podemossepararaspartesdopacotequequeremosinstalar,masiremosprosseguircomopadrão.4. Aguardeainstalaçãoefecheajanela.Tudopronto!

ParainstalaralinguagemeseuinterpretadornoOSX,amaneiramaisfáciléutilizaroMacPorts.Paraisso,sigaestespassos:

1. InstaleoMacPorts(http://www.macports.org),fazendoodownloaddoarquivodmg.2. InstaleoPythoncomocomando(noexemplo,Python3.4):

sudoportinstallpython34

ParainstalaralinguagemeseuinterpretadornoLinux,amaneiramaisfáciléutilizaralinhadecomando(terminal).Portanto,abra-oedigiteosseguintescomandos(noexemplo,Python3.4):

$sudoapt-getinstallpython3.4

$sudoapt-getinstallidle-python3.4

DownloadeInstalação

Windows

OSX

Linux

ApostiladoMinicursodePython-UFU

6DownloadeInstalação

Comoditoantes,ointerpretadordalinguagemPythonéchamadoIDLE(IntegratedDeveLopmentEnvironment).Emumprimeiromomento,oIDLEésemelhanteaumalinhadecomando,massuasfunçõesseextendemalémdisso.Apartirdele,temosacessoaumainterfacegráficaquenospermitereproduzircódigoinstantaneamenteoucriararquivosPythonparaseremexecutadosposteriormente.

Novamente,sigaospassos:

1. MenuIniciar2. Programas3. Python3.x4. IDLE

Abraoterminaledigiteocomando(substituindooxpelasuaversão):

$idle-python3.x&

Abraoterminaledigite(substituindooxpelasuaversão):

IDLE3.x&

Alinhadecomandoéindicadapelassetas>>>e,comoonomediz,énelaquevocêdevedaroscomandossobreoquealinguagemdevefazer.Suaprimeiratarefaéexecutarumprint,ocomandoparaimprimirumamensagemnatela.Oretorno,istoé,oresultadodaexecuçãodevesairlogoabaixo.Sigaoexemplo:

>>>print("Hello,World!")

HelloWorld

Alémdetudoisso,ointerpretadorpodefuncionarcomoumacalculadora.Aexecuçãodecálculosésimples:

>>>10+5#adição

15

>>>20-11#subtração

IDLE,oInterpretador

IniciandooIDLE

NoWindows

NoLinux

NoOSX

Primeiroscomandos

Fazendocontas

ApostiladoMinicursodePython-UFU

7IDLE

9

>>>2*10#multiplicação

20

>>>30/2#divisão

15

>>>2**4#exponenciação

16

>>>10%8#restodadivisãointeira

2

>>>120-30+2**3#múltiplasoperações

98

Obs:osímbolo#indicaumcomentárioeelenãointerferenaexecução.

ApostiladoMinicursodePython-UFU

8IDLE

Àsvezesprecisamosguardarcomandosespecíficosparaexecutá-losoutrasemuitasoutrasvezesposteriormente.Paraisso,precisamosescreveressescomandosemalgumlugaresalvá-los.Umprogramanadamaiséqueumarquivoemtextonoformatodalinguagempossíveldeserexecutado.

Vamoscriarumnovoarquivoparaguardaroscomandosquequeremosexecutar.VánomenudaIDLE:File(Arquivo)>NewWindow(NovaJanela)oupressionectrl+n

Umanovajaneladeveráaparecer,embranco,semelhanteàteladeexecuçãodoIDLE.Digite:

print("Ola,Mundo!")

Esalve:File(Arquivo)>Save(Salvar)oupressionectrl+s

Salveoarquivocomonomequedesejar,mascomaextensão.py.Aextensão.pyéaqueindicaumarquivoescritonalinguagemPython.Vousalvaromeuarquivocomonomeola.py.Emseguida,vouexecutá-loclicandoemRun(Executar)>RunModule(Executarmódulo)nomenusuperioroupressionandoF5.

Arquivos.py

ApostiladoMinicursodePython-UFU

9Arquivos.py

VamosentenderumpoucomelhoraparteteóricadePython.Adocumentaçãocompletapodeserencontradanositeoficial(http://python.org).

Eugostomuitodaexplicaçãodequeavariáveléumaetiquetaeovaloréumacaixa.Vocêprecisaidentificarumacaixa,entãovaicolarnelaumaetiquetacomumaidentificação.Logo,semprequevocêprecisardaquelevalor,vaiprocurarpelaetiquetaqueidentificaele.

>>>ten=10

>>>print(ten)

10

Sevocêprecisaqueaquelaidentificaçãosejadeoutracaixa,podetiraraetiquetadeumaecolocaremoutra.Damesmaforma,avariávelpodemudardevalor.

>>>ten=10

>>>ten=42

>>>print(ten)

42

tenéavariávele42éoseuvalor.Semprequeeu"chamar"avariávelten,elavaimeinformarseuvalor.Onomedeumavariávelapenasnãopodeconterespaçosembranco,começarcomnúmerosouserumapalavrareservada(palavrasquejásãoutilizadasemalgumlugardentrodalinguagem,ex:not,return,class,else,etc).

Aocontráriodamaioriadasoutraslinguagens,emPython,nãoénecessáriodeclararasvariáveisqueserãousadas,tampoucodefinirseutipo.Aprópriasintaxedodadoaserarmazenadoidenticaotipodavariávelparaarmazená-lo.Porexemplo,casodeseje-seatribuirovalor3àvariávelA,bastadigitarA=3.PythonsaberáqueAéumnúmerointeiro.Poroutrolado,seovaloraserarmazenadofosse3,2queéumdadodotipo"pontoflutuante",estedeveriaserexpressocomoA=3.2.

TiposBásicos

Variáveis:oquesão,comocomem,ondedormem,quemsãoelas?

ApostiladoMinicursodePython-UFU

10TiposBásicos

Osnúmerosfuncionamcomoosnúmerosquevocêaprendeunaauladematemáticafuncionam.

Comomostradoanteriormente,elestambémrealizamoperaçõesmatemáticasepodemseratribuídosavariáveis.Nosegundocaso,tambémpodemrealizaroperaçõesmatemáticasapartirdasvariáveis.Veja:

>>>ten=10

>>>one=1

>>>print(ten+one)

11

Floatssãoostípicosnúmeroscomvírgula,masnessecasoutilizamopadrãoinglêse,aoinvésdeumavírgula,usamumponto.Porexemplo:

>>>f1=0.98

>>>f2=0.02

>>>f1+f2

1.0

Atenção:Observeque,paraPython,A=3eB=3.0sãovariáveisdetiposdiferenteseistodeveserlevadoemcontaaoserealizarcertostiposdemanipulaçõesdedados.

NúmerosInteiros

Floats(Pontosflutuantes)

ApostiladoMinicursodePython-UFU

11InteiroseFloats

Umastringéqualquercoisadefinidaentreaspas.Porexemplo:

>>>string1="Issoéumastring"

>>>string2="10"#nãoémaisumnúmero,massimumastring

Asaspaspodemsersimples('')ouduplas("").Aúnicaexigênciaéque,casouseaspasdentrodeumastring,elasdevemserdiferentesdaquelasqueiniciaramastring.

>>>print("Issoéumacitação:'Citação'.")

Issoéumacitação:'Citação'.

Apesardisso,ocaractere\podeescaparsímbolos,istoé,quandousadoantesdeumsímbolo,eleserálidocomopartedastring,nãocomopartedocódigo.

>>>print('It\'sfriday!')

It'sfriday!

Stringsqueocupammúltiplaslinhaspodemserdefinidascomaspastriplas:

>>>string_grande="""vamosfazerumteste

esseéumteste"""

Stringspodemserfatiadas.Porexemplo,Pythontem6letras.Porém,começamosacontardo0.EntãoPéaletra0,yaletra1,taletra2eassimpordiante.Dessaforma,podemospegarumpedaçodastringapenasindicandoemqualcaractercomeçarequalterminar:

>>>teste="Python"

>>>teste[0:3]#indicando3elesóvaifatiaratéaletradeposição2

'Pyt'

>>>teste[3]#irábuscarsomentepelaletranaposição3

'h'

>>>teste[-1]#osinalnegativoindicaqueiránaordeminversa

'n'

>>>teste[0:6:2]

'Pto'#escrevede2em2letras

Existetambémumrecursoconhecidocomooperador%,queserveparaformatarasstrings.Basicamente,sãotrêsostiposdeformataçãoquetemos:

1. %s-serveparasubstituirstring;2. %d-serveparasubstituirnúmerosinteirosemumafrasedestinadaaumprint;3. %f-serveparasubstituirfloats(númerosemaritméticadepontoflutuante).

Astrêsformataçõesacimarelacionadassãousadasnormalmenteparaaplicaçõesemumafrasedestinadaaumprint.

Strings

FormataçãodeStrings

ApostiladoMinicursodePython-UFU

12Strings

>>>compra='maçã'

>>>tipo='verde'

>>>quilos=1.5

>>>print('Mariacomprou%fquilosde%s%s.'%(quilos,compra,tipo))

Mariacomprou1.5quilosdemaçãverde.

Comovimosacimaooperador%podeserutilizadoparaformataçãodenúmerostambém.Comeleépossíveltambémdeterminaraquantidadedenúmerosapósavírguladeumfloat.

>>>num=245.47876749

>>>print('%.2f'%(num))

245.48

PercebemosquePythonfezumaaproximaçãodonúmeroreal,possibilitandoqueoresultadodeumafuturaoperaçãosejaomaisprecisopossível.

Aindaqueessaformataçãosejaamaiscomum,asstringsPythonpossuemummétodoespecíficoparaformataçãoqueevitamuitasdoresdecabeçaeaindadeixamaisexplícitooquevocêestáexibindoemcadalocal.

>>>compra='maçã'

>>>tipo='verde'

>>>quilos=1.5

>>>"Mariacomprou{peso}quilosde{produto}{tipo}.".format(peso=quilos,produto=compra,tipo=tipo)

Mariacomprou1.5quilosdemaçãverde.

Pelofatodeumastringserumasequênciaimutável,issonosdáapossibilidadedemanipularmosessasequência.

>>>a='matemática'

>>>a[2]+a[-5]+a[-4:]

>>>'tática'

Asoperaçõesmatemáticas,nessecaso,podemserutilizadasparaconcatenarstrings.

>>>b="bla"

>>>10*b

'blablablablablablablablablabla'

Assimcomoamaioriadosoutrostiposbásicos,asstringspossuemmétodos.Métodossãofunçõesinclusasdentrodeumtipodedado,quevãovalerparaqualquervalordessetipo.Osmétodossãochamadosdaseguinteforma.nome_metodo(argumentos).Afunçãoformat(),vistaanteriormente,éummétododasstrings.

Segueumalistadosmaiscomuns:

1. capitalize()-retornaumacópiadastringcomoprimeirocaracteremaiúsculo;2. lower()-retornaumacópiadastringcomtodososcaracteresemminúsculo;3. upper()-retornaumacópiadastringcomtodososcaracteresemmaiúsculo;4. endswith(texto)-retornaumvalorTrueouFalseavisandoseastringterminacomaquelecaractereoupedaçode

ManipulaçãodeStrings

Métodos

ApostiladoMinicursodePython-UFU

13Strings

textoinformado;5. startswith(texto)-omesmodoendswith(),porémverificandonoiníciodastring;6. find(texto)-retornaomenoríndiceondeovalordetextopassadopodeserencontradodentrodastring;7. split(separador)-retornaumalistadaspalavrasdastringquandoseparamoselaspeloseparadorinformado;

ApostiladoMinicursodePython-UFU

14Strings

Sóexistemdoisvaloresbooleanos:TrueeFalse.TraduzindoelessãoVerdadeiroeFalso,respectivamente.Sãotipológicos,ouseja,vãoajudarnasoperaçõeslógicasquevamosfazermaisadiante.

>>>verdade=True

>>>mentira=False

Booleano

ApostiladoMinicursodePython-UFU

15Booleano

Umalistaéumconjuntodevaloresseparadosporvírgulaeébastanteversátil.

>>>lista1=[1,5,10,15]

Assimcomoasstring,cadaitemdeumalistatemumaposiçãocomeçandoem0etodalistapodeserfatiada.Portanto,elespodemserretornadospor:

>>>lista1[2]

10

>>>len(lista1)

4

Obs:len()éumafunçãoqueindicaotamanhodaquiloqueestádentrodeseusparênteses.Nocaso,nossalistatem4elementos,portantoseutamanhoé4.

Tuplassãosemelhantesàslistas,umasequênciadevaloresseparadosporvírgulasedefinidasentreparênteses.Porém,suamaiordiferençaresidenofatodequeéimutável,aindaassimpodeconterobjetosmutáveisdentrodela,comoumalista.

>>>t1=(123,'teste',123)

Osprincipaismétodosdaslistasetuplassãoaquelesutilizadospararealizaralgumaaçãocomseusvalores.Segueumalista:

1. append(x)-adicionaoelementoxaofinaldalista;2. pop(x)-removeeretornaovalordoelementoqueestivernoíndicex;3. index(x)-retornaomenoríndicedoelementox;4. count(x)-contaquantasvezesxserepetenalista;5. sort()-ordenaalista;6. clear()-removetodososelementosdalista;7. remove(x)-removeoprimeiroelementocujovaloréxencontradonalista;

Éumalistadefinidaentrechaves,aqualrepresentaumconjuntosemelementosrepetidos.Enquantoumatupla,porexemplo,podeterdoiselementosiguais,umsetnãoterá.

>>>s1={111,123,12,111}

>>>print(s1)

{111,123,12}

Listas

Tuplas

Métodos

Sets

ApostiladoMinicursodePython-UFU

16Listas,TuplaseSets

ApostiladoMinicursodePython-UFU

17Listas,TuplaseSets

Dicionáriossãoconjuntosdechave:valor.Omelhorparaentender,évendo.Dicionáriospodemserdefinidosdeduasmaneiras:

>>>dict1=dict(nome='fulano',idade=29)

>>>dict2={'nome':'fulano','idade':29}

>>>print(dict1)

{'idade':29,'nome':'fulano'}

>>>print(dict2)

{'idade':29,'nome':'fulano'}

Achaveéaformacomoidentificamosovalor.Nessecaso,nomeeidadesãochavesefulanoe29sãovaloresassociadosaelas.

Umvalordentrodeumdicionáriopodeserretornadoapartirdesuachave.Dessaforma,odicionáriofuncionacomoumalistaondeosíndicestemnome,aoinvésdeseremapenasnumerados.

>>>print(dict1['nome'])

'fulano'

Alémdisso,vocêpodeadicionarnovosvaloresaumdicionáriosimplesmenteinformandoumachavequeeleaindanãopossuiealterarvaloresassociandonovosvaloresaumachaveexistente.

>>>dict1['altura']=1.80

>>>print(dict1['altura'])

1.80

>>>dict2['nome']='ciclano'

>>>print(dict2['nome'])

'ciclano'

Osprincipaismétodosdosdicionáriossão:

1. clear()-removetodosositensdodicionário;2. get(x)-retornaovalorqueestáassociadoàchavexdentrododicionário;3. items()-retornatodosositemsdentrododicionárionoformato(chave,valor);4. keys()-retornatodasaschavesdodicionário;5. values()-retornatodososvaloresdodicionário;

Dicionários

Métodos

ApostiladoMinicursodePython-UFU

18Dicionários

Nesseponto,serialegalsevocêtivesseumanoçãosobrelógicabinária.Porisso,presteatençãonestesconceitos!

Alógicabinária,oubitwiseoperationéabasedetodoocálculocomputacional.Naverdade,sãoestasoperaçõesmaisbásicasqueconstituemtodoopoderiodoscomputadores.Qualqueroperação,pormaiscomplexaquepareça,étraduzidainternamentepeloprocessadorparaestasoperações.

OoperadorunárioNOT,ounegaçãobináriaresultanocomplementodooperando.Porexemplo,seráumbit1seooperandofor0,eserá0casocontrário,conformepodemosconfirmarpelatabeladeverdade:TabelaverdadedoNOT

OoperadorbinárioAND,ouconjunçãobináriadevolveumbit1semprequeambosoperandossejam1,e0quandoapenasumounenhumdelesé1,conformepodemosconfirmarpelatabeladeverdade:TabelaverdadedoAND

OoperadorbinárioOR,oudisjunçãobináriadevolveumbit1semprequepelomenosumdosoperandosseja1,conformepodemosconfirmarpelatabeladeverdade:TabelaverdadedoOR

Operações

LógicaBinária

NOT

AND

OR

ApostiladoMinicursodePython-UFU

19Operações

Sãosímbolosutilizadosparafazercomparações.ConfiraosoperadoresrelacionaisdePythonnaimagemabaixo:Operadoresrelacionais

Quandoacomparaçãoérealizadautilizandotaisoperadores,osresultadossãobooleanosinformandosetalcomparaçãoéverdadeiraoufalsa.

>>>10>5

True

>>>10<5

False

>>>a=10

>>>b=5

>>>a>b

True

Dadaalógicabináriaanteriormente,confiraastabelasverdade.OsoperadoresNOT,ANDeORsãochamadosoperadoreslógicosenosauxiliamafazercomparaçõesmaiscomplexas.

>>>notTrue

False

Acabeidefalarquealgonãoéverdadeiro,entãosópodeserfalso.Logo,oresultadoéfalso.

>>>TrueandTrue

True

>>>TrueandFalse

False

>>>FalseandTrue

False

>>>FalseandFalse

False

Pelatabelaverdadedooperadorand,somentequandoambososvaloresforemverdadeiros,oresultadoseráverdadeiro.Docontrárioseráfalso.

>>>TrueorTrue

True

>>>TrueorFalse

True

>>>FalseorTrue

True

>>>FalseorFalse

False

Jácomooperadoror,oresultadoseráverdadeirosemprequepelomenosumdosvaloresforverdadeiro.Somentequandoambosforemfalsos,oresultadoseráfalso.

OperadoresRelacionais

OperadoresLógicos

ApostiladoMinicursodePython-UFU

20OperadoresRelacionaiseLógicos

Ascondiçõessãoexatamenteisso,condiçõesparaquedeterminadocódigosejaexecutado.Sãoelasqueselecionamoquevaiacontecereoquenãodentrodonossoprograma.

Traduzindoapalavraifdoinglêstemosoequivalenteasenoportuguês.Quandodigo"Sevocêcolocarablusapretavaiparecermaismagro.",estouindicandoumacondiçãoparavocêparecermaismagro.

Dessaforma,seeutenhoumblocodecódigodepoisdaexpressãoifelesóseráexecutadoseascondiçõesindicadasapósoifforemverdadeiras.Assim:

>>>ten=10

>>>iften==10:

>>>print("Dezéigualadez.")

Dezéigualadez.

Reparequeeuutilizeiooperadorlógico==paracompararseovalordavariáveltenéiguala10.ArespostameretornouTrue,istoé,acomparaçãoconfirmouquedezéigualadez,entãoomeucódigopôdeserexecutado.

Presteatençãotambémque,logoapósaexpressãodoifeudeiumcertoespaçoantesdevoltaradigitarmeucódigo.Issoéchamadoindentação,umrecuoantesdocódigoparadiferenciarumblocodecódigosdeoutro.Issoébomquandoeutenhomaiscódigodepoisdoif,assimeupossosepararoqueeuqueroquesejaexecutadosempreeoqueeuqueroquesejaexecutadosóquandooifforverdadeiro.

AidentaçãoemPythontemovalor(nãoobrigatório,masdesensocomumedaPEP-8)de4espaços.

>>>ten=10

>>>one=1

>>>iftenandone:

>>>print("Osvaloresexistem.")

Osvaloresexistem.

Damesmaformafuncionamosoperadoreslógicos.Lembre-sequeoandsóretornaTruequandoambososvaloresforemverdadeiros.Entãomeuifsóexecutarámeucódigoseosvaloresquepasseiforemverdadeiros,nessecasoseelesexistirem.

Eépossívelnãoexistirem?Sim!ExisteoutrotipoPython,oNone,paraessetipodevalor.

>>>vazio=None

>>>teste="teste"

>>>iftesteandvazio:

>>>print("Ops!")

Seexecutaressecódigonãoteraresultadoalgum,porqueacomparaçãodoifretornouFalse.

Oelseéumoperadorusadosempreemconjuntocomoifesignifica"senão".Écomodizer"Sevocêcolocarablusa

Condições

If(Se)

Else(Senão)

ApostiladoMinicursodePython-UFU

21Condições

pretavaiparecermaismagro,senãovaiparecerrobusto.".Nestacondição,sefizeralgoteráumresultado,senãofizer

teráumresultadodiferente.

>>>ten=10

>>>iften!=10:

>>>print("Dezédiferentededez.")

>>>else:

>>>print("Dezéigualadez.")

Dezéigualadez.

Vamostraduzirissoparaumafrase:"Setenfordiferentede10,entãoimprima'Dezédiferentededez.'natela,senão,imprima'Dezéigualadez.'natela.".

Claroquedeznãoédiferentededez!EntãomeuifretornouFalse,logoeurecorriaoelse.SemprequemeuifforFalseoelseseráexecutado.

Percebaque,nestecaso,oelseestáalinhadocomoifenãocomoblocodecódigodentrodele,poiséumacondicionaldiferenteedeveserexecutadosomenteseoifforFalse.

Quandoeudigo"Sevocêcolocarablusapretavaiparecermaismagro,secolocarablusajustavaiparecermaisforte,senãovaiparecermaisrobusto."tenhomaisdeumacondiçãodiferenteparavocê.Paraessetipodecaso,utilizamosoelif,indicandoquetemosmaisdeumacondiçãoparaverificarantesdeexecutaroelse.Vejasó:

>>>blusa="justa"

>>>ifblusa=="preta":

>>>print("Pareçomaismagro.")

>>>elifblusa=="justa":

>>>print("Pareçomaisforte.")

>>>else:

>>>print("Pareçomaisrobusto.")

Pareçomaisforte.

Ocaminhoquepercorremosnessecasofoi:

1. Compararseavariávelblusaéiguala"preta".2. AcomparaçãodeuFalse,entãonãovamosexecutaroqueestádentrodoblocodecódigodoif.3. Compararseavariávelblusaéiguala"justa".4. AcomparaçãoresultouemTrue,entãoexecutamosoblocodecódigodentrodoelifeignoramosoelse.

Podemosterquantascondiçõesdesejarmos,alinhandoumelifapósoutro.Façaoteste!

Elif(elseif)

ApostiladoMinicursodePython-UFU

22Condições

Repetiçõesoulaçosouloopsfuncionampararepetirumdeterminadocódigováriasvezes,geralmenteterminandoquandodeterminadacondiçãoéalcançada.

Umjeitodefazerissoérepetindoomesmocódigováriasvezesnamão:

>>>print(1)

>>>print(2)

>>>print(3)

1

2

3

Porém,issonãoérecomendávelecomcertezanãoestánalistadeboaspráticas.Confiraabaixoalgumasmaneirasdefazerissodeformamaisfácil,principalmentequandotemosMUITASrepetições(imaginafazerisso100vezes?).

Doinglês,whiletemomesmosignificadoqueenquanto.Écomodizer"Enquantoeunãotiver10chocolates,metragamaisum.",ouseja,enquantoaminhavontade(minhacondição)nãoforsatisfeita,vocêvaicontinuarmetrazendochocolates.Devoltaàsequênciadenúmeros:

>>>x=1

>>>whilex<=3:

>>>print(x)

>>>x=x+1

1

2

3

Arepetiçãowhilevaiexecutarseublocodecódigoenquantoxformenorouiguala3.Então,imprimiremosovalordexnatelatrêsvezeseincrementaremosseuvaloremumaofinaldecadaexecuçãoparaqueapróximatenhaumvalordiferenteatéacondiçãosersatisfeita.

Oincrementode1novalortambémpodeserfeitodeformamaisfácilpor:

>>>x+=1

Aoperação+=farácomqueavariávelsempresejaincrementadapelovalorindicadoemseguida.

Arepetiçãotambémpodeserinterrompidaantesdacondiçãosersatisfeitaatravésdocomandobreak.

>>>x=1

>>>whilex<10:

>>>print(x)

>>>ifx==3:

>>>break

>>>x+=1

1

2

3

Repetições

While(Enquanto)

ApostiladoMinicursodePython-UFU

23Repetições

Nessecaso,sexforiguala3,euinterrompoarepetição,mesmoqueacondiçãoindiquequeelasóiriapararquandoalcançasseovalor10.

Tenhoumnovocomandoparavocê:"Paracadachocolatenacaixa,meentregueele.",entãovocêvaimeentregarcadachocolatequeestánacaixa.

>>>lista=[1,2,3]

>>>fornumeroinlista:

>>>print(numero)

1

2

3

Nestecaso,paracadanúmeronalistavamosimprimi-lonatela.

Arepetiçãofortambémpodeserinterrompidacomocomandobreake,nestecaso,tambémpodereceberumelse.

>>>lista=[1,2,3]

>>>fornumeroinlista:

>>>ifnumero==4:

>>>print("Acheio4.")

>>>break

>>>else:

>>>print("Nãoencontreio4.")

Nãoencontreio4.

Agora,oelseseráchamadosemprequeoforterminardepercorreralistaeobreaknãoforacionado.

For(para)in(em)

ApostiladoMinicursodePython-UFU

24Repetições

VamosmergulharmaisafundodentrodalinguagemeterumanoçãomelhordaOrientaçãoaObjetos.Primeiro,umabreveintroduçãoaesseconceito:

"Aorientaçãoaobjetoséummodelodeanálise,projetoeprogramaçãodesistemasdesoftwarebaseadonacomposiçãoeinteraçãoentrediversasunidadesdesoftwarechamadasdeobjetos."-Wikipedia

Osobjetosnaprogramaçãosãocomorepresentaçõesdeobjetosreais.Porisso,podemosresumiraPOOemumexemplosimples:

Definimosumobjetocarroeesseobjetotemmétodos(ações)eatributos(características).

Nessecaso,umcarropodeterummétodoLigar(),Acelerar(),Freiar(),Trocar_Marcha(),Desligar(),etc.Tudoissosãoaçõesqueumcarropoderiafazer.

Alémdisso,umcarropodeteratributoscomoCor,Quantidade_de_Lugares,Velocidade_Maxima,etc.Essassãocaracterísticasquepodemvariardependendodocarro.

Outracaracterísticaimportanteéacapacidadedeherançadosobjetos.Então,eupoderiacriarumobjetochamadoGolqueherdaosmétodoseatributosdoobjetocarroeaindapodeterseuspróprios.Portanto,todoGolseriaumcarro,masnemtodocarroseriaumGol.

MeuGolteriaomesmométodoLigar(),herdadodecarro,maseletambémteriaummétodoLigar_ar_condicionado()queoobjetocarronãotinha.Podemos,até,modificarométodoLigar()doGol,fazendocomqueeleliguedeumjeitodiferentequeoobjetocarro.

OrientaçãoaObjetos

ApostiladoMinicursodePython-UFU

25OrientaçãoaObjetos

Funçõessãoaquelesnomesqueusamospararealizaralgumaaçãoemnossocódigo.Porexemplo,quandoutilizamosinput()emnossoprograma,estávamosutilizandoafunçãoinput()parasolicitarumainformaçãodousuário.Podemos,também,criarnossasprópriasfunções.

Adefiniçãodeumafunçãoédadapelainstruçãodefseguidadonomedafunção.Logodepois,especificamosdentrodeparêntesesosparâmetrosqueafunçãodevereceber.

>>>defsubtrai(num1,num2):

>>>print(num1-num2)

Nessecaso,afunçãosubtrairecebeumparâmetrochamadonum1eumparâmetrochamadonum2.Logo,estamosdeixandoclaroqueousuário,quandochamarafunçãosubtrai,deveinformardoisparâmetros.

Emseguida,definimosqueessafunçãodeveexecutarumasubtraçãoentrenum1enum2eimprimiroresultadonatela.

Umafunçãonãoéexecutadaassimquedefinida,massomentequandoéchamada.Parachamarumafunçãofazemos:

>>>subtrai(10,4)

6

Ouseja,chamamosafunçãopelonomequedemosaelaepassamososparâmetrosqueelarequer.Porém,nemsemprequeremosimprimiroresultadodanossafunçãodatela.

>>>defsubtrai(num1,num2):

>>>return(num1-num2)

Realizarasubtraçãoeimprimirasubtraçãonatelasãoduascoisasdiferentes.Logo,podemossuprimiroprintedeixarafunçãorealizarocálculoapenas.Usandoreturn,podemosinformaroresultadodafunçãosemprecisarimprimi-lonatela.

Afunçãotambémpodenãoterparâmetrosouterparâmetrosopcionais.Nessecaso,daremosumvalorpadrãoparaoparâmetro.Assim,seousuárionãoinformarumvalorparaoparâmetro,usaremosseuvalorpadrão.

>>>defrepetir(qtd,caractere='a'):

>>>return(qtd*caractere)

>>>repetir(10)

'aaaaaaaaaa'

>>>repetir(20,'*')

'********************'

Inclusive,parâmetrospodemserespecificadosnachamadadafunção,mesmoquandosãoobrigatórios.Casonãosejamnomeados,devemseguiraordemnaqualforamdefinidos.

>>>repetir(qtd=20,caractere='*')

'********************'

Funções

ApostiladoMinicursodePython-UFU

26Funções

Quandousamosfunções,precisamosnosatentaràsvariáveis.Variáveislocaisexistemsomentedentrodafunçãoondeforaminstanciadas,jávariáveisglobaisexistemforadafunçãoepodemseracessadasportodasasfunçõesemódulos.Observe:

>>>defmultiplica(num1,num2):

>>>a=num1

>>>b=num2

>>>return(a*b)

Nessecaso,aebsãovariáveisquesóexistemdentrodafunçãomultiplica.Logo,sãovariáveislocais.

>>>comida="arroz"

>>>defqual_a_comida():

>>>print(comida)

>>>qual_a_comida()

>>>print(comida)

Aqui,definimosavariávelcomidaforadafunção,entãoelaéumavariávelglobal.Logo,podemosacessaravariávelcomidatantodentroquantoforadafunção.Observeesseexemplo:

>>>comida="arroz"

>>>defmuda_comida():

>>>comida="batata"

>>>print("Comida:{nova_comida}".format(nova_comida=comida))

>>>print(comida)#comidaantesdemudar

'arroz'

>>>muda_comida()#chamandoafunção

'Comida:batata'

>>>print(comida)#comidadepoisdafunçãomuda_comida()

'arroz'

Acomidacontinuasendoarroz!Issoaconteceporque,paraPython,avariávelcomidaforadafunçãoeavariávelcomidadentrodafunçãosãoduascoisasdiferentes.Umaéumavariávelglobaleaoutraélocal.Paraalterarmosavariávelglobalaoinvésdecriarmosumalocaldentrodafunção,devemosavisarqueestamoschamandoavariávelglobal:

>>>comida="arroz"

>>>defmuda_comida():

>>>globalcomida#avisandoquequeremosavariávelglobal

>>>comida="batata"

>>>print("Comida:{nova_comida}".format(nova_comida=comida))

>>>print(comida)#comidaantesdemudar

'arroz'

>>>muda_comida()#chamandoafunção

'Comida:batata'

>>>print(comida)#comidadeposdafunçãomuda_comida()

'batata'

Variáveislocaiseglobais

ApostiladoMinicursodePython-UFU

27Variáveislocaiseglobais

AgoraosconceitosdeOrientaçãoaObjetoserãorealmenteaplicados.Vamoscomeçardefinindoonossomoldedeumcarro,e,porisso,vamoschamá-lodeclasse.Portanto,umaclassenadamaiséqueomoldedeumobjeto.

>>>classCarro:

>>>def__init__(self):

>>>self.cor="Preto"

>>>self.quatidade_de_lugares=7

>>>self.velocidade_maxima=200

>>>self.ligado=False

>>>self.marcha=1

>>>self.velocidade=0

Ainstruçãoclasscriaumanovaclasseeéseguidapelonomequequeremosdaraela.Aprimeiracoisaquefazemosécriarumnovométodo(umafunçãoespecíficadaclasse)eessemétodoéo__init__.Esseéummétodoespecialchamadodeconstrutoreéexecutadosemprequeumnovoobjetodaclasseécriado,paraconstruiresseobjeto.Elerecebeself(simesmo)comoparâmetro,istoé,fazumareferênciaaoobjetoemsi.

>>>carro=Carro()

OqueacabamosdefazerfoicriarumnovoobjetoedizerqueesseobjetoseráigualaumCarro,istoé,teráasmesmascaracterísticaseaçõesquenossaclasseCarrotem.

Podemosmodificarosatributosdonossonovocarro:

>>>carro.cor="Vermelho"

>>>carro.velocidade_maxima=250

Agora,nossoobjetotemdiferentesatributos,masaclassecontinuasendoummoldecomosvaloresquepassamosquandoadefinimos.Notequeacessamososatributosporobjeto.atributoeessaéaformapadrãodeacessá-los.Casoqueiraverificarostatusdeumatributo,dêumprintdoatributodesejado.Porexemplo:

>>>print(carro.cor)

Vamosadicionaralgumasfuncionalidadesparaonossocarro:

>>>classCarro:

>>>def__init__(self):

>>>self.cor="Preto"

>>>self.quatidade_de_lugares=7

>>>self.velocidade_maxima=200

>>>self.ligado=False

>>>self.marcha=1

>>>self.velocidade=0

>>>

>>>defLigar(self):

>>>self.ligado=True

>>>

>>>defAcelerar(self):

>>>self.velocidade+=10

>>>

>>>defFreiar(self):

>>>self.velocidade-=10

Classes

ApostiladoMinicursodePython-UFU

28Classes

>>>

>>>defTrocar_Marcha(self,nova_marcha):

>>>self.marcha=nova_marcha

>>>

>>>defDesligar(self):

>>>self.ligado=False

Agoranossocarrotemváriasfuncionalidades.Notequetodososmétodosdevemreceberselfparaindicarqueestamostrabalhandocomoobjetoemsi.

Chamamosométododamesmaformacomoverificamososatributos:indicandooobjetoeométodoqueestamoschamando.Confiraabaixoeverifiqueostatusdosatributosamedidaqueexecutaosmétodos.Vamosdirigirumpouco:

>>>carro.Ligar()

>>>carro.Acelerar()

>>>carro.Trocar_Marcha(2)

>>>carro.Freiar()

>>>carro.Desligar()

Vejaessecódigoem:https://gist.github.com/JuliaRizza/afaf3d66c194300818d6

ApostiladoMinicursodePython-UFU

29Classes

Comofoiexplicadoantes,podemoscriarumobjetoqueherdedeumaclasse.PodemoscriarumGolqueherdedeumCarro.

>>>classGol(Carro):

>>>def__init__(self):

>>>Carro.__init__(self)

>>>self.cor="Prata"

>>>self.quantidade_de_lugares=5

>>>self.ar_condicionado_ligado=False

>>>

>>>defLigar_ar_condicionado():

>>>self.ar_condicionado_ligado=True

>>>

>>>defLigar():

>>>self.ligado=True

>>>self.marcha=6

Agora,nossaclasseGoltemasmesmascaracterísticasefuncionalidadesdeumcarro,porémmodificamosalgumascoisas.Primeiro,chamamosoconstrutordeCarroparautilizarosmesmosatributosemétodosdaclassee,inclusive,editamosalgunsatributos.Depois,adicionamosumnovométodo:odeligaroarcondicionado.Porúltimo,reescrevemosafunçãoLigar()docarroedefinimosquenossoGolsemprevailigarejámudarparaamarcharé!

>>>gol=Gol()

>>>gol.Ligar()

>>>gol.Acelerar()

>>>gol.Desligar()

Vejaessecódigoem:https://gist.github.com/JuliaRizza/afaf3d66c194300818d6

Herança

ApostiladoMinicursodePython-UFU

30Herança

Aquiseguemalgunsconceitosbásicosquevãoteajudarduranteamaiorpartedasfuncionalidadesbásicasdoseucódigo.Aproveite!

Conceitosfinais

ApostiladoMinicursodePython-UFU

31ConceitosFinais

UmmóduloéumarquivocontendocódigoPython.Onomedoarquivoéonomedomódulocomosufixo.pyadicionado.

AsprincipaisbibliotecasdePythonsãomódulosquevocêpodeimportarparadentrodeseucódigo,podendofazerusodenovasfunções.

Módulospodemserimportadosparadentrodeseucódigocomocomandoimport,usualmentelocalizadonoiníciodoseuarquivo.Porexemplo:

>>>importdatetime

datetimeéummóduloquenosfornecediferentesfunçõespararegistrar,verificarereceberdatasehorários.Agoratemosacessoafunçõesquepertencemaomódulodatetime,como:

>>>datetime.datetime.now()

Repetimosdatetimepoisprimeirochamamosomóduloedepoisonomedeumaclassedomóduloquetemomesmonomeeométodonow().

Esseimportésemelhanteà:

>>>fromdatetimeimport*

Nessecaso,estamosdizendoquequeremosimportartudo(simbolizadopor*)domódulodatetime.Portanto,podemosomitiroprimeirodatetimequandochamarmosométodo,poisjáespecificamosquequeremostudoaquiloqueestádentrodomódulo,nãoomóduloemsi.Alémdisso,podemosfazer:

>>>fromdatetimeimportdatetime

Dessaforma,estamosespecificandoquequeremosimportarsomenteaclassedatetimedomódulodatetime.Tambémpoderemosomitiroprimeirodatetimequandochamarmosométodo,poisjáindicamosqueestamostirandoasinformaçõesdomóduloenãoomóduloemsi.

Módulos

Import(Importar)

ApostiladoMinicursodePython-UFU

32Módulos

Semprequeestivermosescrevendoalgoerradoouumcódigocommalfuncionamento,ointerpretadornosavisapormeiodeumerroindicandooarquivoealinhaondeoproblemaestá.Nemsemprealinhaéexatamenteamesmadeondeseencontraoerro,masointerpretadorsempreindicaráondeocorreuainterrupçãodaexecuçãodoprograma.

Amaioriadoserrossãodevidoaumerrodedigitaçãooudecoerênciadoprogramador,portantoestejasempreatento!Confiraabaixooserrosmaiscomuns.

Acontecequandoointerpretadoréincapazdeleroquevocêescreveu.Provavelmente,sãoerrosdedigitaçãooudígitosamaisouesquecidos.

Ocorresemprequesuaindentaçãoestáincorretar.Podemserespaçosamaisouamenosoumesmoseublocodecódigoalinhadodeformaerrada.

Ocorrequandotentamosacessarumdicionáriousandoumachavequenãoexiste.Provavelmente,suachavefoiescritadeformaerrôneaeointerpretadornãoencontrounenhumacompatívelnodicionário.

Ocorrequandoumobjetoéchamadoantesdesercriado.Porexemplo,chamarumavariávelxantesqueessavariáveltenhasidodefinida.Podesertambémquetenhaescritoonomedavariáveldemaneiraerrada,tomecuidado.

Ocorrequandoumafunçãodeconversãoéincapazdeexecutarsuatarefa,porexemplo,afunçãoint()recebeumastring"teste"eéincapazdeconverteressevaloremumnúmerointeiro;quandoumvalorretornadoporumafunçãoéinválido;quandoprocuramosumastringquenãoexiste.

Ocorrequandochamamosumafunçãopassandomaisparâmetrosdoqueelarealmentedevereceber;quandotrocamosotipodeumíndice,porexemplo,temosumaslista=["banana","maçã","tomate"]etentamospegarumvalorporlista["banana"]porémlistassóleemíndicesquesãonúmerosinteiros.Dicionários,noentando,leemíndicesstrings.

Ocorrequandoovalordoíndiceéinválidoouinexistente.Porexemplo,nalista=[1,2,3,4]casoeupesquiseporlista[10]recebereiumIndexErrorporqueesseíndicenãoexiste.

MensagensdeErro

SintaxError(ErrodeSintaxe)

IdentationError(ErrodeIndentação)

KeyError(ErrodeChave)

NameError(ErrodeNome)

ValueError(ErrodeValor)

TypeError(ErrodeTipo)

IndexError(ErrodeÍndice)

ApostiladoMinicursodePython-UFU

33MensagensdeErro

1. OsbásicosdePython(http://cacho.la/julia/os-basicos-de-python)2. TutorialdeIntroduçãoaoPython-PET-TeleUFF

(http://www.telecom.uff.br/pet/petws/downloads/apostilas/PYTHON.pdf)3. IntroduçãoàLógicaBinária

(https://pt.wikibooks.org/wiki/Introdu%C3%A7%C3%A3o_%C3%A0_programa%C3%A7%C3%A3o/L%C3%B3gica#L.C3.B3gica_bin.C3.A1ria)

Bibliografia

ApostiladoMinicursodePython-UFU

34Bibliografia