Upload
edmilson-junior
View
30
Download
2
Embed Size (px)
DESCRIPTION
Apostila Do Minicurso de Python Ufu
Citation preview
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