Apostila Do Minicurso de Python Ufu

34

description

Apostila Do Minicurso de Python Ufu

Transcript of Apostila Do Minicurso de Python Ufu

Page 1: Apostila Do Minicurso de Python Ufu
Page 2: 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

Page 3: Apostila Do Minicurso de Python Ufu

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

Bonsestudos!

Introdução

ApostiladoMinicursodePython-UFU

3Introdução

Page 4: Apostila Do Minicurso de Python Ufu

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

Page 5: Apostila Do Minicurso de Python Ufu

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

Page 6: Apostila Do Minicurso de Python Ufu

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

Page 7: Apostila Do Minicurso de Python Ufu

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

Page 8: Apostila Do Minicurso de Python Ufu

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

Page 9: Apostila Do Minicurso de Python Ufu

À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

Page 10: Apostila Do Minicurso de Python Ufu

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

Page 11: Apostila Do Minicurso de Python Ufu

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

Page 12: Apostila Do Minicurso de Python Ufu

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

Page 13: Apostila Do Minicurso de Python Ufu

>>>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

Page 14: Apostila Do Minicurso de Python Ufu

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

ApostiladoMinicursodePython-UFU

14Strings

Page 15: Apostila Do Minicurso de Python Ufu

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

>>>verdade=True

>>>mentira=False

Booleano

ApostiladoMinicursodePython-UFU

15Booleano

Page 16: Apostila Do Minicurso de Python Ufu

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

Page 17: Apostila Do Minicurso de Python Ufu

ApostiladoMinicursodePython-UFU

17Listas,TuplaseSets

Page 18: Apostila Do Minicurso de Python Ufu

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

Page 19: Apostila Do Minicurso de Python Ufu

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

Page 20: Apostila Do Minicurso de Python Ufu

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

Page 21: Apostila Do Minicurso de Python Ufu

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

Page 22: Apostila Do Minicurso de Python Ufu

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

Page 23: Apostila Do Minicurso de Python Ufu

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

Page 24: Apostila Do Minicurso de Python Ufu

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

Page 25: Apostila Do Minicurso de Python Ufu

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

Page 26: Apostila Do Minicurso de Python Ufu

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

Page 27: Apostila Do Minicurso de Python Ufu

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

Page 28: Apostila Do Minicurso de Python Ufu

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

Page 29: Apostila Do Minicurso de Python Ufu

>>>

>>>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

Page 30: Apostila Do Minicurso de Python Ufu

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

Page 31: Apostila Do Minicurso de Python Ufu

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

Conceitosfinais

ApostiladoMinicursodePython-UFU

31ConceitosFinais

Page 32: Apostila Do Minicurso de Python Ufu

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

Page 33: Apostila Do Minicurso de Python Ufu

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

Page 34: Apostila Do Minicurso de Python Ufu

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