You are on page 1of 22

PYTHON

CARACTERSTICASBSICASDELLENGUAJE
LenguajeSemiinterpretado:Elcdigosetraduceprimeroauncdigointermedioparaluegoser ejecutadoporelintrpretedePython. Orientadoaobjetos:ElparadigmaquesiguelaprogramacinenPythoneseldePOO tipadoDinmico:Estoindicaquenoesnecesariodeclarareltipodelasvariables,elintrpreteslo infiereeltipodelavariabledeacuerdoaltipodedatosqueseleasigna. FuertementeTipado:Nosepuedetrataraunavariablecomosifueradeotrotipodiferentealquees. Paratrabajardiferentestiposdevariables,hayqueconvertirlasexplcitamentealaquenecesitemos manipular. Multiplataforma:Elpoderconvertirelprogramaauncdigointermedio,nospermitepodercorrerel programaenmltiplesentornos,siempreycuandonoestemosutilizandociertaslibrerasquesolo estndiseadasparaciertasplataformas.

1/22

TIPOSPRIMITIVOSDEDATOS
Numricos int(2312311) long(selimitanalaprecisindeacuerdoalamemoriadisponibleenlamquina)

Alasignarunvaloraunavariablevaatomarcomosifueraintamenosqueseatangrandecomopara requerirseruntipolong.TambinpodemosforzaraquesealongagregandolaletraLalfinaldelvalor. Podemosrepresentarelvalorenoctalanteponiendoun0xalvaloroenhexadecimalanteponiendosoloun 0. float decimal(soloutilizadoparaprogramacincientfica...Python2.4enadelante) complex(arreglode2doubledeCpararepresentarparterealeimaginariarespectivamente) Operadores Operador


+ * ** / // % $ | ^ ~ << >>

Descripcin
Suma Resta Negacin(prefix) Multiplicacin Exponenciacin Divisin DivisinEntera Mdulo AND OR XOR NOT Desplazam.izq. Desplazam.der.

Cadenas Lascadenasnosonmsquetextoencerradoentrecomillassimples(cadena)odobles(cadena). Dentrodelascomillassepuedenaadircaracteresespecialesescapndoloscon\,como\n,el carcterdenuevalnea,o\t,eldetabulacin. UnacadenapuedeestarprecedidaporloscaracteresuparaindicarqueesUnicodeorparaindicar (raw=cruda).EstasltimassediferenciandelasUnicodeenqueestasnotomanloscaracteres especiales,porendelas\vanarepresentarsoloelcaracter\. 2/22

Paraescribirenmasdeunalneapodemosencerrarlacadenaentretriplescomillas(...). Podemosconcatenarmedianteeloperador+oconeloperador*paraindicarlacantidadde vecesquesedeberepetirunacadena. Booleanos LosatributosdetipoboolsolopuedentenerdosvaloresTrueoFalse.Estetipoprimitivoesuna subclasedelosint Operadores Operador and or not == != < > <= => Descripcin SecumplenAyB? SecumpleAoB? NoA SonigualesAyB? SondistintosAyB? AesmenorqueB? AesmayorqueB? AesmenoroigualqueB? AesmayoroigualqueB?

3/22

COLECCIONES
Listas Unalistaesuntipodecoleccinordenada,vendraaserunVectorenlosdemslenguajes. Lasintaxisparacrearunalistaestansencillacomoasignarleaunavariable,unaseriedevalores encerradosentrecorchetesyseparadosporcomas.Laslistaspuedenserhomogneaso heterogeneas,nohayrestriccionesconrespectoaeso,porejemplopodemoscrearunalistadeesta manera I=[a,True,holacomoestas?,11256] odeestaotramaneraynohabraproblemas I=[131,552,156,21354] Podemosaccederaunmiembrodelalistaindicandoelnombredelalistayelnmerodelndice entrecorchetes.Ejemplo:queremosaccederalmiembro2delalistaL=[1,5,6,8,2] mi_valor=L[4] paraaccederaunmiembrodeunalistaincluidaenotra,debemosusardosveceselmtodo L=[hola,3,54,[1,2,3,4],True] mi_valor=L[3][1]

