SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Programando conProgramando con
PorPor: Mario J.I.C.: Mario J.I.C.
@mario21ic@mario21ic
¿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
FlujoFlujo
$ python codigo.py
codigo.pyc VM
Máquina
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.
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])
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)
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
Operadores de AsignaciónOperadores de Asignación
● = asigna valor
a = 12
● +=
a += 5
● -=
a -= 15
● *=
a *= 3
● /=
a /= 2
● **=
a **= 3
● //=
a //= 10
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
Operadores de ComparaciónOperadores de Comparación
● >
0 > -1
● <
1 < 2
● >=
2 >= 2
● <=
1 <= 2
● ==
'xD' == 'xD'
● !=
3 != '3'
CondicionalesCondicionales
● if
if True:
...
● else
if len(variable) > 0:
...
else:
...
● elif
if condicion1:
…
elif condicion2:
…
else:
…
● switch case
NO HAY
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
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'
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
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)
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'
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.
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.
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
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
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
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')
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')
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()
ArquitecturaArquitectura
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
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()
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()
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()
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
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)
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
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()
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
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'
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.
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
Excepciones: LevantamientoExcepciones: Levantamiento
try:
raise IndexError
except IndexError:
print 'got exception'
Excepciones: PersonalizacionExcepciones: Personalizacion
class AlreadyGotOne(Exception):
pass
def grail():
raise AlreadyGotOne()
try:
grail()
except AlreadyGotOne:
print 'got exception customized'
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.

Más contenido relacionado

Destacado

Expresiones Regulares
Expresiones RegularesExpresiones Regulares
Expresiones RegularesKar Juan
 
TEORIA DE LA SEGURIDAD SOCIAL APLICADO AL DERECHO PREVISIONAL Sesion 01 Imp
TEORIA DE LA SEGURIDAD SOCIAL APLICADO AL DERECHO PREVISIONAL  Sesion 01 ImpTEORIA DE LA SEGURIDAD SOCIAL APLICADO AL DERECHO PREVISIONAL  Sesion 01 Imp
TEORIA DE LA SEGURIDAD SOCIAL APLICADO AL DERECHO PREVISIONAL Sesion 01 ImpBoris Potozén
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regularesJordan-P
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticaErii Utatane
 
Expresiones Regulares
Expresiones RegularesExpresiones Regulares
Expresiones RegularesIsabel
 
Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticasRobin Pena
 
Auditoria un enfoque practico.
Auditoria un enfoque practico.Auditoria un enfoque practico.
Auditoria un enfoque practico.frankDrew
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informaticaJaime
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticasJuanchi Novas
 
Sistemas Y Modelos De Inventarios
Sistemas Y Modelos De InventariosSistemas Y Modelos De Inventarios
Sistemas Y Modelos De Inventariosguesta316ad87
 
Odoo - Backend modules in v8
Odoo - Backend modules in v8Odoo - Backend modules in v8
Odoo - Backend modules in v8Odoo
 
Development Odoo Basic
Development Odoo BasicDevelopment Odoo Basic
Development Odoo BasicMario IC
 
Fórmulas para la liquidación de prestaciones sociales
Fórmulas para la liquidación de prestaciones socialesFórmulas para la liquidación de prestaciones sociales
Fórmulas para la liquidación de prestaciones socialesYurley Higuita Restrepo
 
Planeacion De Auditoria De Sistemas Informaticos
Planeacion De Auditoria De Sistemas InformaticosPlaneacion De Auditoria De Sistemas Informaticos
Planeacion De Auditoria De Sistemas InformaticosVidal Oved
 

Destacado (20)

Expresiones Regulares
Expresiones RegularesExpresiones Regulares
Expresiones Regulares
 
Seguridad Informática
Seguridad InformáticaSeguridad Informática
Seguridad Informática
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
TEORIA DE LA SEGURIDAD SOCIAL APLICADO AL DERECHO PREVISIONAL Sesion 01 Imp
TEORIA DE LA SEGURIDAD SOCIAL APLICADO AL DERECHO PREVISIONAL  Sesion 01 ImpTEORIA DE LA SEGURIDAD SOCIAL APLICADO AL DERECHO PREVISIONAL  Sesion 01 Imp
TEORIA DE LA SEGURIDAD SOCIAL APLICADO AL DERECHO PREVISIONAL Sesion 01 Imp
 
AUDITORIA INFORMATICA
AUDITORIA INFORMATICAAUDITORIA INFORMATICA
AUDITORIA INFORMATICA
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Expresiones Regulares
Expresiones RegularesExpresiones Regulares
Expresiones Regulares
 
Expresiones regulares y gramaticas
Expresiones regulares y gramaticasExpresiones regulares y gramaticas
Expresiones regulares y gramaticas
 
