Вы находитесь на странице: 1из 40

Programando con

Por: Mario J.I.C. @mario21ic

Qu es Python?

Guido van Rossum Lenguaje interpretado Multiparadigma.- orientado a objetos, imperativo y funcional. Multiplataforma Tipado dinmico y fuerte int!is limpia con indentaci"n Pilas ya cargadas #pensource

Flujo
$ pyt%on codigo.py

codigo.pyc

&M

M'uina

Implementaciones

(pyt%on.- compila a bytecode, para ser interpretado, para ser ejecutado en la virtual mac%ine. )yt%on.- compila codigo pyt%on a )ava bytecode, para ser ejecutado en )&M. *ronPyt%on.- Pyt%on para .+et Pypy.- Pyt%on sobre pyt%on.

Tipos bsicos

Numricos,

Inte!er .

Float /.0

Comple" /..1j

Cadenas:

Comilla simple 2(omilla simple2

Comilla doble 3(omilla doble4

Comilla triple 333Triple multilinea444 Formateo 3-ormateo 6n egunda, 7s 6t tab entero 7d6nlista, 7s8 7 92!:2, ;., <2!d2, .;=>

#nicode u25nicode2

$a% r2(,66%ome2

ooleanos:

True -alse

None

Tipos bsicos & operaciones

Cadena, cadena ? 8@ola mundo8 print 8cadena,8,cadena print 8loAer,8,cadena.loAer9> print 8upper,8,cadena.upper9> print 8find mundo,8,cadena.find92mundo2> print 8find e,8,cadena.find92e2> print 8inde! mundo,8,cadena.inde!92mundo2> Bprint 8inde! e,8,cadena.inde!92e2>

'trin!: str9;0.0> Float, flotante ? ;..0 flotante.isCinteger9>

DCastin!,

-loat, flotante ? float92;...2> *nteger, entero; ? int92;.2> entero. ? int9flotante>

for c in cadena, print c

D(tros,

TamaEo, len9cadena> Tipo, type9variable>

(peradores aritmticos
'uma .F. *ultiplicaci)n .D1 ,i-is)n entera 1./ HH . $esta .-; +"ponente 1 DD . *)dulo I7. Ne!aci)n -1 ,i-isi)n GH.

(peradores de .si!naci)n

? asigna valor a ? ;.

H? a H? .

F? a F? /

DD? a DD? 1

-? a -? ;/

HH? a HH? ;0

D? a D? 1

(peradores l)!icos

Jnd
True True -alse -alse True True -alse -alse True -alse True -alse True -alse True -alse ? True ? -alse ? -alse ? -alse ? True ? True ? True ? -alse

#r

+ot
True True ? -alse ? True

(peradores de Comparaci)n

/ 0 K -;

01 ; L? .

0 ;L.

11 2!:2 ?? 2!:2

/1 . K? .

21 1 M? 212

Condicionales

i3 if True, ...

eli3 if condicion;, N elif condicion., N else, N

else if len9variable> K 0, ... else, 444

s%itch case N( 5.6

(perador Ternario

Php, $var; ? 2valor;2O $var. ? 9$var; ?? 2valor2> P 2valor.2 , 2valor12O ec%o $var.O

Python, var; ? 2valor;2 var. ? 2valor.2 if var; ?? 2valor;2 else 2valor12 print 3var.,4,var.

(peradores corto circuito

7a-ascript, persona ? trueO if 9persona> Q var nombre ? 3)uan PereR4O S -ar nombre 1 persona 88 97uan Pere:;< HHnombre ? falseO if 9nombre> Q var encargado ? nombreO S else Q var encargado ? 8JlgTn nombre8O S -ar encar!ado 1 nombre == >.l!un nombre><

Python, persona ? True if persona, nombre ? 2)uan PereR2 nombre 1 persona and ?7uan Pere:? Bnombre ? -alse if nombre, encargado ? nombre else, encargado ? 2Jlgun nombre2 encar!ado 1 nombre or ?.l!un nombre?

Iterati-os

%hile A%ile ! L? ;0, print !

brea@ for ! in range9;0>, if ! ?? ., breaU

3or&in for ! in range9;0>, print !

continue for ! in 3abac4, if ! M? 3a4, continue nuevo F? !

Tipos estructurados

Aistas lista ? <;, 2.2, <2tres2, V=, 2/2, 2G2= for ! in lista, print !

Tuplas tupla ? 9;, 2.2, 92tres2, V>, 2/2, 2G2> for ! in tupla, print !

,iccionarios diccionario ? Q2clave;2, 2valor;2, 2clave.2, ., 2subdicc2, Q2!2, 2d2SS for !,y in diccionario.items9>, print 37s - 7s4 7 9!, y>

Tipo estructurados: operaciones

Aistas, lista<0= ? 0 print 8lista<0= ? 0,8,lista lista.append92siete2> print 8lista.append92siete2>,8,lista lista.pop9> print 8lista.pop9>,8,lista lista<.=<0= ? 1

print 8lista<1=<0= ? 1,8,lista print 8lista<;=,8,lista<;= print 8lista<-.=,8,lista<-.= print 8lista<.,=,8,lista<.,= print 8lista<-.,;=,8,lista<-.,;= print 8lista<,.=8,lista<,.= print 8lista<,-.=8,lista<,-.= print 8lista<;,V=8,lista<;,V=

,iccionario, diccionario<2clave;2= ? 2nuevoCvalor;2 diccionario<2subdicc2=<2!2= ? 2neACvalueCsubCdicc2 if 2clave;2 in diccionario, print 2si e!iste2

Aistas por comprensi)n


listaCnueva ? <= for ! in range9;0>, if !7. ?? 0, listaCnueva.append9!D.> listaBnue-a 1 C"DE 3or " in ran!eFGHI i3 "JE 11 HK 8listaCnueva,8,listaCnueva Nota: +o recomendable cuando la e!presi"n es complicada.

+jercicios

Wvaluar las siguientes e!presiones, en el orden adecuado,


a ? 2b2 b ? a F 2b2 . D 9a F 2c2 F b>

:ada una cadena ingresada, imprimirla en el orden invertido. :evuelve el tamaEo de la primera palabra de una oraci"n. *mprimir solo los nTmeros pares menores 'ue ;0 y mayor 'ue 0. :ado una cadena ingresada entre mayTsculas y minTsculas, contar el numero de veces 'ue aparece la vocal 3a4. umar todos los impares 'ue se encuentren entre 0 y ;0 9incluyendolo>. imular un sAitc% case.

Aistas: operaciones

+liminar del lista<inde!=

Comparaci)n <;, ., 1= ?? <;, .= -alse <;, ., 1= ?? <;, ., 1= True <;, ., 1= ?? <;, ., V= -alse <;, ., 1= L <;, 1, .= True <;0, .0, 10= K <;, ., 1= True <;, ., 1= L <;, .= -alse

Fusionar lista ? lista F <2!2,2d2= F <2!2,2y2=

Copiar a ? <1,V,/,G= b?a a is b ?K True b ? a<,= a is b ?K -alse b ? list9a> a is b ?K -alse

Tipos especiales

(rdenados from collections import #rdered:ict marUers ? #rdered:ict9> marUers<2ms;.12= ? .1.X marUers<2mU1;2= ? ;..Y marUers<2msX.2= ? 1..;

,eLue from collections import de'ue mide'ue ? de'ue93abc4> mide'ue.appendleft92!2> mide'ue.popleft9> mide'ue.e!tendleft9<2!2, 2y2=>

.rrays import array miarray ? array.array98i8, <;,.,1=> miarray.append9V>

Counter from collections import (ounter cnt ? (ounter9> for Aord in <2red2, 2blue2, 2red2, 2green2, 2blue2, 2blue2=, cnt<Aord= F? ;

'ets

,e3iniendo, miCset ? set9> miCset.add92juan2> miCset.add92viUi2> miCset.add92nati2> otro ? set9<2juan2, 2Uarina2, 2diana2=>

(peraciones, miCset.intersection9otro> miCset.union9otro> miCset.difference9otro> Mas operaciones, %ttp,HHesintuitivo.blogspot.comH.00YH0GHconjuntos-en-pyt%on.%tml

Funciones

'imple: def funcionCsimple9>, return 3!:4 print funcionCsimple9>

Parametros: def funcionCparametros9cadena>, if cadena is not +one, print cadena print funcionCparametros93funcion parametros4>

Parametros -alores de3ecto:

def funcionCparamCdefault9cadena;, cadena.?2cad.2, cadena1?2cad12>, return cadena; F 3 4 F cadena. F 3 3 F cadena1 print funcionCparamCdefault92micad;2, cadena1?2micad12>

Funciones

*ulti params: def funcionCmultiCparam9cadena;, cadena.?2cad.2, cadena1?2cad12, Dargs>, print 8args,8,args return cadena;F8 8Fcadena.F8 8Fcadena1 print funcionCmultiCparam92!:2, 2micad.2, 2micad12, 2micadV2, 2micad/2>

*ulti @ey params, def funcionCmultiCUeyCparam9cadena;, cadena.?2cad.2, cadena1?2cad12, DDUAargs>, print 8UAargs,8,UAargs return cadena;F8 8Fcadena.F8 8Fcadena1 print funcionCmultiCUeyCparam92!:2, 2micad.2, 2micad12, cadV?2micadV2, cad/?2micad/2>

*)dulos 8 Pac@a!es

*)dulos, from mimodulo import mifuncion print mifuncion9>

Pac@a!es, se crea un arc%ivo CCinitCC.py dentro de una carpeta from mipacUage.mimodulo import mifuncion print mifuncion9>

.rLuitectura

+jercicios

:e una lista, eliminar los items ingresados por 1 inputs e imprimirlo. Jcorde a una lista, simular un paginador, ;. items y mostrar / por pgina, cuyo page ser ingresado por input, imprimir los items. :ado . conjuntos, imprimir las 1 operaciones bsicas 9interseccion, diferencia, uni"n>. Wscriba una funci"n 'ue devuelva el valor de una raZR cTbica de un valor ingresado. :iseEe una funci"n 'ue calcule la multiplicaci"n de todos los nTmeros 'ue componen una lista. :efinir una funci"n 'ue dada una cadena !, devuelva otra cuyo contenido sea el resultado de concatenar G veces por si misma. RealiRar una funci"n 'ue dada una lista de nTmeros, devuelva otra lista 'ue s"lo incluya sus nTmeros impares. (ree una estructura de pacUage como si fuese java 3src.main.pyt%on.com.scytl.platform4 e importar un m"dulo

P((: Clase y 5erencia


class @umano9object>, def saludar9self, para>, return 8@ola 8 F para class Persona9@umano>, def CCpensar9self>, return 3pensando4 def presentarse9self>, return 8Me llamo 8Fself.nombre juanCpereR ? Persona9> juanCpereR.nombre ? 8)uan PereR8 print juanCpereR.saludar98Pepito8> print juanCpereR.presentarse9> juanCpereR.CCpensar9>

P((: Constructores
class @umano9object>, def saludar9self, para>, return 8@ola 8 F para class Persona9@umano>, def CCinitCC9self, nombre>, self.nombre ? nombre def presentarse9self>, return 8Me llamo 8Fself.nombre juanCpereR ? Persona98)uan PereR8> print juanCpereR.saludar98Pepito8> print juanCpereR.presentarse9>

P((: 'obre escritura de mtodos


class Persona9@umano>, def presentarse9self>, return 8Me llamo 8Fself.nombre def saludar9self, para>, Bprint 8saludar %ijo8 Breturn super9Persona, self>.saludar9para> return 8 aludo para, 8 F para juanCpereR ? Persona9> juanCpereR.nombre ? 8)uan PereR8 print juanCpereR.saludar98Pepito8> print juanCpereR.presentarse9>

P((: Clases abstractas


from abc import J[(Meta, abstractmet%od class Jbstracto9object>, CCmetaclassCC ? J[(Meta \abstractmet%od def metodo9self>, pass class @eredado9Jbstracto>, def metodo9self>, print 8%eredado8

KK ! ? Jbstracto9> TypeWrror, (an2t instantiate abstract class Jbstracto Ait% abstract met%ods metodo KK ! ? @eredado9> KK !.metodo9> %eredado

Polimor3ismo
class Pajaro9>, def desplaRar9self>, print98&olar8>
p ? Pajaro9> def mover9animal>, animal.desplaRar9>

class &ibora9>, def desplaRar9self>, print98Jrrastrarse8>

v ? &ibora9> p.desplaRar9> v.desplaRar9> mover9p> mover9v>

P((: .tributos especiales

CCclassCC la clase del objeto. CCclassCC.CCnameCC nombre de la clase. CCdictCC diccionario con los atributos de la clase CCstrCC invocado al momento de %acer print sobre si o str9> CClenCC se invoca al aplicar la funcion len9> CCreprCC se invoca con la funcion repr9> CCiterCC permite iterar sobre una secuencia, como cuando se usa for sencuencia CCgetitemCC para acceder a un objeto secuencialmente o usando un subZndice tipo objeto<n=, re'uiere . parmetros. CCsetitemCC para asignarle el valor a una clave CCdelitemCC implementa el borrado de un objeto
Mas, %ttps,HHdocs.pyt%on.orgH.HreferenceHdatamodel.%tml

P((: 5erencia multiple


class (;9object>, def metodo;9self>, return 8metodo ;8 def metodo19self>, return 8metodo 18 class (.9object>, def metodo.9self>, return 8metodo .8 def metodo19self>, return 8metodo 1.;8

class (19(;,(.>, pass objeto ? (19> print objeto.metodo;9> print objeto.metodo.9> print objeto.metodo19>

,atos compartidos
class %ared:ata9object>, spam ? V. ! ? %ared:ata9> y ? %ared:ata9> KK print !.spam, y.spam V., V. KK !.spam F?; KK print !.spam, y.spam V1, V. KK %ared:ata.spam ? XX KK print !.spam, y.spam V1, XX

+"cepciones
def fetc%er9obj, inde!>, return obj<inde!= ! ? 2spam2 print fetc%er9!, 1> Bprint fetc%er9!, V> try, fetc%er9!, V> e!cept *nde!Wrror, print 2got e!pception2

+"cepciones

e"cept: captura e!cepciones 'ue no esten en otro e!cept. e"cept name, captura una e!cepcion especZfica. e"cept name as -alue: captura una e!cepcion y la asigna a una variable. e"cept FnameGM nameEI: captura cual'uiera de las e!pcepciones listadas. e"cept FnameGM nameEI as -alue: captura cual'uiera y la asigna a una variable. else: e ejecuta si no se presenta ninguna e!cepcion 3inally: se ejecuta asi se presenten o no e!cepciones.

+"cepciones comunes
+rror RuntimeWrror Type+rror Name+rror Nalue+rror ,escripci)n +rror en el sistema +rror de tipo de dato Nariable no e"iste +rror en castin!

+"cepciones: Ae-antamiento
try, raise *nde!Wrror e!cept *nde!Wrror, print 2got e!ception2

+"cepciones: Personali:acion
class JlreadyGot#ne9W!ception>, pass def grail9>, raise JlreadyGot#ne9> try, grail9> e!cept JlreadyGot#ne, print 2got e!ception customiRed2

+jercicios

(rea una clase, 'ue implemente sus m]todos pop, pus% y devuelva cuantos items 'uedan en la pila. (rear una clase con atributos, nombres, apellidos y dniO 'ue al momento de %acer un print sobre una instancia imprima los atributos mencionados. (rea una clase abstracta llamada -iguraGeometrica con los atributos nombre, numClados y los m]todos devolver nombre9> y calcular area9> y e!tiendala mediante las clases Rectangulo,(irculo, Triangulo y reimplemente las funciones de la superclase en cada una de las subclases. :e^na una clase Wnsalada-rutas con una atributo frutas 'ue sea inicialmente <2melones2, 2pinas2, 2manRanas2= y un atributo raciones cuyo valor inicial sea V. Wscriba un metodo init 'ue recibalos argumentos ingredientes 9una lista de cadenas> y num raciones 9un entero> y guarde losvalores obtenidos en los atributos y frutas y raciones 9las 'ue 'ueden> Wn el ejercicio anterior escriba un metodo agregar9> 'ue obtenga una cadena de te!to y laagregue al ^nal de la lista frutas. Jgregue adem_as un metodo servir9> 'ue reduRca en uno la cantidad de raciones e imprima 8:isfrute8, si ya no %ay raciones debe imprimir 8:isculpe8 Wscriba un programa 'ue itere sobre una lista utiliRando un rango superior a la cantidad deelementos de la lista. (uando se produRca el error, este debe ser capturado por una e!cepcion e imprimir sus datos, agregue una sentencia ^nally 'ue imprima la cantidad de elementos dela lista.

Вам также может понравиться