#mi_valorvale2

conlaslistaspodemosextraermasdeunvalor,sinnecesidaddequeesos.Aesteprocesosele llamaSlicing: mi_valor=L[1:4] #mi_valorvale[3,True] Tuplas Lastuplastienencomoconstructorlacoma,.Esmasomenoselmismoconceptodelalistas soloqueaestasltimasnoselespuedeaplicarfunciones...Entonces,laformadeaccederalos miembroseslamisma,laformadecrearlastambin,perosinloscorchetes.Siqueremostrabajar unavariablecomnencerradaentreparntesisdeunatupla,deberamosagregarleunacoma.Por ejemploparaencontrareltipo,haramosesto: type=(1) #nosdevuelveint type=(1,) #nosdevuelvetuple Otracaractersticadelastuplasesquesoninmutables,esdecirnopuedenmodificarseunavez creadas.Vendranasercomoconjuntosconstantesdevaloresytienenuntamaofijo,sinembargo sonmasligerasdetrabajarparaelintrprete. Diccionarios Tambinselosconocecomomatricesasociativasyaquerelacionanunaclaveyunvalor.Ejemplos: L={Saludo:Hola,Flor:Orqudea,Vehculo:Automvil} Elprimervaloreslaclaveyelsegundoelvalor.Comoclavepodemosocuparcualquierelemento inmutable,asicomostring,int,boolean...PeronopodemosponerunalistaootroDiccionariocomo clave.EstosedebeaqueelmecanismodebusquedadentrodelserealizamediantetablasHash, porendealcambiardinmicamenteelvalordelaclavedeberacambiarsuHASHynose encontrara... Adiferenciadelastuplasylistas,paraaccederaestasestructurasseaccedemedianteclaveyno medianteunndice. L=[Saludo] #devuelveHola Aligualqueenlaslistasytuplassepuedeutilizaresteoperador: L[Saludo]=Chau SinembargoaestascoleccionesnoselespuedeaplicarSlicingyaquenosonsonsecuenciassino mappingsoasociaciones. 4/22

CONTROLDEFLUJO
Sentenciascondicionales if url=www.google.com.ar #si(if)urlesigualawww.google.com.ar ifurl==www.google.com.ar: printIngresandoalapginaprincipaldeGoogleArgentina printBienvenido if...else

ifcondicion==True: #si(if)condicionesigualaTrue printEstacondicinesverdadera else: printEstacondicinesFalsa if...elif...elif...else ifnumero<0: printElnmeroindicadoesnegativo elifnumero>0: printElnmeroindicadoespositivo else: printElnmeroescero AifCelseB

Eslaformacompactadeusarelif,seracomohacerlasentenciaenunasolalnea var=parif(num%2==0)elseimpar Estosetraduceaquelavariablevarvaatomarelvalorparsiysolosielmdulodelnumeroescero, sinotomaelvalordeimpar Bucles While

edad=0 whileedad<18 edad=edad+1 printFelicidades,tienes+str(edad) for...in

secuencia=[uno,dos,tres] forelementoinsecuencia: 5/22

printelemento

6/22

FUNCIONES
EnPythonlasfuncionessedeclarandelasiguientemanera: defmi_funcion(param1,param2): printparam1 printparam2 Sepuedendefinirparmetrosconvalorespordefectoparaomitirsupasaje.Porejemplo: defclonar(texto,veces=2): printveces*texto Elresultadopodrasereste: >>clonar(Hola) >>HolaHola Ntesequesolopasamoseltextoaimprimirynolacantidaddevecesyaquedefinimoscomopordefecto elsegundoparmetro.asmismopodemospasarelsegundoparmetrocomopodemosverenlas siguienteslneas. >>clonar(Hola,1) >>Hola >>clonar(Hola,3) >>HolaHolaHola Tambinpodemosdefinirfuncionesconunnmerovariabledeparmetros: defmi_funcion(a,b,c,*otros): //acatrabajaramosaotroscomounatupla.

7/22