Auditoria un enfoque practico.
Auditoria un enfoque practico.Auditoria un enfoque practico.
Auditoria un enfoque practico.
 
Auditoria informatica
Auditoria informaticaAuditoria informatica
Auditoria informatica
 
Auditoria Informatica
Auditoria InformaticaAuditoria Informatica
Auditoria Informatica
 
Expresiones regulares y gramáticas
Expresiones regulares y gramáticasExpresiones regulares y gramáticas
Expresiones regulares y gramáticas
 
Sistemas Y Modelos De Inventarios
Sistemas Y Modelos De InventariosSistemas Y Modelos De Inventarios
Sistemas Y Modelos De Inventarios
 
Odoo - Backend modules in v8
Odoo - Backend modules in v8Odoo - Backend modules in v8
Odoo - Backend modules in v8
 
Development Odoo Basic
Development Odoo BasicDevelopment Odoo Basic
Development Odoo Basic
 
Fórmulas para la liquidación de prestaciones sociales
Fórmulas para la liquidación de prestaciones socialesFórmulas para la liquidación de prestaciones sociales
Fórmulas para la liquidación de prestaciones sociales
 
Sistema de inventarios
Sistema de inventariosSistema de inventarios
Sistema de inventarios
 
Activos fijos
Activos  fijosActivos  fijos
Activos fijos
 
Planeacion De Auditoria De Sistemas Informaticos
Planeacion De Auditoria De Sistemas InformaticosPlaneacion De Auditoria De Sistemas Informaticos
Planeacion De Auditoria De Sistemas Informaticos
 

Similar a Programando con Python: Introducción a la programación con Python

Similar a Programando con Python: Introducción a la programación con Python (20)

Python - Programación para machos
Python - Programación para machosPython - Programación para machos
Python - Programación para machos
 
Python
Python Python
Python
 
C:\Fakepath\Python}
C:\Fakepath\Python}C:\Fakepath\Python}
C:\Fakepath\Python}
 
Python}
Python}Python}
Python}
 
Arreglos. lidia
Arreglos. lidiaArreglos. lidia
Arreglos. lidia
 
Arreglo unidimensionales y bidimensionales
Arreglo unidimensionales y bidimensionalesArreglo unidimensionales y bidimensionales
Arreglo unidimensionales y bidimensionales
 
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)Semana 2   Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
Semana 2 Fundamentos de Python(Entradas, Salidas y Operaciones Aritméticas)
 
Mathscript
MathscriptMathscript
Mathscript
 
Algoritmos y Estructura de Datos
Algoritmos y Estructura de DatosAlgoritmos y Estructura de Datos
Algoritmos y Estructura de Datos
 
2 algoritmos-1
2 algoritmos-12 algoritmos-1
2 algoritmos-1
 
curso_programacion_python3.pdf
curso_programacion_python3.pdfcurso_programacion_python3.pdf
curso_programacion_python3.pdf
 
Resumen Java Script
Resumen Java ScriptResumen Java Script
Resumen Java Script
 
Introducción a la programación en Python
Introducción a la programación en PythonIntroducción a la programación en Python
Introducción a la programación en Python
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
Iniciación a las artes marciales con Python
Iniciación a las artes marciales con PythonIniciación a las artes marciales con Python
Iniciación a las artes marciales con Python
 
Matrices
MatricesMatrices
Matrices
 
Clase 6
Clase 6Clase 6
Clase 6
 
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptxINTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
 
IntroPython s2.pdf
IntroPython s2.pdfIntroPython s2.pdf
IntroPython s2.pdf
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 

Más de Mario IC

Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...Mario IC
 
Aws Security Latam - Criptografia con KMS
Aws Security Latam - Criptografia con KMSAws Security Latam - Criptografia con KMS
Aws Security Latam - Criptografia con KMSMario IC
 
Aws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSMario IC
 
Testing Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfraTesting Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfraMario IC
 
Automatización de tareas con Ansible
Automatización de tareas con AnsibleAutomatización de tareas con Ansible
Automatización de tareas con AnsibleMario IC
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesMario IC
 
Infraestructura como Codigo para Developers
Infraestructura como Codigo para DevelopersInfraestructura como Codigo para Developers
Infraestructura como Codigo para DevelopersMario IC
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkMario IC
 
Manejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmManejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmMario IC
 
Cloud native Computing Perú Octubre
Cloud native Computing Perú OctubreCloud native Computing Perú Octubre
Cloud native Computing Perú OctubreMario IC
 
Agiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As CodeAgiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As CodeMario IC
 
Workshop Infrastructure as Code - Suestra
Workshop Infrastructure as Code - SuestraWorkshop Infrastructure as Code - Suestra
Workshop Infrastructure as Code - SuestraMario IC
 
