Programando con Python

1,021 views

Published on

Archivos de ejemplos de cada sesión http://www.4shared.com/zip/ZhFxx9_oce/python_curso.html

Published in: Engineering
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
1,021
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
41
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Programando con Python

  1. 1. Programando conProgramando con PorPor: Mario J.I.C.: Mario J.I.C. @mario21ic@mario21ic
  2. 2. ¿Qué es Python?¿Qué es Python? ● Guido van Rossum ● Lenguaje interpretado ● Multiparadigma.- orientado a objetos, imperativo y funcional. ● Multiplataforma ● Tipado dinámico y fuerte ● Sintáxis limpia con indentación ● Pilas ya cargadas ● Opensource
  3. 3. FlujoFlujo $ python codigo.py codigo.pyc VM Máquina
  4. 4. ImplementacionesImplementaciones ● Cpython.- compila a bytecode, para ser interpretado, para ser ejecutado en la virtual machine. ● Jython.- compila codigo python a Java bytecode, para ser ejecutado en JVM. ● IronPython.- Python para .Net ● Pypy.- Python sobre python.
  5. 5. Tipos básicosTipos básicos ● Numéricos: ● Cadenas: ● Booleanos: – True – False ● None Integer Float Complex 2 5.0 52.3j Comilla simple Comilla doble Comilla triple 'Comilla simple' “Comilla doble” “““Triple multilinea””” Unicode Raw Formateo u'Unicode' r'C:home' “Formateo nSegunda: %s t tab entero %dnlista: %s" % ('xD', 12, ['xd', 21])
  6. 6. Tipos básicos - operacionesTipos básicos - operaciones ● Cadena: cadena = "Hola mundo" print "cadena:",cadena print "lower:",cadena.lower() print "upper:",cadena.upper() print "find mundo:",cadena.find('mundo') print "find e:",cadena.find('e') print "index mundo:",cadena.index('mundo') #print "index e:",cadena.index('e') for c in cadena: print c ● String: str(10.0) ● Float: flotante = 12.0 flotante.is_integer() ● *Casting: – Float: flotante = float('12.2') – Integer: entero1 = int('12') entero2 = int(flotante) ● *Otros: – Tamaño: len(cadena) – Tipo: type(variable)
  7. 7. Operadores aritméticosOperadores aritméticos Suma Resta Negación 2 + 2 2 - 1 -3 Multiplicación Exponente División 2 * 3 3 ** 2 6 / 2 Divisón entera Módulo 3.5 // 2 7 % 2
  8. 8. Operadores de AsignaciónOperadores de Asignación ● = asigna valor a = 12 ● += a += 5 ● -= a -= 15 ● *= a *= 3 ● /= a /= 2 ● **= a **= 3 ● //= a //= 10
  9. 9. Operadores lógicosOperadores lógicos ● And ● Or ● Not True True = True True False = False False True = False False False = False True True = True True False = True False True = True False False = False True = False True = True
  10. 10. Operadores de ComparaciónOperadores de Comparación ● > 0 > -1 ● < 1 < 2 ● >= 2 >= 2 ● <= 1 <= 2 ● == 'xD' == 'xD' ● != 3 != '3'
  11. 11. CondicionalesCondicionales ● if if True: ... ● else if len(variable) > 0: ... else: ... ● elif if condicion1: … elif condicion2: … else: … ● switch case NO HAY
  12. 12. Operador TernarioOperador Ternario ● Php: $var1 = 'valor1'; $var2 = ($var1 == 'valor') ? 'valor2' : 'valor3'; echo $var2; ● Python: var1 = 'valor1' var2 = 'valor2' if var1 == 'valor1' else 'valor3' print “var2:”,var2
  13. 13. Operadores corto circuitoOperadores corto circuito ● Javascript: persona = true; if (persona) { var nombre = “Juan Perez”; } var nombre = persona && “Juan Perez”; //nombre = false; if (nombre) { var encargado = nombre; } else { var encargado = "Algún nombre"; } var encargado = nombre || "Algun nombre"; ● Python: persona = True if persona: nombre = 'Juan Perez' nombre = persona and 'Juan Perez' #nombre = False if nombre: encargado = nombre else: encargado = 'Algun nombre' encargado = nombre or 'Algun nombre'
  14. 14. IterativosIterativos ● while while x <= 10: print x ● for-in for x in range(10): print x ● break for x in range(10): if x == 2: break ● continue for x in “abac”: if x != “a”: continue nuevo += x
  15. 15. Tipos estructuradosTipos estructurados ● Listas lista = [1, '2', ['tres', 4], '5', '6'] for x in lista: print x ● Tuplas tupla = (1, '2', ('tres', 4), '5', '6') for x in tupla: print x ● Diccionarios diccionario = {'clave1': 'valor1', 'clave2': 2, 'subdicc': {'x': 'd'}} for x,y in diccionario.items(): print “%s - %s” % (x, y)
  16. 16. Tipo estructurados: operacionesTipo estructurados: operaciones ● Listas: lista[0] = 0 print "lista[0] = 0:",lista lista.append('siete') print "lista.append('siete'):",lista lista.pop() print "lista.pop():",lista lista[2][0] = 3 print "lista[3][0] = 3:",lista print "lista[1]:",lista[1] print "lista[-2]:",lista[-2] print "lista[2:]:",lista[2:] print "lista[-2:1]:",lista[-2:1] print "lista[:2]",lista[:2] print "lista[:-2]",lista[:-2] print "lista[1:4]",lista[1:4] ● Diccionario: diccionario['clave1'] = 'nuevo_valor1' diccionario['subdicc']['x'] = 'new_value_sub_dicc' if 'clave1' in diccionario: print 'si existe'
  17. 17. Listas por comprensiónListas por comprensión lista_nueva = [] for x in range(10): if x%2 == 0: lista_nueva.append(x*2) lista_nueva = [x*2 for x in range(10) if x%2 == 0] "lista_nueva:",lista_nueva ● Nota: No recomendable cuando la expresión es complicada.
  18. 18. EjerciciosEjercicios ● Evaluar las siguientes expresiones, en el orden adecuado: – a = 'b' – b = a + 'b' – 2 * (a + 'c' + b) ● Dada una cadena ingresada, imprimirla en el orden invertido. ● Devuelve el tamaño de la primera palabra de una oración. ● Imprimir solo los números pares menores que 10 y mayor que 0. ● Dado una cadena ingresada entre mayúsculas y minúsculas, contar el numero de veces que aparece la vocal “a”. ● Sumar todos los impares que se encuentren entre 0 y 10 (incluyendolo). ● Simular un switch case.
  19. 19. Listas: operacionesListas: operaciones ● Eliminar del lista[index] ● Fusionar lista = lista + ['x','d'] + ['x','y'] ● Copiar a = [3,4,5,6] b = a a is b => True b = a[:] a is b => False b = list(a) a is b => False ● Comparación [1, 2, 3] == [1, 2] False [1, 2, 3] == [1, 2, 3] True [1, 2, 3] == [1, 2, 4] False [1, 2, 3] < [1, 3, 2] True [10, 20, 30] > [1, 2, 3] True [1, 2, 3] < [1, 2] False
  20. 20. Tipos especialesTipos especiales ● Ordenados from collections import OrderedDict markers = OrderedDict() markers['ms123'] = 23.9 markers['mk31'] = 12.8 markers['ms92'] = 32.1 ● Arrays import array miarray = array.array("i", [1,2,3]) miarray.append(4) ● Deque from collections import deque mideque = deque(“abc”) mideque.appendleft('x') mideque.popleft() mideque.extendleft(['x', 'y']) ● Counter from collections import Counter cnt = Counter() for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']: cnt[word] += 1
  21. 21. SetsSets ● Definiendo: mi_set = set() mi_set.add('juan') mi_set.add('viki') mi_set.add('nati') otro = set(['juan', 'karina', 'diana']) ● Operaciones: mi_set.intersection(otro) mi_set.union(otro) mi_set.difference(otro) Mas operaciones: http://esintuitivo.blogspot.com/2008/06/conjuntos-en-python.html
  22. 22. FuncionesFunciones ● Simple: def funcion_simple(): return “xD” print funcion_simple() ● Parametros: def funcion_parametros(cadena): if cadena is not None: print cadena print funcion_parametros(“funcion parametros”) ● Parametros valores defecto: def funcion_param_default(cadena1, cadena2='cad2', cadena3='cad3'): return cadena1 + “ ” + cadena2 + “ “ + cadena3 print funcion_param_default('micad1', cadena3='micad3')
  23. 23. FuncionesFunciones ● Multi params: def funcion_multi_param(cadena1, cadena2='cad2', cadena3='cad3', *args): print "args:",args return cadena1+" "+cadena2+" "+cadena3 print funcion_multi_param('xD', 'micad2', 'micad3', 'micad4', 'micad5') ● Multi key params: def funcion_multi_key_param(cadena1, cadena2='cad2', cadena3='cad3', **kwargs): print "kwargs:",kwargs return cadena1+" "+cadena2+" "+cadena3 print funcion_multi_key_param('xD', 'micad2', 'micad3', cad4='micad4', cad5='micad5')
  24. 24. Módulos & PackagesMódulos & Packages ● Módulos: from mimodulo import mifuncion print mifuncion() ● Packages: se crea un archivo __init__.py dentro de una carpeta from mipackage.mimodulo import mifuncion print mifuncion()
  25. 25. ArquitecturaArquitectura
  26. 26. EjerciciosEjercicios ● De una lista, eliminar los items ingresados por 3 inputs e imprimirlo. ● Acorde a una lista, simular un paginador, 12 items y mostrar 5 por página, cuyo page será ingresado por input, imprimir los items. ● Dado 2 conjuntos, imprimir las 3 operaciones básicas (interseccion, diferencia, unión). ● Escriba una función que devuelva el valor de una raíz cúbica de un valor ingresado. ● Diseñe una función que calcule la multiplicación de todos los números que componen una lista. ● Definir una función que dada una cadena x, devuelva otra cuyo contenido sea el resultado de concatenar 6 veces por si misma. ● Realizar una función que dada una lista de números, devuelva otra lista que sólo incluya sus números impares. ● Cree una estructura de package como si fuese java “src.main.python.com.scytl.platform” e importar un módulo
  27. 27. POO: Clase y HerenciaPOO: Clase y Herencia class Humano(object): def saludar(self, para): return "Hola " + para class Persona(Humano): def __pensar(self): return “pensando” def presentarse(self): return "Me llamo "+self.nombre juan_perez = Persona() juan_perez.nombre = "Juan Perez" print juan_perez.saludar("Pepito") print juan_perez.presentarse() juan_perez.__pensar()
  28. 28. POO: ConstructoresPOO: Constructores class Humano(object): def saludar(self, para): return "Hola " + para class Persona(Humano): def __init__(self, nombre): self.nombre = nombre def presentarse(self): return "Me llamo "+self.nombre juan_perez = Persona("Juan Perez") print juan_perez.saludar("Pepito") print juan_perez.presentarse()
  29. 29. POO: Sobre escritura de métodosPOO: Sobre escritura de métodos class Persona(Humano): def presentarse(self): return "Me llamo "+self.nombre def saludar(self, para): #print "saludar hijo" #return super(Persona, self).saludar(para) return "Saludo para: " + para juan_perez = Persona() juan_perez.nombre = "Juan Perez" print juan_perez.saludar("Pepito") print juan_perez.presentarse()
  30. 30. POO: Clases abstractasPOO: Clases abstractas from abc import ABCMeta, abstractmethod class Abstracto(object): __metaclass__ = ABCMeta @abstractmethod def metodo(self): pass class Heredado(Abstracto): def metodo(self): print "heredado" >> x = Abstracto() TypeError: Can't instantiate abstract class Abstracto with abstract methods metodo >> x = Heredado() >> x.metodo() heredado
  31. 31. PolimorfismoPolimorfismo class Pajaro(): def desplazar(self): print("Volar") class Vibora(): def desplazar(self): print("Arrastrarse") def mover(animal): animal.desplazar() p = Pajaro() v = Vibora() p.desplazar() v.desplazar() mover(p) mover(v)
  32. 32. POO: Atributos especialesPOO: Atributos especiales ● __class__ la clase del objeto. ● __class__.__name__ nombre de la clase. ● __dict__ diccionario con los atributos de la clase ● __str__ invocado al momento de hacer print sobre si o str() ● __len__ se invoca al aplicar la funcion len() ● __repr__ se invoca con la funcion repr() ● __iter__ permite iterar sobre una secuencia, como cuando se usa for sencuencia ● __getitem__ para acceder a un objeto secuencialmente o usando un subíndice tipo objeto[n], requiere 2 parámetros. ● __setitem__ para asignarle el valor a una clave ● __delitem__ implementa el borrado de un objeto Mas: https://docs.python.org/2/reference/datamodel.html
  33. 33. POO: Herencia multiplePOO: Herencia multiple class C1(object): def metodo1(self): return "metodo 1" def metodo3(self): return "metodo 3" class C2(object): def metodo2(self): return "metodo 2" def metodo3(self): return "metodo 3.1" class C3(C1,C2): pass objeto = C3() print objeto.metodo1() print objeto.metodo2() print objeto.metodo3()
  34. 34. Datos compartidosDatos compartidos class SharedData(object): spam = 42 x = SharedData() y = SharedData() >> print x.spam, y.spam 42, 42 >> x.spam +=1 >> print x.spam, y.spam 43, 42 >> SharedData.spam = 99 >> print x.spam, y.spam 43, 99
  35. 35. ExcepcionesExcepciones def fetcher(obj, index): return obj[index] x = 'spam' print fetcher(x, 3) #print fetcher(x, 4) try: fetcher(x, 4) except IndexError: print 'got expception'
  36. 36. ExcepcionesExcepciones ● except: captura excepciones que no esten en otro except. ● except name: captura una excepcion específica. ● except name as value: captura una excepcion y la asigna a una variable. ● except (name1, name2): captura cualquiera de las expcepciones listadas. ● except (name1, name2) as value: captura cualquiera y la asigna a una variable. ● else: Se ejecuta si no se presenta ninguna excepcion ● finally: se ejecuta asi se presenten o no excepciones.
  37. 37. Excepciones comunesExcepciones comunes Error Descripción RuntimeError Error en el sistema TypeError Error de tipo de dato NameError Variable no existe ValueError Error en casting
  38. 38. Excepciones: LevantamientoExcepciones: Levantamiento try: raise IndexError except IndexError: print 'got exception'
  39. 39. Excepciones: PersonalizacionExcepciones: Personalizacion class AlreadyGotOne(Exception): pass def grail(): raise AlreadyGotOne() try: grail() except AlreadyGotOne: print 'got exception customized'
  40. 40. EjerciciosEjercicios ● Crea una clase, que implemente sus métodos pop, push y devuelva cuantos items quedan en la pila. ● Crear una clase con atributos: nombres, apellidos y dni; que al momento de hacer un print sobre una instancia imprima los atributos mencionados. ● Crea una clase abstracta llamada FiguraGeometrica con los atributos nombre, num_lados y los métodos devolver nombre() y calcular area() y extiendala mediante las clases Rectangulo,Circulo, Triangulo y reimplemente las funciones de la superclase en cada una de las subclases. ● Defina una clase EnsaladaFrutas con una atributo frutas que sea inicialmente ['melones', 'pinas', 'manzanas'] y un atributo raciones cuyo valor inicial sea 4. Escriba un metodo init que recibalos argumentos ingredientes (una lista de cadenas) y num raciones (un entero) y guarde losvalores obtenidos en los atributos y frutas y raciones (las que queden) ● En el ejercicio anterior escriba un metodo agregar() que obtenga una cadena de texto y laagregue al final de la lista frutas. Agregue adem´as un metodo servir() que reduzca en uno la cantidad de raciones e imprima "Disfrute", si ya no hay raciones debe imprimir "Disculpe" ● Escriba un programa que itere sobre una lista utilizando un rango superior a la cantidad deelementos de la lista. Cuando se produzca el error, este debe ser capturado por una excepcion e imprimir sus datos, agregue una sentencia finally que imprima la cantidad de elementos dela lista.

×