ORIENTACINAOBJETOS
ClasesyObjetos: Enpythonlasclasessedefinenmediantelapalabraclaveclassseguidadelnombredelaclaseyluego:. classAuto: Abstracciondelosobjetosauto. def__init__(self,combustible): self.combustible=combustible printTenemos,combustible,litros defarrancar(self): ifself.combustible>0: printArranca else: printNoarranca defconducir(self): ifself.gasolina>0: self.combustible=1 printQuedan,self.combustible,litros else: printNosemueve

Porconvencindebemoscrearelmtodo__init__quefuncionayllevaacaboelprocesoconocidocomo instanciacin. Ntesequeentodoslosmtodos,comoen__init__tambinnecesitamospasarleelparmetroselfque indicaqueseesttrabajandoconestaclase. CabedestacarqueenPython,todoesunobjeto,porendecualquieratributopodemostratarlocomoun objeto,aplicandolesusfunciones. HERENCIA Paraaplicarlaherenciaaalgunaclase,enPython,indicamoslasuperclaseentreparntesisenlacabecera deladeclaracin.Deestamaneradeberamosteneresto: classInstrumento: def__init__(self): printInstrumentocreado deftocar(self): printEstsonando classBatera(Instrumento): pass classGuitarra(Instrumento): pass 8/22

HERENCIAMLTIPLE EnPythonadiferenciadeJavayC#(pordaralgunosejemplos)sisepermitelaimplementacindeherencia mltiple.Estaseefectaincluyendolasclasesdelasqueheredaentreparntesis,separadasporcoma.En casodequelasclasespadrestenganmtodosconelmismonombrelaclasequeestubicadaprimeroen ladefinicineslaqueotorgarlaherenciadeesemtodo. classTerrestre: defdesplazar(self,peso): self.peso=peso printElanimalcaminaypesa:,peso classAcuatico: defdesplazar(self,peso): self.peso=peso printElanimalnadaypesa:,peso classCocodrilo(Terrestre,Acuatico) pass c=Cocodrilo() c.desplazar(5) >>ElAnimalcaminaypesa5 POLIMORFISMO Polimorfismoserefierealacapacidaddelosobjetosdelasdistintasclasesaresponderaunmismo mensaje.Pythonalserdetipadodinmiconoimponerestriccionesalosparmetrosqueselepueden pasaraunafuncion,porloqueenpythonelpolimorfirmonoesdetantaimportancia.

ENCAPSULACIN Laencapsulacinesimpedirelaccesoaciertosatributosymtodosdentrodeunaclase,determinandoas quesepuedeutilizaryquenofueradelaclase. Estoenotroslenguajesselograconmodificadorescomopublicyprivate,enpythonnodisponemosde dichosmodificadores,porlocualparaindicarqueunatributoespublicoprivatevamosaprocederdela siguientemanera classEjemplo: defpublico(self): printPublico def__privado(self): printPrivado Esdecirquecuandoalgnatributonecesiteserpblicolovaaseralescribirlodelamaneraconvencional, pero,cuandonecesitemosindicarqueunatributoesprivadodebemoscolocarledobleguinbajoaliniciode suidentificador. CLASESNUEVOESTILO 9/22