Docker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmDocker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmMario IC
 
GDG Lima - Docker Compose
GDG Lima - Docker ComposeGDG Lima - Docker Compose
GDG Lima - Docker ComposeMario IC
 
Docker Lima meetup - 22 de junio
Docker Lima meetup - 22 de junioDocker Lima meetup - 22 de junio
Docker Lima meetup - 22 de junioMario IC
 
Docker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoDocker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoMario IC
 
Testing en BDD con Python y Behave
Testing en BDD con Python y BehaveTesting en BDD con Python y Behave
Testing en BDD con Python y BehaveMario IC
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with TerraformMario IC
 
Docker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayDocker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayMario IC
 
Modelado de API con RAML
Modelado de API con RAMLModelado de API con RAML
Modelado de API con RAMLMario IC
 

Más de Mario IC (20)

Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
Dominando AWS KMS desde cifrado básico hasta firma avanzada - aws community d...
 
Aws Security Latam - Criptografia con KMS
Aws Security Latam - Criptografia con KMSAws Security Latam - Criptografia con KMS
Aws Security Latam - Criptografia con KMS
 
Aws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMSAws Community Day Guatemala Criptografia con AWS KMS
Aws Community Day Guatemala Criptografia con AWS KMS
 
Testing Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfraTesting Ansible Playbook con Molecule + TestInfra
Testing Ansible Playbook con Molecule + TestInfra
 
Automatización de tareas con Ansible
Automatización de tareas con AnsibleAutomatización de tareas con Ansible
Automatización de tareas con Ansible
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroides
 
Infraestructura como Codigo para Developers
Infraestructura como Codigo para DevelopersInfraestructura como Codigo para Developers
Infraestructura como Codigo para Developers
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform framework
 
Manejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmManejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con Helm
 
Cloud native Computing Perú Octubre
Cloud native Computing Perú OctubreCloud native Computing Perú Octubre
Cloud native Computing Perú Octubre
 
Agiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As CodeAgiles Peru 2019 - Infrastructure As Code
Agiles Peru 2019 - Infrastructure As Code
 
Workshop Infrastructure as Code - Suestra
Workshop Infrastructure as Code - SuestraWorkshop Infrastructure as Code - Suestra
Workshop Infrastructure as Code - Suestra
 
Docker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmDocker Compose to Production with Docker Swarm
Docker Compose to Production with Docker Swarm
 
GDG Lima - Docker Compose
GDG Lima - Docker ComposeGDG Lima - Docker Compose
GDG Lima - Docker Compose
 
Docker Lima meetup - 22 de junio
Docker Lima meetup - 22 de junioDocker Lima meetup - 22 de junio
Docker Lima meetup - 22 de junio
 
Docker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup MayoDocker Compose para el Docker Lima Meetup Mayo
Docker Compose para el Docker Lima Meetup Mayo
 
Testing en BDD con Python y Behave
Testing en BDD con Python y BehaveTesting en BDD con Python y Behave
Testing en BDD con Python y Behave
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 
Docker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbdayDocker Birthday Peru #dockerbday
Docker Birthday Peru #dockerbday
 
Modelado de API con RAML
Modelado de API con RAMLModelado de API con RAML
Modelado de API con RAML
 

Último

Procedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasProcedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasAhmedMontaoSnchez1
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
1. Cap. 4 Carga Axial (1).pdf237374335347
1. Cap. 4 Carga Axial (1).pdf2373743353471. Cap. 4 Carga Axial (1).pdf237374335347
1. Cap. 4 Carga Axial (1).pdf237374335347vd110501
 
Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1victorrodrigues972054
 
FORMATO REPORTE SEMANAL KLEF - Sem 15.pptx
FORMATO REPORTE SEMANAL KLEF - Sem 15.pptxFORMATO REPORTE SEMANAL KLEF - Sem 15.pptx
FORMATO REPORTE SEMANAL KLEF - Sem 15.pptxSAMAELAUGURIOFIGUERE
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaSebastianQP1
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosJeanCarlosLorenzo1
 
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOCamiloSaavedra30
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCarlos Delgado
 
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptxJOSLUISCALLATAENRIQU
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidasNelsonQuispeQuispitu
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...Arquitecto Alejandro Gomez cornejo muñoz
 
Libro teoria de los vehiculos Aparicio.pdf
Libro teoria de los vehiculos Aparicio.pdfLibro teoria de los vehiculos Aparicio.pdf
Libro teoria de los vehiculos Aparicio.pdferick82709
 
POBLACIONES CICLICAS Y NO CICLICAS ......
POBLACIONES CICLICAS Y NO CICLICAS ......POBLACIONES CICLICAS Y NO CICLICAS ......
POBLACIONES CICLICAS Y NO CICLICAS ......dianamontserratmayor
 
