Está en la página 1de 11

Tutorial del lenguaje Python

Tabla de contenidos "Hello World!" Entrada de Usuario. raw_input() Operadores Variables Nmeros Se uen ias (strin!s" listas # tuplas) Strin!s $istas # %uplas &i ionarios 'lo(ues de )di!o Senten ia i* 'u le w+ile 'u le *or &e*ini i)n de *un iones ,)dulos -i +eros Errores # e. ep iones

"Hello World!"
El primer pro!rama al (ue se en*rentar/ el desarrollador m/s a0an1ado uando empie1a on un nue0o len!ua2e" ser/ sin nin!una duda el *amoso 3 Hola ,undo !
>>> print 'Hello World!' Hello World!

$a senten ia print se utili1a en p#t+on para mostrar la salida por la pantalla. 4(uellos (ue est5n *amiliari1ados on 6" deben saber (ue *un iona de *orma pare ida a la senten ia printf(). Un apunte *inal" la senten ia print 2unto on el operador de *ormateo de adenas (7) se omporta e.a tamente i!ual a la senten ia printf() de 6.
>>> print "%s es el nmero %d!" % ("Python", 1) Python es el nmero 1!

Entrada de Usuario. ra !input()


$a *orma m/s */ il de obtener la entrada de datos de un usuario por pantalla" es utili1ando la senten ia ra !input().
>>> user = raw input('!ntrodu"e tu lo#in$ ')

!ntrodu"e tu lo#in$ root >>> print '%u lo#in es$', user %u lo#in es$ root

El e2emplo anterior espera (ue la entrada sea una adena" pero si (ueremos introdu ir un 0alor num5ri o # (ue sea tratado omo tal" +abr/ (ue on0ertirlo pre0iamente.
>>> num = raw input('!ntrodu"e un nmero$ ') !ntrodu"e un nmero$ 1&'( >>> print ')l do*le del nmero es$ %d' % (int(num) + ') )l do*le del nmero es$ '&(,

$a *un i)n int() on0ierte la 0ariable de tipo string en un entero.

"peradores

"peradores #ate#$ticos8 9 : ; < 7 ;; "peradores de co#paraci%n8 = => ? ?> >> !> =? "peradores l%gicos8 and or not

&ariables
$as re!las (ue ri!en el omportamiento de las 0ariables en @#t+on son mu# pare idas a las de otros len!ua2es. $as 0ariables son simples identi*i adores (ue deben empe1ar siembre por un ar/ ter al*ab5ti o" en ma#s ulas o mins ulas o el sAmbolo _ (!ui)n ba2o)" se!uidos de ual(uier ar/ ter al*anum5ri o. Ha# (ue re al ar (ue @#t+on distin!ue entre ma#s ulas # mins ulas. @#t+on es un len!ua2e de tipos din/mi os" lo ual si!ni*i a (ue no +a# ne esidad de de larar el tipo de una 0ariable. El tipo se de*inir/ en el momento de la asi!na i)n de la 0ariable.
>>> "ontador = & >>> millas = 1&&&-& >>> nom*re = '.ernando' >>> "ontador = "ontador / 1 >>> 0ms = 1-1&2 + millas >>> print '%3 millas es lo mismo 4ue %3 0m' % (millas, 0ms) 1&&&-&&&&&& millas es lo mismo 4ue 11&2-&&&&&& 0m

'(#eros
@#t+on soporta uatro tipos num5ri os8 B. Enteros on si!no (int). C. Enteros lar!os (long) (ue pueden ser representados tambi5n en o tal o +e.ade imal.

D. Eeales en oma *lotante (float) F. Nmeros omple2os (complex) $os tipos realmente interesantes en @#t+on por las parti ularidades (ue omportan son el tipo long # el tipo complex. El tipo lon! es superior al ar +i ono ido lon! de 6" #a (ue en @#t+on no tiene lAmite de apa idad" solamente el (ue le impon!a la memoria 0irtual del sistema. SerAa m/s pare ido a los nmeros de*inidos en Ga0a on la lase 'i!Hnte!er. En uanto al soporte de nmeros omple2os" @#t+on es el ni o len!ua2e (ue nati0amente soporta este tipo de datos.

)ecuencias (strings, listas y tuplas)


$as se uen ias son un tipo de datos u#os elementos est/n ordenados # pueden ser a edidos 0Aa un Andi e. %odos los tipos de se uen ias omparten el mismo modelo de a eso a sus elementos. @ara a eder a un elemento en on reto se utili1a la si!uiente nomen latura seq[i]. &ada una 0ariable de tipo se uen ia denominada se(" a edemos al elemento (ue o upa la posi ion i. El es(uema de numera i)n utili1ado empie1a en el I # *inali1a en el 0alor (ue de*ina la lon!itud de la se uen ia menos B. Varios elementos (substrin!s) pueden ser obtenidos a la 0e1 utili1ando el operador sli e (tro1o). $a sinta.is para obtener un !rupo de elementos es la si!uiente8
se"uen"ia5indi"e ini"ial $ indi"e 3inal6

6on esta sinta.is podemos obtener un tro1o (sli e) empe1ando en el elemento de*inido por el indi e_ini ial # terminando en el elemento anterior al de*inido por el indi e_*inal.
>>> "adena='Hola 7undo!' >>> print "adena5&$(6 Hola

@are e al!o on*uso pero la me2or *orma de re ordar omo *un iona el operador sli e es pensar (ue los indi es apuntan realmente entre los ara teres.
/888/888/888/888/888/ 9 H 9 e 9 l 9 p 9 : 9 /888/888/888/888/888/ & 1 ' ; ( < 8< 8( 8; 8' 81

En la si!uiente tabla se muestra una lista de operadores (ue se pueden utili1ar on todos los tipos de se uen ias8 Tabla *+.*. "peradores de secuencias

se uen iaJinde.K se uen iaJindB8indCK se uen ia ; n ob2eto in se uen ia ob2eto not in se uen ia

elemento situado en el Andi e inde. de la se uen ia elementos desde el Andi e indB +asta el Andi e indC la se uen ia se repite n 0e es omprueba si ob2eto es un miembro de se uen ia omprueba si ob2eto no es un miembro de se uen ia

se uen iaB 9 se uen iaC on atena las se uen ias se uen iaB # se uen iaC

$a si!uiente tabla muestra al!unas de las *un iones prede*inidas (ue se pueden apli ar a las se uen ias. Tabla *+.,. -unciones Pre./efinidas list (se uen ia) str (ob2eto) len (se uen ia) on0ierte la se uen ia a un tipo lista on0ierte el ob2eto a un tipo strin! de0uel0e la lon!itud (numero de elementos) de la se uen ia

tuple (se uen ia) on0ierte la se uen ia a un tipo tupla ma. (se uen ia) de0uel0e el elemento mas !rande de la se uen ia min (se uen ia) de0uel0e el elemento menor de la se uen ia $os di*erentes tipos de se uen ias se e.ponen a ontinua i)n.

Strings
@ara @#t+on" las adenas (strin!s) son un on2unto onti!uo de ara teres en errados entre simples o dobles omillas.
>>> "adena='Hola 7undo!' >>> print "adena Hola 7undo!

$os strin!s son inmutables" no se puede alterar su 0alor a no ser (ue sean opiados a otro ob2eto strin!. $os m5todos # *un iones apli ables al tipo de ob2eto strin! se en uentran de*inidos en el m)dulo strin!
>>> import strin# >>> "adena-upper() 'H=>: 7?@A=!'

$a lAnea i#port string permite a eder a todos los m5todos # atributos disponibles para un tipo de dato strin!" siendo la lAnea cadena.upper() la *orma de in0o ar al m5todo upper sobre el ob2eto strin! denominado cadena. 6omo resultado obtenemos el strin! en ma#s ulas. $a si!uiente tabla muestra al!unos de los m5todos disponibles en el m)dulo strin!8 Tabla *+.0. 12todos del #%dulo string

*ind( subJ" startJ" endKK) isalnum() isdi!it() lower() split(Jsep J"ma.splitKK)

de0uel0e el Andi e menor donde se en uentra el substrin! sub dentro del strin! de0uel0e 0erdadero si todos los ara teres en el strin! son al*anum5ri os # e.iste al menos uno. de0uel0e 0erdadero si todos los ara teres en el strin! son dA!itos # e.iste al menos uno. de0uel0e una opia del strin! on0ertido a mins ulas. de0uel0e una lista de elementos del strin! utili1ando omo separador sep.

Listas y Tuplas
@#t+on posee 0arios tipos de datos para a!rupar de una *orma */ il di*erentes 0alores. El tipo de dato m/s 0ers/til es la lista. Una lista es una ole i)n de elementos separados por omas # en errados entre par5ntesis. $os elementos de una lista no tienen por(ue ser del mismo tipo.
>>> lista = 5 1,'dos',;,'"uatro'6 >>> print lista 51, 'dos', ;, '"uatro'6

6omo o urrAa on el tipo de datos strin!" los Andi es de una lista empie1an en el I" # pueden ser tro eadas (sli ed)" on atenadas ...
>>> lista 5&6 1 >>> lista 5;6 '"uatro' >>> lista 51$816 5'dos', ;6 >>> lista / 5<,'seis'6 51, 'dos', ;, '"uatro', <, 'seis'6

4 di*eren ia de los strin!s" (ue por de*ini i)n eran inmutables" en una lista podemos ambiar el 0alor de un elemento indi0idual.
>>> 51, >>> >>> 51, lista 'dos', ;, '"uatro'6 lista 5'6 = 'tres' lista 'dos', 'tres', '"uatro'6

Es posible tambi5n rear listas anidadas (listas u#os elementos pueden ser otras listas)
>>> >>> >>> ; >>> 51, lista1 = 5', ;6 lista' = 51, lista1, (6 len(lista') lista' 5', ;6, (6

/iccionarios
El tipo de dato diccionario de @#t+on es pare ido al (ue se puede en ontrar en otros len!ua2es ba2o el nombre de Arrays Asociativos. 4 di*eren ia de las se uen ias donde los Andi es son nmeros" los di ionarios est/n inde.ados por la0es. $as la0es solo podr/n ser de al!n tipo de dato inmutable (nmeros # strin!s). Un di ionario onsiste por tanto en un on2unto de pares la0e:0alor" donde las la0es son inmutables" mientras (ue los 0alores pueden ser de ual(uier tipo. Un di ionario se rea en errando entre lla0es (LM) una lista de pares la0e:0alor.
>>> usuario = B'lo#in'$ '33errer', 'uid'$ <&1 C >>> usuario B'lo#in'$ '33errer', 'uid'$ <&1C >>> usuario 5'lo#in'6 '33errer' >>> usuario 5'uid'6 <&1

$as opera iones +abituales on di ionarios son la de alma enar # e.traer al!n 0alor on su orrespondiente la0e" pero tambi5n es posible eliminar al!n elemento on la *un i)n del(). 4 la +ora de re orrer un di ionario ser/ importante tener una lista de sus la0es para poder a eder a los 0alores. El m5todo 3eys() apli ado a un ob2eto de tipo di ionario" de0ol0er/ di +a lista.
>>> usuario B'lo#in'$ '33errer', 'uid'$ <&1C >>> usuario-keys() 5'lo#in', 'uid'6 >>> del usuario 5'uid'6 >>> usuario B'lo#in'$ '33errer'C

En la si!uiente tabla se e.ponen al!unos de los prin ipales m5todos (ue se pueden usar on ob2etos del tipo di ionario. Tabla *+.4. 12todos Pre.definidos de un diccionario di t. lear() di t.!et( la0e"Jde*aultK) di t.+as_Ne#( la0e) di t.items() di t.Ne#s() di t.0alues() di t.update(di tC) elimina todos los elementos del di ionario dict de0uel0e el 0alor de la la0e o lo (ue de*inamos por de*e to si la la0e no se en uentra en el di ionario de0uel0e B si la la0e se en uentra en el di ionario. En ual(uier otro aso de0uel0e I. de0uel0e una lista de pares de tuplas la0e:0alor. de0uel0e una lista de la0es de0uel0e la lista de 0alores aOade los pares la0e:0alor del di ionario dict2 al di ionario dict

5lo6ues de c%digo
Una de las primeras osas (ue sorprende uando se empie1a a utili1ar @#t+on es la *orma en (ue este len!ua2e delimita los blo(ues de )di!o. No e.isten las lla0es (LM) ni senten ias be!in:end para en errar el )di!o" en su lu!ar un blo(ue de )di!o 0iene delimitado por la identa i)n.
>>> de3 31 (a)$ --print a -->>> 31('Hola') Hola

4 parte de sorprender" lo (ue de2a laro esta alternati0a es (ue los pro!ramas en @#t+on son le!ibles por ual(uiera" lo ual a la lar!a es mu# )modo.

)entencia if
$a sinta.is de la senten ia i* es la si!uiente8
i3 eDpression1$ i3 *lo4ue eli3 eDpression'$ eli3 *lo4ue else$ else *lo4ue

$a e.presi)n debe de0ol0er un 0alor distinto de ero o 0erdadero para (ue se e2e ute el i*. Otra osa (ue tambi5n puede sorprender es (ue no e.iste una senten ia case" pero 0ista la sinta.is de la senten ia if" anidando di*erentes eli* podemos onse!uir el mismo resultado.

5ucle hile
$a sinta.is # *un ionamiento del bu le w+ile es similar a la de la senten ia i*8
while eDpression$ while *lo4ue

El blo(ue w+ile se e2e utar/ inde*inidamente +asta (ue la e.presi)n sea I o *also. &e nue0o resaltar la identa i)n para de*inir el blo(ue de )di!o.

5ucle for
$a senten ia for de @#t+on es di*erente a la de otros len!ua2es. Solamente itera sobre una lista de elementos de una se uen ia. En otros len!ua2es ( o @erl) se puede iterar sobre una pro!resion aritmeti a tambi5n. $a sinta.is es la si!uiente8

3or elemento in se"uen"ia$ *lo4ue 3or

Un e2emplo on reto de utili1a i)n8


>>> 3or i in 51,',;,(6$ --print i --1 ' ; (

si (ueremos tener un bu le for (ue itere sobre una pro!resi)n aritm5ti a" podemos utili1ar la *un i)n ran!e() (ue de0uel0e una lista de nmeros8
>>> 3or i in ran#e(1,<)$ --print i --1 ' ; (

/efinici%n de funciones
$a palabra la0e def es utili1ada para la de*ini i)n de una *un i)n. &ebe de ir se!uida del nombre de la *un i)n # la lista de par/metros entre par5ntesis. @#t+on no distin!ue entre pro edimientos # *un iones. Si es una *un i)n" esta de0ol0er/ al!n tipo de 0alor on la senten ia return.
de3 nom*re 3un"ion (param1, param' ---)$ *lo4ue 3un"ion

$os par/metros de una *un i)n pueden tener 0alores por de*e to" de *orma (ue uando se in0o(ue a la *un i)n no ten!amos (ue espe i*i arlos todos. En este ltimo aso +abr/ (ue nominar los par/metros" para saber uales toman un 0alor # uales su de*e to.
>>> de3 ta*la mult(p1=1)$ --3or i in ran#e(11)$ --print i + p1 ---

1%dulos
$os m)dulos son el me anismo (ue utili1a @#t+on para or!ani1ar tro1os de )di!o (ue lue!o puedan ser reutili1ables. $os m)dulos pueden ontener )di!o e2e utable" lases o *un iones. 6uando se rea un *i +ero *uente de @#t+on" el nombre del m)dulo ser/ el nombre del *i +ero pero sin la e.tensi)n .py. Una 0e1 (ue el m)dulo +a sido reado" la *orma de utili1ar sus omponentes es

in0o ando la orden i#port nombre_mdulo. P para +a er uso de las *un iones o lases de*inidas en el m)dulo una 0e1 (ue este +a sido importado" se utili1a la sinta.is tApi a de #odulo.funcion() 4 ontinua i)n se presenta el pro!rama ini ial Hola ,undo! pero utili1ando las *un iones de salida del m)dulo sys.
>>> import sys >>> sys-stdout-write('Hello World!En') Hello World!

-icheros
El soporte de a eso a *i +eros es uno de los omponentes m/s importantes de ual(uier len!ua2e. En @#t+on e.iste una *un i)n pre:de*inida denominada open (ue permite abrir un *i +ero.
handle = open( 3ile name, a""ess mode='r')

$a 0ariable 3ile name ontiene el nombre del *i +ero (ue deseamos abrir" mientras (ue el par/metro acces_mode de*ine el modo en (ue (ueremos abrir el *i +ero. Estos modos pueden ser r(lectura)" (escritura)" a(aadir)" b(binario)" r7(lectura/escritura) @ara leer los ontenidos del *i +ero tenemos 0arios m5todos. readline() leer/ una lAnea en ada in0o a i)n del m5todo" mientras (ue readlines() leer/ todo el *i +ero !enerando una lista de lAneas.
3ile = open(3ilename, 'r') all>ines = 3ile-readlines() 3ile-"lose() 3or ea"h>ine in all>ines$ print ea"h>ine,

4 ontinua i)n se presenta una tabla on los m5todos m/s utili1ados sobre *i +eros8 Tabla *+.8. 12todos del objeto -ichero *ile. lose() *ile.*ileno() *ile.*lus+() *ile.read (si1e>:B) *ile.readline() *ile.readlines() *ile.seeN(o**" w+en e) *ile.write(str) *ile.writelines(list) ierra el *i +ero de0uel0e un entero representando el des riptor de *i +ero des ar!a el bu**er interno al *i +ero lee todos los b#tes del *i +ero o los espe i*i ados en el par/metro si1e lee una lAnea del *i +ero in lu#endo un salto de lAnea Qn lee todas las lAneas del *i +ero en un lista se mue0e a una posi i)n dentro del *i +ero o** b#tes desde lo (ue mar(ue la 0ariable w+en e (I> prin ipio de *i +ero" B>posi i)n a tual" C>*inal de *i +ero) es ribe la adena str al *i +ero es ribe la lista de adenas al *i +ero

Errores y e9cepciones
$os errores de sinta.is se dete tan en el pro eso de ompila i)n" pero @#t+on puede dete tar errores durante la e2e u i)n del pro!rama. 6uando se produ e un error de e2e u i)n" @#t+on !enera (raises) una e. ep i)n. @ara aOadir este tipo de dete i)n de errores" denominado mane2o de e. ep iones" +a# (ue en errar nuestro )di!o entre las lausulas try.e9cept. El blo(ue (ue de*ine la senten ia tr# ser/ el )di!o de nuestro pro!rama en si. El )di!o (ue 0iene detr/s de la lausula e. ept ser/ el )di!o (ue se e2e uta si se produ2o al!una e. ep i)n. $a sinta.is es la si!uiente.
try$ *lo4ue de "Fdi#o except )rror$ a""iFn "ontra el error

Vimos al prin ipio de este apAtulo omo soli itar del usuario (ue introdu1 a un nmero # on0ertirlo a entero" #a (ue la entrada estandar siempre era un strin!. R @ero (ue pasa si el usuario introdu e una adena S Una pe(ueOa modi*i a i)n a nuestro e2emplo mane2ando la e. ep ion nos a#udar/.
>>> while %rue$ --try$ --D = int(raw input("!ntrodu"e un nmero$ ")) --*rea0 --eD"ept Galue)rror$ --print "=ops! @o es un nmero HIlido- !ntentalo de nueHo---" ---

Si +ubieramos e2e utado simplemente la senten ia (ue nos pide introdu ir el nmero # este no es orre to" esta +ubiera *allado abortando el pro!rama.
>>> D = int(raw input("!ntrodu"e un nmero$ ")) !ntrodu"e un nmero$ aaaa %ra"e*a"0 (most re"ent "all last)$ .ile "Jstdin>", line 1, in K Galue)rror$ inHalid literal 3or int()$ aaaa

@or tanto se 0e laramente las posibilidades (ue tiene el mane2o de e. ep iones para a otar *irmemente nuestro pro!rama.

También podría gustarte