Ladiferenciaprincipalentrelasclasesantiguasylasdenuevoestiloconsisteenquealahoradecrearuna nuevaclaseanteriormentenosedefinarealmenteunnuevotipo,sinoquetodoslosobjetoscreadosapartir declases,fueranestaslasclasesquefueran,erandetipoinstance. Paraqueunaclaseseadenuevoestiloesnecesario,porahora,queextiendaunaclasedenuevoestilo.En elcasodequenoseanecesarioheredarelcomportamientooelestadodeningunaclase,comoennuestro ejemploanterior,sepuedeheredardeobject,queesunobjetovacioquesirvecomobaseparatodaslas clasesdenuevoestilo. MTODOSESPECIALES __init__(self,args) Mtodollamadodespusdecrearelobjetopararealizartareasdeinicializacin. __new__(cls,args) Mtodoexclusivodelasclasesdenuevoestiloqueseejecutaantesque__init__yqueseencargade construirydevolverelobjetoens.EsequivalentealosconstructoresdeC++oJava.Setratadeunmtodo esttico,esdecir,queexisteconindependenciadelasinstanciasdelaclase:esunmtododeclase,node objeto,yporlotantoelprimerparmetronoesself,sinolapropiaclase:cls. __del__(self) Mtodollamadocuandoelobjetovaaserborrado.Tambinllamadodestructor,seutilizapararealizar tareasdelimpieza. __str__(self) Mtodollamadoparacrearunacadenadetextoquerepresenteanuestroobjeto.Seutilizacuandousamos printparamostrarnuestroobjetoocuandousamoslafuncinstr(obj)paracrearunacadenaapartirde nuestroobjeto. __cmp__(self,otro) Mtodollamadocuandoseutilizanlosoperadoresdecomparacinparacomprobarsinuestroobjetoes menor,mayoroigualalobjetopasadocomoparmetro.Debedevolverunnmeronegativosinuestro objetoesmenor,cerosisoniguales,yunnmeropositivosinuestroobjetoesmayor.Siestemtodono estdefinidoyseintentacompararelobjetomediantelosoperadores<,<=,>o>=selanzaruna excepcin.Siseutilizanlosoperadores==o!=paracomprobarsidosobjetossoniguales,secomprueba sisonelmismoobjeto(sitienenelmismoid). __len__(self) Mtodollamadoparacomprobarlalongituddelobjeto.Seutiliza,porejemplo,cuandosellamaalafuncin len(obj)sobrenuestroobjeto.Comoesdesuponer,elmtododebedevolverlalongituddelobjeto.

10/22

EXCEPCIONES
LasexcepcionessonerroresdetectadosporPythondurantelaejecucindelprograma.Cuandoelintrprete seencuentraconunasituacinexcepcional,comoelintentardividirunnmeroentre0oelintentaracceder aunarchivoquenoexiste,estegeneraolanzaunaexcepcin,informandoalusuariodequeexistealgn problema. Veamosunpequeoprogramaquelanzaraunaexcepcinalintentardividir1entre0. defdivision(a,b): returna/b defcalcular(): division(1,0) calcular() Siloejecutamosobtendremoselsiguientemensajedeerror: $pythonejemplo.py Traceback(mostrecentcalllast): Fileejemplo.py,line7,in calcular() Fileejemplo.py,line5,incalcular division(1,0) Fileejemplo.py,line2,indivision a/b ZeroDivisionError:integerdivisionormodulobyzero Loprimeroquesemuestraeseltrazadodepilaotraceback,queconsisteenunalistaconlasllamadasque provocaronlaexcepcin.Comovemoseneltrazadodepila,elerrorestuvocausadoporlallamadaa calcular()delalnea7,queasuvezllamaadivision(1,0)enlalnea5yenltimainstanciaporlaejecucin delasentenciaa/bdelalnea2dedivision. Acontinuacinvemoseltipodelaexcepcin,ZeroDivisionError, juntoaunadescripcindelerror:integerdivisionormodulobyzero (mduloodivisinenteraentrecero). EnPythonseutilizaunaconstruccintryexceptparacapturarytratarlasexcepciones.Elbloquetry (intentar)defineelfragmentodecdigoenelquecreemosquepodraproducirseunaexcepcin.Elbloque except(excepcin)permiteindicareltratamientoquesellevaracabodeproducirsedichaexcepcin. Muchasvecesnuestrotratamientodelaexcepcinconsistirsimplementeenimprimirunmensajems amigableparaelusuario,otrasvecesnosinteresarregistrarloserroresydevezencuandopodremos establecerunaestrategiaderesolucindelproblema. Enelsiguienteejemplointentamoscrearunobjetofdetipoarchivo.Denoexistirelarchivopasadocomo parmetro,selanzaunaexcepcindetipoIOError,quecapturamosgraciasanuestrotryexcept. 11/22

