Date post: | 24-Jan-2016 |
Category: |
Documents |
Upload: | edmilson-junior |
View: | 23 times |
Download: | 2 times |
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