Ley 29783 ALCANCES E INTERPRETACION ----
Ley 29783 ALCANCES E INTERPRETACION ----Ley 29783 ALCANCES E INTERPRETACION ----
Ley 29783 ALCANCES E INTERPRETACION ----AdministracionSSTGru
 
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxI LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxPATRICIAKARIMESTELAL
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxJairReyna1
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialyajhairatapia
 

Último (20)

Procedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnasProcedimientos constructivos superestructura, columnas
Procedimientos constructivos superestructura, columnas
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
1. Cap. 4 Carga Axial (1).pdf237374335347
1. Cap. 4 Carga Axial (1).pdf2373743353471. Cap. 4 Carga Axial (1).pdf237374335347
1. Cap. 4 Carga Axial (1).pdf237374335347
 
Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1Electricidad y electronica industrial unidad 1
Electricidad y electronica industrial unidad 1
 
FORMATO REPORTE SEMANAL KLEF - Sem 15.pptx
FORMATO REPORTE SEMANAL KLEF - Sem 15.pptxFORMATO REPORTE SEMANAL KLEF - Sem 15.pptx
FORMATO REPORTE SEMANAL KLEF - Sem 15.pptx
 
Tarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieriaTarea de UTP matematices y soluciones ingenieria
Tarea de UTP matematices y soluciones ingenieria
 
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de ProyectosRevista estudiantil, trabajo final Materia ingeniería de Proyectos
Revista estudiantil, trabajo final Materia ingeniería de Proyectos
 
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTOESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
ESTUDIO TÉCNICO DEL PROYECTO DE CREACION DE SOFTWARE PARA MANTENIMIENTO
 
CFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric ProjectCFRD simplified sequence for Mazar Hydroelectric Project
CFRD simplified sequence for Mazar Hydroelectric Project
 
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx5. MATERIAL COMPLEMENTARIO - PPT  de la Sesión 02.pptx
5. MATERIAL COMPLEMENTARIO - PPT de la Sesión 02.pptx
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidas
 
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
 
Libro teoria de los vehiculos Aparicio.pdf
Libro teoria de los vehiculos Aparicio.pdfLibro teoria de los vehiculos Aparicio.pdf
Libro teoria de los vehiculos Aparicio.pdf
 
POBLACIONES CICLICAS Y NO CICLICAS ......
POBLACIONES CICLICAS Y NO CICLICAS ......POBLACIONES CICLICAS Y NO CICLICAS ......
POBLACIONES CICLICAS Y NO CICLICAS ......
 
Ley 29783 ALCANCES E INTERPRETACION ----
Ley 29783 ALCANCES E INTERPRETACION ----Ley 29783 ALCANCES E INTERPRETACION ----
Ley 29783 ALCANCES E INTERPRETACION ----
 
Linea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptxLinea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptx
 
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptxI LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
I LINEAMIENTOS Y CRITERIOS DE INFRAESTRUCTURA DE RIEGO.pptx
 
NOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptxNOM-002-STPS-2010, combate contra incendio.pptx
NOM-002-STPS-2010, combate contra incendio.pptx
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundial
 
MATPEL COMPLETO DESDE NIVEL I AL III.pdf
MATPEL COMPLETO DESDE NIVEL I AL III.pdfMATPEL COMPLETO DESDE NIVEL I AL III.pdf
MATPEL COMPLETO DESDE NIVEL I AL III.pdf
 

Programando con Python: Introducción a la programación con Python

  • 1. Programando conProgramando con PorPor: Mario J.I.C.: Mario J.I.C. @mario21ic@mario21ic
  • 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
  • 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. 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. 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. 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. Operadores de AsignaciónOperadores de Asignación ● = asigna valor a = 12 ● += a += 5 ● -= a -= 15 ● *= a *= 3 ● /= a /= 2 ● **= a **= 3 ● //= a //= 10
  • 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. Operadores de ComparaciónOperadores de Comparación ● > 0 > -1 ● < 1 < 2 ● >= 2 >= 2 ● <= 1 <= 2 ● == 'xD' == 'xD' ● != 3 != '3'
  • 11. CondicionalesCondicionales ● if if True: ... ● else if len(variable) > 0: ... else: ... ● elif if condicion1: … elif condicion2: … else: … ● switch case NO HAY
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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()
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Excepciones: LevantamientoExcepciones: Levantamiento try: raise IndexError except IndexError: print 'got exception'
  • 39. Excepciones: PersonalizacionExcepciones: Personalizacion class AlreadyGotOne(Exception): pass def grail(): raise AlreadyGotOne() try: grail() except AlreadyGotOne: print 'got exception customized'
  • 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.