try: f=file(archivo.txt) except: printElarchivonoexiste Pythonpermiteutilizarvariosexceptparaunsolobloquetry,deformaquepodamosdaruntratamiento distintoalaexcepcindependiendodeltipodeexcepcindelaquesetrate.Estoesunabuenaprctica,y estansencillocomoindicarelnombredeltipoacontinuacindelexcept. try: num=int(3a) printno_existe exceptNameError: printLavariablenoexiste exceptValueError: printElvalornoesunnumero Ademspodemoshacerqueunmismoexceptsirvaparatratarmsdeunaexcepcinusandounatupla paralistarlostiposdeerrorquequeremosquetrateelbloque: try: num=int(3a) printno_existe except(NameError,ValueError): printOcurriounerror Laconstruccintryexceptpuedecontarademsconunaclausulaelse,quedefineunfragmentodecdigo aejecutarslosinosehaproducidoningunaexcepcineneltry. try: num=33 except: printHubounerror! else: printTodoestabien Tambinexisteunaclausulafinallyqueseejecutasiempre,seproduzcaonounaexcepcin.Estaclausula sesueleutilizar,entreotrascosas,paratareasdelimpieza. try: z=x/y exceptZeroDivisionError: printDivisionporcero finally: 12/22

printLimpiando Tambinesinteresantecomentarquecomoprogramadorespodemoscrearylanzarnuestraspropias excepciones.BastacrearunaclasequeherededeExceptionocualquieradesushijasylanzarlaconraise. classMiError(Exception): def__init__(self,valor): self.valor=valor def__str__(self): returnError+str(self.valor) try: ifresultado>20: raiseMiError(33) exceptMiError,e: printe

13/22

MODULOSYPAQUETES
Mdulos Parafacilitarelmantenimientoylalecturalosprogramasdemasiadolargospuedendividirseenmdulos, grupandoelementosrelacionados.Losmdulossonentidadesquepermitenunaorganizacinydivisin lgicadenuestrocdigo.Losarchivossonsucontrapartidafsica:cadaarchivoPythonalmacenadoen discoequivaleaunmdulo. Vamosacrearnuestroprimermduloentoncescreandounpequeoarchivomodulo.pyconelsiguiente contenido:

defmi_funcion(): printunafuncion classMiClase: def__init__(self): printunaclase printunmodulo Siquisiramosutilizarlafuncionalidaddefinidaenestemduloennuestroprogramatendramosque importarlo.Paraimportarunmduloseutilizalapalabraclaveimportseguidadelnombredelmdulo,que consisteenelnombredelarchivomenoslaextensin.Comoejemplo,creemosunarchivoprograma.pyen elmismodirectorioenelqueguardamoselarchivodelmdulo(estoesimportante,porquesinose encuentraenelmismodirectorioPythonnopodrencontrarlo),conelsiguientecontenido: importmodulo modulo.mi_funcion() Paquetes Silosmdulossirvenparaorganizarelcdigo,lospaquetessirvenparaorganizarlosmdulos.Los paquetessontiposespecialesdemdulos(ambossondetipomodule)quepermitenagruparmdulos relacionados.Mientraslosmdulossecorrespondenanivelfsicoconlosarchivos,lospaquetesse representanmediantedirectorios. Comolosmodulos,paraimportarpaquetestambinseutilizaimportyfromimportyelcaracter.para separarpaquetes,subpaquetesymdulos. importpaq.subpaq.modulo paq.subpaq.modulo.func()

14/22

