SlideShare una empresa de Scribd logo
MODULOS
EN PYTHON
Mg. Richard E. Mendoza G.
https://www.ted.com/talks/eneritz_zubizarreta_el_testing_de_software_nos_salva_cada_dia
● Un módulo permite agrupar funcionalidad común en un
sólo archivo.
● Cuando varios módulos agrupan funcionalidades
comunes, se pueden agrupar, a su vez, en paquetes.
● Python reconoce que un directorio es un paquete
porque contiene un archivo llamado__init .py
Paquetes y módulos
def convertir(tipo_moneda, dolares):
pesos = float(input('¿Cuántos ' + tipo_moneda + ' desea
cambiar? '))
return round(pesos / dolares, 2)
menu = '''
1. COP A USD
2. ARG A USD
3. MX A USD
opcion = int(input(menu))
if opcion == 1:
print('En USD es: $' + str(convertir('colombianos',
3715.50)))
elif opcion == 2:
print('En USD es: $' + str(convertir("argentinos", 70.50)))
elif opcion == 3:
print('En USD es: $' + str(convertir('mexicanos', 22.66)))
else:
print('Ingrese opción válida')
Modularización Funciones
● Cuando se lanza (throw) un
error, si el error no se “atrapa”,
entonces el programa se
detiene.
● Hay veces que queremos evitar
este comportamiento porque
sabemos como arreglar el error.
● Para manejar el error se utilizan
los keywords try / except
● La cláusula else se ejecuta si no
han ocurrido excepciones y antes
de la cláusula finally.
Manejo de errores
try:
#Código a ejecutar
except:
# Código para 'cachar' o 'recibir'
el error y hacer algo
else:
# Código cuando el try SI sirva y NO
se ejecute el except
finally:
# Código que SIEMPRE se va a
ejecutar, independientemente se
ejecute el except o el else
Errores
SyntaxError
Exception
FileNotFoundError
ZeroDivisionError
ImportError
IndexError
KeyError
KeyboardInterrupt
def dividir(x, y):
try: #Código a ejecutar
resultado = x / y
except ZeroDivisionError: #Código para 'cachar' el
error
print("¡División por cero!") #Hacer algo
else: #Código cuando el try SI sirva y NO el except
print("El resultado es", resultado)
finally: #Código que SIEMPRE se va a ejecutar
print("Ejecutando la clausula finally")
print(dividir(2,1))#2.0 y clausula finally
dividir(2, 0)#¡División por cero!
dividir("2", "1")#Solo clausula finally y error
Jerarquía de errores en Python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
def encontrar(elemento,lista):
'''Devuelve el indice donde se encuentra el
@elemento en la @lista
Si no lo encuentra devuelve -1
'''
indice=0
while True:
try:
if lista[indice]==elemento:
return indice
except IndexError:
return -1
indice+=1
print(encontrar(4, [2,3,4,5]))
print(encontrar(1, [2,3,4,5]))
Jerarquía de errores en Python
● Programacióndefensiva
● Pueden utilizarse para
verificar que los tipos sean
correctosenunafunción
● También sirven para
debuguear
● El uso del assert en Python
nos permite verificar que
una determinada condición
sea True, y de no serlo, se
lanzará una excepción.
Afirmaciones
# assert <expresion booleana>,
<mensaje de error>
def primera_letra(lista_de_palabras):
primeras_letras=[]
for palabra in lista_de_palabras:
assert type(palabra) == str,
f'{palabra} no es str'
assert len(palabra) > 0, 'No se
permiten str vacios'
primeras_letras.append(palabra[0])
return primeras_letras
def primera_letra(lista_palabras):
primeras_letras = []
for palabra in lista_palabras:
try:
assert type(palabra) == str, f'{palabra} no es
String'
assert len(palabra) > 0 , 'No se permiten vacios'
primeras_letras.append(palabra[0])
except AssertionError as e:
print(e)
return primeras_letras
lista = ['Angel',3.5, '', 4 , '4321', 0.53]
print('Primeras letras validas son : ' ,
primera_letra(lista))
Modularización Funciones
Si es una buena idea,
continuad y llevadla a
término. Es mucho más fácil
pedir disculpas que conseguir
el permiso necesario

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

programacion
programacionprogramacion
programacion
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
C++
C++C++
C++
 
Ejercicios con Python parte 05
Ejercicios con Python parte 05Ejercicios con Python parte 05
Ejercicios con Python parte 05
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje
 
4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario4. Programación con arrays, funciones, y objetos definidos por el usuario
4. Programación con arrays, funciones, y objetos definidos por el usuario
 
01 el lenguaje Python
01 el lenguaje Python01 el lenguaje Python
01 el lenguaje Python
 
Tema3 p2%20
Tema3 p2%20Tema3 p2%20
Tema3 p2%20
 
Práctica web de la sesión 3
Práctica web de la sesión 3Práctica web de la sesión 3
Práctica web de la sesión 3
 
Objetop
ObjetopObjetop
Objetop
 
Ejercicios Python parte 4
Ejercicios Python parte 4Ejercicios Python parte 4
Ejercicios Python parte 4
 
3 curso php
3 curso php3 curso php
3 curso php
 
3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje3. Utilización de los objetos predefinidos del lenguaje
3. Utilización de los objetos predefinidos del lenguaje
 
Python03
Python03Python03
Python03
 
De Cero A Python En 45 Min
De Cero A Python En 45 MinDe Cero A Python En 45 Min
De Cero A Python En 45 Min
 
Package logica jo
Package logica joPackage logica jo
Package logica jo
 
Tarea sesion 3
Tarea sesion 3Tarea sesion 3
Tarea sesion 3
 
Funciones de cadenas
Funciones de cadenasFunciones de cadenas
Funciones de cadenas
 

Similar a Semana 6 Módulos en Python Entrega 1

ORM Doctrine
ORM DoctrineORM Doctrine
ORM Doctrine
Decharlas
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1
wozgeass
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
Kari Guerrero
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
Kari Guerrero
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
Kari Guerrero
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
Kari Guerrero
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
LuiS YmAY
 

Similar a Semana 6 Módulos en Python Entrega 1 (20)

2 Introducción al lenguaje Ruby
2 Introducción al lenguaje Ruby2 Introducción al lenguaje Ruby
2 Introducción al lenguaje Ruby
 
ORM Doctrine
ORM DoctrineORM Doctrine
ORM Doctrine
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1
 
Python boloñesa
Python boloñesa Python boloñesa
Python boloñesa
 
Presentacion Python
Presentacion  Python Presentacion  Python
Presentacion Python
 
Shell script
Shell scriptShell script
Shell script
 
Jquery parte 1
Jquery parte 1Jquery parte 1
Jquery parte 1
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala
 
Ejemplos de llamadas al sistema
Ejemplos de llamadas al sistemaEjemplos de llamadas al sistema
Ejemplos de llamadas al sistema
 
Informe minishell
Informe minishellInforme minishell
Informe minishell
 
Cplus
CplusCplus
Cplus
 
Shell
ShellShell
Shell
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
 
Expo metodo de ordenamiento shell
Expo metodo de ordenamiento shellExpo metodo de ordenamiento shell
Expo metodo de ordenamiento shell
 
Practica 5
Practica 5Practica 5
Practica 5
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 

Más de Richard Eliseo Mendoza Gafaro

Más de Richard Eliseo Mendoza Gafaro (20)

CUESTIONARIO REDES TELEMATICAS CISCO, HPE Y HUAWEI
CUESTIONARIO REDES TELEMATICAS CISCO, HPE Y HUAWEICUESTIONARIO REDES TELEMATICAS CISCO, HPE Y HUAWEI
CUESTIONARIO REDES TELEMATICAS CISCO, HPE Y HUAWEI
 
Material_para_Estudiante_DMPC_V012022A_SP_1
Material_para_Estudiante_DMPC_V012022A_SP_1Material_para_Estudiante_DMPC_V012022A_SP_1
Material_para_Estudiante_DMPC_V012022A_SP_1
 
MANUAL DE ORACLE AUTONOMOUS DATABASE
MANUAL DE ORACLE AUTONOMOUS DATABASEMANUAL DE ORACLE AUTONOMOUS DATABASE
MANUAL DE ORACLE AUTONOMOUS DATABASE
 
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 3
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 3PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 3
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 3
 
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 2
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 2PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 2
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 2
 
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 4
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 4PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 4
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 4
 
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 1
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 1PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 1
PARCIAL 2 PLATAFORMAS Y SOPORTES MULTIMEDIA 2023-2-VARIANTE 1
 
PARCIAL 2 SISTEMAS OPERATIVOS - BD MYSQL EN ORACLE OCI
PARCIAL 2 SISTEMAS OPERATIVOS - BD MYSQL EN ORACLE OCIPARCIAL 2 SISTEMAS OPERATIVOS - BD MYSQL EN ORACLE OCI
PARCIAL 2 SISTEMAS OPERATIVOS - BD MYSQL EN ORACLE OCI
 
PARCIAL 2 DESARROLLO DE INTERFACES UI UX
PARCIAL 2 DESARROLLO DE INTERFACES UI UXPARCIAL 2 DESARROLLO DE INTERFACES UI UX
PARCIAL 2 DESARROLLO DE INTERFACES UI UX
 
Explicación cadena de valor
Explicación cadena de valorExplicación cadena de valor
Explicación cadena de valor
 
MANUAL DESPLIEGUE SERVIDOR WEB
MANUAL DESPLIEGUE SERVIDOR WEBMANUAL DESPLIEGUE SERVIDOR WEB
MANUAL DESPLIEGUE SERVIDOR WEB
 
MANUAL DE DESPLIEGUE BASE DE DATOS CON WORKBENCH
MANUAL DE DESPLIEGUE BASE DE DATOS CON WORKBENCHMANUAL DE DESPLIEGUE BASE DE DATOS CON WORKBENCH
MANUAL DE DESPLIEGUE BASE DE DATOS CON WORKBENCH
 
CUESTIONARIO INTRODUCCION A UNITY 3D v2
CUESTIONARIO INTRODUCCION A UNITY 3D v2CUESTIONARIO INTRODUCCION A UNITY 3D v2
CUESTIONARIO INTRODUCCION A UNITY 3D v2
 
CUESTIONARIO INTRODUCCION A UNITY 3D
CUESTIONARIO INTRODUCCION A UNITY 3DCUESTIONARIO INTRODUCCION A UNITY 3D
CUESTIONARIO INTRODUCCION A UNITY 3D
 
MANUAL DESPLIEGUE SERVIDOR BASE DE DATOS
MANUAL DESPLIEGUE SERVIDOR BASE DE DATOSMANUAL DESPLIEGUE SERVIDOR BASE DE DATOS
MANUAL DESPLIEGUE SERVIDOR BASE DE DATOS
 
INTRODUCCION A SISTEMAS OPERATIVOS
INTRODUCCION A SISTEMAS OPERATIVOSINTRODUCCION A SISTEMAS OPERATIVOS
INTRODUCCION A SISTEMAS OPERATIVOS
 
CLASE 2 ORACLE CLOUD
CLASE 2 ORACLE CLOUDCLASE 2 ORACLE CLOUD
CLASE 2 ORACLE CLOUD
 
CASOS DE ESTUDIO MODELADO DEL NEGOCIO
CASOS DE ESTUDIO MODELADO DEL NEGOCIOCASOS DE ESTUDIO MODELADO DEL NEGOCIO
CASOS DE ESTUDIO MODELADO DEL NEGOCIO
 
MATERIAL DE ESTUDIO CCNA
MATERIAL DE ESTUDIO CCNAMATERIAL DE ESTUDIO CCNA
MATERIAL DE ESTUDIO CCNA
 
PREGUNTAS TOGAF 9.2 RESPUESTAS
PREGUNTAS TOGAF 9.2 RESPUESTASPREGUNTAS TOGAF 9.2 RESPUESTAS
PREGUNTAS TOGAF 9.2 RESPUESTAS
 

Último

BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
mesiassalazarpresent
 
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxtema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
DianaSG6
 
matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
alberto891871
 
Mecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporMecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vapor
alema3825
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
ctrlc3
 

Último (20)

Presentación PISC Préstamos ISC Final.pdf
Presentación PISC Préstamos ISC Final.pdfPresentación PISC Préstamos ISC Final.pdf
Presentación PISC Préstamos ISC Final.pdf
 
Ergonomía_MÉTODO_ROSA. Evaluación de puesto de trabajo de oficina - coworking
Ergonomía_MÉTODO_ROSA. Evaluación de puesto de trabajo de oficina - coworkingErgonomía_MÉTODO_ROSA. Evaluación de puesto de trabajo de oficina - coworking
Ergonomía_MÉTODO_ROSA. Evaluación de puesto de trabajo de oficina - coworking
 
Plan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
Plan de Desarrollo Urbano de la Municipalidad Provincial de IloPlan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
Plan de Desarrollo Urbano de la Municipalidad Provincial de Ilo
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
 
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDF
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDFACT MECANISMO DE 4 BARRAS ARTICULADAS.PDF
ACT MECANISMO DE 4 BARRAS ARTICULADAS.PDF
 
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdfSISTEMA ARTICULADO DE CUATRO BARRAS .pdf
SISTEMA ARTICULADO DE CUATRO BARRAS .pdf
 
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
 
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxtema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
 
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...El abecedario constituye el conjunto de grafías que son utilizadas para repre...
El abecedario constituye el conjunto de grafías que son utilizadas para repre...
 
&PLC Ladder.pdf automatización industrial
&PLC Ladder.pdf automatización industrial&PLC Ladder.pdf automatización industrial
&PLC Ladder.pdf automatización industrial
 
Mapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIASMapa de carreteras de Colombia 2022 INVIAS
Mapa de carreteras de Colombia 2022 INVIAS
 
matematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccionmatematicas en la ingenieria de la construccion
matematicas en la ingenieria de la construccion
 
problemas consolidación Mecánica de suelos
problemas consolidación Mecánica de suelosproblemas consolidación Mecánica de suelos
problemas consolidación Mecánica de suelos
 
Mecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vaporMecanismos de transferencia de un generador de vapor
Mecanismos de transferencia de un generador de vapor
 
Diagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdfDiagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdf
 
Becas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdfBecas de UOC _ Caja Ingenieros 2024-25.pdf
Becas de UOC _ Caja Ingenieros 2024-25.pdf
 
PETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacionPETROLEO triptico para estudiantes de educacion
PETROLEO triptico para estudiantes de educacion
 
Instalación de GLPI en Debian Linux paso a paso
Instalación de GLPI en Debian Linux paso a pasoInstalación de GLPI en Debian Linux paso a paso
Instalación de GLPI en Debian Linux paso a paso
 
Efecto. Fotovoltaico y paneles.pdf
Efecto.     Fotovoltaico  y  paneles.pdfEfecto.     Fotovoltaico  y  paneles.pdf
Efecto. Fotovoltaico y paneles.pdf
 
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALESLA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
LA SEÑALES ANALOGICAS Y LAS SEÑALES DIGITALES
 

Semana 6 Módulos en Python Entrega 1

  • 2.
  • 3.
  • 5.
  • 6.
  • 7.
  • 8. ● Un módulo permite agrupar funcionalidad común en un sólo archivo. ● Cuando varios módulos agrupan funcionalidades comunes, se pueden agrupar, a su vez, en paquetes. ● Python reconoce que un directorio es un paquete porque contiene un archivo llamado__init .py Paquetes y módulos
  • 9. def convertir(tipo_moneda, dolares): pesos = float(input('¿Cuántos ' + tipo_moneda + ' desea cambiar? ')) return round(pesos / dolares, 2) menu = ''' 1. COP A USD 2. ARG A USD 3. MX A USD opcion = int(input(menu)) if opcion == 1: print('En USD es: $' + str(convertir('colombianos', 3715.50))) elif opcion == 2: print('En USD es: $' + str(convertir("argentinos", 70.50))) elif opcion == 3: print('En USD es: $' + str(convertir('mexicanos', 22.66))) else: print('Ingrese opción válida') Modularización Funciones
  • 10. ● Cuando se lanza (throw) un error, si el error no se “atrapa”, entonces el programa se detiene. ● Hay veces que queremos evitar este comportamiento porque sabemos como arreglar el error. ● Para manejar el error se utilizan los keywords try / except ● La cláusula else se ejecuta si no han ocurrido excepciones y antes de la cláusula finally. Manejo de errores try: #Código a ejecutar except: # Código para 'cachar' o 'recibir' el error y hacer algo else: # Código cuando el try SI sirva y NO se ejecute el except finally: # Código que SIEMPRE se va a ejecutar, independientemente se ejecute el except o el else
  • 12. def dividir(x, y): try: #Código a ejecutar resultado = x / y except ZeroDivisionError: #Código para 'cachar' el error print("¡División por cero!") #Hacer algo else: #Código cuando el try SI sirva y NO el except print("El resultado es", resultado) finally: #Código que SIEMPRE se va a ejecutar print("Ejecutando la clausula finally") print(dividir(2,1))#2.0 y clausula finally dividir(2, 0)#¡División por cero! dividir("2", "1")#Solo clausula finally y error Jerarquía de errores en Python Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero
  • 13. def encontrar(elemento,lista): '''Devuelve el indice donde se encuentra el @elemento en la @lista Si no lo encuentra devuelve -1 ''' indice=0 while True: try: if lista[indice]==elemento: return indice except IndexError: return -1 indice+=1 print(encontrar(4, [2,3,4,5])) print(encontrar(1, [2,3,4,5])) Jerarquía de errores en Python
  • 14. ● Programacióndefensiva ● Pueden utilizarse para verificar que los tipos sean correctosenunafunción ● También sirven para debuguear ● El uso del assert en Python nos permite verificar que una determinada condición sea True, y de no serlo, se lanzará una excepción. Afirmaciones # assert <expresion booleana>, <mensaje de error> def primera_letra(lista_de_palabras): primeras_letras=[] for palabra in lista_de_palabras: assert type(palabra) == str, f'{palabra} no es str' assert len(palabra) > 0, 'No se permiten str vacios' primeras_letras.append(palabra[0]) return primeras_letras
  • 15. def primera_letra(lista_palabras): primeras_letras = [] for palabra in lista_palabras: try: assert type(palabra) == str, f'{palabra} no es String' assert len(palabra) > 0 , 'No se permiten vacios' primeras_letras.append(palabra[0]) except AssertionError as e: print(e) return primeras_letras lista = ['Angel',3.5, '', 4 , '4321', 0.53] print('Primeras letras validas son : ' , primera_letra(lista)) Modularización Funciones
  • 16. Si es una buena idea, continuad y llevadla a término. Es mucho más fácil pedir disculpas que conseguir el permiso necesario