ENTRADA/SALIDA
Entradaestndar Laformamssencilladeobtenerinformacinporpartedelusuarioesmediantelafuncinraw_input.Esta funcintomacomoparmetrounacadenaausarcomoprompt(esdecir,comotextoamostraralusuario pidiendolaentrada)ydevuelveunacadenaconloscaracteresintroducidosporelusuariohastaquepulsla teclaEnter.Veamosunpequeoejemplo: nombre=raw_input(Comotellamas?) printEncantado,+nombre Sinecesitramosunenterocomoentradaenlugardeunacadena,porejemplo,podramosutilizarlafuncin intparaconvertirlacadenaaentero,aunqueseraconvenientetenerencuentaquepuedelanzarseuna excepcinsiloqueintroduceelusuarionoesunnmero. try: edad=raw_input(Cuantosaostienes?) dias=int(edad)*365 printHasvivido+str(dias)+dias exceptValueError: printEsonoesunnmero Lafuncininputesunpocomscomplicada.Loquehaceestafuncinesutilizarraw_inputparaleeruna cadenadelaentradaestndar,ydespuspasaaevaluarlacomosidecdigoPythonsetrataraporlotanto inputdeberatratarseconsumocuidado. Parmetrosdelneadecomando Ademsdelusodeinputyraw_inputelprogramadorPythoncuentaconotrosmtodosparaobtenerdatos delusuario.Unodeelloseselusodeparmetrosalahoradellamaralprogramaenlalneadecomandos. Porejemplo: pythoneditor.pyhola.txt Enestecasohola.txtseraelparmetro,alquesepuedeaccederatravsdelalistasys.argv,aunque, comoesdesuponer,antesdepoderutilizardichavariabledebemosimportarelmdulosys.sys.argv[0] contienesiempreelnombredelprogramatalcomolohaejecutadoelusuario,sys.argv[1],siexiste,serael primerparmetrosys.argv[2]elsegundo,yassucesivamente. importsys if(len(sys.argv)>1): printAbriendo+sys.argv[1] else: printDebesindicarelnombredelarchivo Salidaestndar 15/22

Laformamssencillademostraralgoenlasalidaestndaresmedianteelusodelasentenciaprint,como hemosvistomultituddevecesenejemplosanteriores.Ensuformamsbsicaalapalabraclaveprintle sigueunacadena,quesemostrarenlasalidaestndaralejecutarseelestamento. >>>printHolamundo Holamundo Despusdeimprimirlacadenapasadacomoparmetroelpunterosesitaenlasiguientelneadela pantalla,porloqueelprintdePythonfuncionaigualqueelprintlndeJava. Enalgunasfuncionesequivalentesdeotroslenguajesdeprogramacinesnecesarioaadiruncarcterde nuevalneaparaindicarexplcitamentequequeremospasaralasiguientelnea.Esteeselcasodela funcinprintfdeColapropiafuncinprintdeJava. Yaexplicamoselusodeestoscaracteresespecialesdurantelaexplicacindeltipocadenaenelcaptulo sobrelostiposbsicosdePython.Lasiguientesentencia,porejemplo,imprimiralapalabraHolaseguida deunrenglnvaco(doscaracteresdenuevalnea,\n),yacontinuacinlapalabramundoindentada(un carctertabulador,\t). printHola\n\n\tmundo Paraquelasiguienteimpresinserealizarenlamismalneatendramosquecolocarunacomaalfinalde lasentencia.Comparemoselresultadodeestecdigo: >>>foriinrange(3): >>>...printi, 012 Coneldeesteotro,enelquenoutilizaunacomaalfinaldelasentencia: >>>foriinrange(3): >>>...printi 0 1 2 Estemecanismodecolocarunacomaalfinaldelasentenciafuncionadebidoaqueeselsmboloquese utilizaparasepararcadenasquequeramosimprimirenlamismalnea. >>>printHola,mundo Holamundo Estosediferenciadelusodeloperador+paraconcatenarlascadenasenquealutilizarlascomasprint introduceautomticamenteunespacioparasepararcadaunadelascadenas.Estenoeselcasoalutilizar eloperador+,yaqueloquelellegaaprintesunsoloargumento:unacadenayaconcatenada. >>>printHola+mundo Holamundo 16/22

Adems,alutilizareloperador+tendramosqueconvertirantescadaargumentoenunacadenadenoserlo ya,yaquenoesposibleconcatenarcadenasyotrostipos,mientrasquealusarelprimermtodonoes necesarialaconversin. >>>printCuesta,3,euros Cuesta3euros >>>printCuesta+3+euros <typeexceptions.TypeError>:cannotconcatenatestrand intobjects Lasentenciaprint,omsbienlascadenasqueimprime,permitentambinutilizartcnicasavanzadasde formateo,deformasimilaralsprintfdeC.Veamosunejemplobastantesimple:

printHola%s%mundo print%s%s%(Hola,mundo) Loquehacelaprimeralneaesintroducirlosvaloresaladerechadelsmbolo%(lacadenamundo)enlas posicionesindicadasporlosespecificadoresdeconversindelacadenaalaizquierdadelsmbolo%,tras convertirlosaltipoadecuado. Enlasegundalnea,vemoscmosepuedepasarmsdeunvalorasustituir,pormediodeunatupla. Enesteejemploslotenemosunespecificadordeconversin:%s. Losespecificadoresmssencillosestnformadosporelsmbolo%seguidodeunaletraqueindicaeltipo conelqueformatearelvalorPorejemplo: Especificador %s %d %o %x %f Formato Cadena Entero Octal Hexadecimal Real

Sepuedeintroducirunnmeroentreel%yelcarcterqueindicaeltipoalqueformatear,indicandoel nmeromnimodecaracteresquequeremosqueocupelacadena.Sieltamaodelacadenaresultantees menorqueestenmero,seaadirnespaciosalaizquierdadelacadena.Enelcasodequeelnmerosea negativo,ocurrirexactamentelomismo,sloquelosespaciosseaadirnaladerechadelacadena. >>>print%10smundo%Hola ______Holamundo >>>print%10smundo%Hola 17/22

Hola_______mundo Enelcasodelosrealesesposibleindicarlaprecisinautilizarprecediendolafdeunpuntoseguidodel nmerodedecimalesquequeremosmostrar: >>>frommathimportpi >>>print%.4f%pi 3.1416 Lamismasintaxissepuedeutilizarparaindicarelnmerodecaracteresdelacadenaquequeremos mostrar >>>print%.4s%holamundo hola

18/22

ARCHIVOS
LosarchivosenPythonsonobjetosdetipofilecreadosmediantelafuncinopen(abrir).Estafuncintoma comoparmetrosunacadenaconlarutaalarchivoaabrir,quepuedeserrelativaoabsolutaunacadena opcionalindicandoelmododeacceso(sinoseespecificaseaccedeenmodolectura)y,porltimo,un enteroopcionalparaespecificaruntamaodebufferdistintodelutilizadopordefecto. Elmododeaccesopuedesercualquiercombinacinlgicadelossiguientesmodos: r:read,lectura.Abreelarchivoenmodolectura.Elarchivotiene queexistirpreviamente,encasocontrarioselanzarunaexcepcin detipoIOError. w:write,escritura.Abreelarchivoenmodoescritura.Sielarchivonoexistesecrea.Siexiste, sobreescribeelcontenido. a:append,aadir.Abreelarchivoenmodoescritura.Sediferenciadelmodowenqueeneste casonosesobreescribeelcontenidodelarchivo,sinoquesecomienzaaescribiralfinaldel archivo. b:binary,binario. +:permitelecturayescriturasimultneas. U:universalnewline,saltosdelneauniversales.Permitetrabajarconarchivosquetenganun formatoparalossaltosdelneaquenocoincideconeldelaplataformaactual(enWindowsseutiliza elcaracterCRLF,enUnixLFyenMacOSCR). f=open(archivo.txt,w) Trascrearelobjetoquerepresentanuestroarchivomediantelafuncinopenpodremosrealizarlas operacionesdelectura/escriturapertinentesutilizandolosmtodosdelobjetoqueveremosenlassiguientes secciones. Unavezterminemosdetrabajarconelarchivodebemoscerrarloutilizandoelmtodoclose(). Lecturadearchivos Paralalecturadearchivosseutilizanlosmtodosread,readlineyreadlines. Elmtodoreaddevuelveunacadenaconelcontenidodelarchivoobienelcontenidodelosprimerosn bytes,siseespecificaeltamaomximoaleer. completo=f.read() parte=f2.read(512) Elmtodoreadlinesirveparaleerlaslneasdelarchivounaporuna.Esdecir,cadavezquesellamaaeste mtodo,sedevuelveelcontenidodelarchivodesdeelpunterohastaqueseencuentrauncarcterdenueva lnea,incluyendoestecarcter. whileTrue: linea=f.readline() ifnotlinea:break printlinea 19/22

Porltimo,readlines,funcionaleyendotodaslaslneasdelarchivoydevolviendounalistaconlaslneas ledas. Escrituradearchivos Paralaescrituradearchivosseutilizanlosmtodowriteywritelines.Mientraselprimerofunciona escribiendoenelarchivounacadenadetextoquetomacomoparmetro,elsegundotomacomoparmetro unalistadecadenasdetextoindicandolaslneasquequeremosescribirenelarchivo. Moverelpunterodelectura/escritura Haysituacionesenlasquenospuedeinteresarmoverelpunterodelectura/escrituraaunaposicin determinadadelarchivo.Porejemplosiqueremosempezaraescribirenunaposicindeterminadaynoal finaloalprincipiodelarchivo. Paraestoseutilizaelmtodoseekquetomacomoparmetrounnmeropositivoonegativoautilizarcomo desplazamiento.Tambinesposibleutilizarunsegundoparmetroparaindicardesdedndequeremosque sehagaeldesplazamiento:0indicarqueeldesplazamientoserefierealprincipiodelarchivo (comportamientopordefecto),1serefierealaposicinactual,y2,alfinaldelarchivo. Paradeterminarlaposicinenlaqueseencuentraactualmenteelpunteroseutilizaelmtodotell(),que devuelveunenteroindicandoladistanciaenbytesdesdeelprincipiodelarchivo.

20/22

EXPRESIONESREGULARES
Elmdulorecontienefuncionesparabuscarpatronesdentrodeunacadena(search),comprobarsiuna cadenaseajustaaundeterminadocriteriodescritomedianteunpatrn(match),dividirlacadenausando lasocurrenciasdelpatrncomopuntosderuptura(split)oparasustituirtodaslasocurrenciasdelpatrn porotracadena(sub).Veremosestasfuncionesyalgunamsenlaprximaseccin,peroporahora, aprendamosalgomssobrelasintaxisdelasexpresionesregulares. Patrones Laexpresinregularmssencillaconsisteenunacadenasimple,quedescribeunconjuntocompuestotan soloporesamismacadena.Porejemplo,veamoscmolacadenapythoncoincideconlaexpresin regularpythonusandolafuncinmatch: importre ifre.match(python,python): printcierto Siquisiramoscomprobarsilacadenaespython,jython,cythonocualquierotracosaquetermineen ython,podramosutilizarelcarctercomodn,elpunto.: re.match(.ython,python) re.match(.ython,jython) Enelcasodequenecesitramoselcarcter.enlaexpresinregular. Paracomprobarsilacadenaconsisteen3caracteresseguidosdeunpunto,porejemplo,podramos utilizarlosiguiente: re.match(...\.,abc.) Existenciertassecuenciasdecomprobacindecaracteresquenospuedenayudaraexpresarytratar nuestrasexpresionesregulares: \d:undgito.Equivalea[09] \D:cualquiercaracterquenoseaundgito.Equivalea[^09] \w:cualquiercaracteralfanumrico.Equivalea[azAZ09_] \W:cualquiercaracternoalfanumrico.Equivalea[^azAZ] \s:cualquiercarcterenblanco.Equivalea[\t\n\r\f\v] \S:cualquiercarcterquenoseaunespacioenblanco.Equivalea[^\t\n\r\f\v]

Ahoranecesitamosunanomenclaturaparaindicarrepeticiones,yaquenoseraeficazescribir\d\d\d...por ejemploparaindicarquelaexpresincontienevariosdgitos.Paraellotenemosdisponiblesloscaracteres +,*,?ylasllaves{}. +:indicaqueloquetenemosalaizquierdadebeaparecer1omsveces. *:indicaqueloqueprecedeaestesignopuedeaparecer0omsveces. ?:indicaopcionalidad,esdecirquepuedeaparecer1vezonoaparecerdirectamente. 21/22

{}indicanlacantidadexactaquetienequeaparecer,porejemplositenemos{3}indicaquetiene queaparecerexactamente3veces,delmismomodo{,3}indicaquepuedeaparecerhasta3veces, {8,}indicaquemsde8veces,y{3,8}indicaquedebeaparecercomomnimo3vecesycomo mximo8veces.

22/22

You might also like