Skip to content

Commit d1397b6

Browse files
committed
#10 - Python
1 parent 5e06067 commit d1397b6

File tree

1 file changed

+121
-0
lines changed

1 file changed

+121
-0
lines changed
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
"""
2+
Explora el concepto de manejo de excepciones según tu lenguaje.
3+
Fuerza un error en tu código, captura el error, imprime dicho error
4+
y evita que el programa se detenga de manera inesperada.
5+
6+
Prueba a dividir "10/0" o acceder a un índice no existente
7+
de un listado para intentar provocar un error.
8+
"""
9+
# ZeroDivisionError
10+
def dividirDosNumeros(numero1:int,numero2:int):
11+
try:
12+
resultado = numero1/numero2
13+
print(resultado)
14+
except ZeroDivisionError as e:
15+
print(f"ZeroDivisionError - Se ha producido un error al intentar dividir dos números {numero1}/{numero2}, el error es [{str(e)}]")
16+
finally:
17+
print("Continuamos con el programa sin que finalice")
18+
19+
dividirDosNumeros(10,0)
20+
21+
# ValueError - Si no es del tipo ...
22+
# TypeError - Si es de tipo ...
23+
def solicitar_edad(edad):
24+
try:
25+
if int(edad) >= 18:
26+
print("Eres un adulto.")
27+
else:
28+
print("Aún no eres un adulto.")
29+
except ValueError as ve:
30+
print(f"ValueError - Se ha producido un error [{str(ve)}]")
31+
except TypeError as te:
32+
print(f"TypeError - Se ha producido un error [{str(te)}]")
33+
34+
solicitar_edad("a")
35+
solicitar_edad([1,2])
36+
37+
# IndexError - Un índice que no existe
38+
lista_dias_semana = ["lunes","martes","miércoles","jueves","viernes","sabado","domingo"]
39+
def dias_semana(indice):
40+
try:
41+
print(lista_dias_semana[indice])
42+
except IndexError as e:
43+
print(f"IndexError - Se ha producido un error [{str(e)}]")
44+
45+
dias_semana(8)
46+
47+
# KeyError - Una clave que no está en el diccionario
48+
lenguages = {"Python": 1991, "C": 1972}
49+
def request_languages(language):
50+
try:
51+
print(lenguages[language])
52+
except KeyError as e:
53+
print(f"KeyError - Se ha producido un error [{str(e)}]")
54+
55+
request_languages("Java")
56+
57+
# Elevar nuestras propias excepciones
58+
def sumar(a, b):
59+
if not isinstance(a, int) or not isinstance(b, int):
60+
raise TypeError("a y b tienen que ser números enteros.")
61+
return a + b
62+
63+
try:
64+
resultado = sumar("1",5)
65+
print(resultado)
66+
except TypeError as e:
67+
print(f"TypeError - Se ha producido un error [{str(e)}]")
68+
69+
print("Está línea se ejectuará pase lo que pase.")
70+
71+
72+
"""
73+
DIFICULTAD EXTRA (opcional):
74+
Crea una función que sea capaz de procesar parámetros, pero que también
75+
pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
76+
corresponderse con un tipo de excepción creada por nosotros de manera
77+
personalizada, y debe ser lanzada de manera manual) en caso de error.
78+
- Captura todas las excepciones desde el lugar donde llamas a la función.
79+
- Imprime el tipo de error.
80+
- Imprime si no se ha producido ningún error.
81+
- Imprime que la ejecución ha finalizado.
82+
83+
"""
84+
85+
print("\nEXTRA\n")
86+
87+
# Creamos una clase que derive de Exceptions, para crear nuestras propias excepciones
88+
class invalidAgeException(Exception):
89+
"Debe ser mayor de edad para comprar su entrada"
90+
pass
91+
92+
# Función de comprobación de compra de entradas
93+
def ticketSale(name,age):
94+
# Programa
95+
minimalAge = 18
96+
# Operaciones
97+
if not isinstance(age, int):
98+
raise ValueError("La edad tiene que ser un número entero.")
99+
elif not isinstance(name, str) or len(name) == 0:
100+
raise TypeError("El nombre tiene que tiene que tener al menos un caracter.")
101+
else:
102+
if age < minimalAge:
103+
raise invalidAgeException
104+
else:
105+
return f"Puede comprar su entrada {name}"
106+
107+
# Comprobación
108+
try:
109+
# Ejecutamos
110+
#print(ticketSale("", 16)) # Devuelve un TypeError
111+
#print(ticketSale("Juan", "1")) # Deuelve un ValueError
112+
#print(ticketSale("Pepe", 16)) # Devuelve un invalidAgeException
113+
print(ticketSale("Jose", 18)) # OK
114+
except invalidAgeException:
115+
print("Personalizada - Ha ocurrido una excepción: Eres un menor edad")
116+
except TypeError as te:
117+
print(f"TypeError - Se ha producido un error [{str(te)}]")
118+
except ValueError as ve:
119+
print(f"ValueError - Se ha producido un error [{str(ve)}]")
120+
except Exception as e:
121+
print(f"Exception - Se ha producido un error [{str(e)}]")

0 commit comments

Comments
 (0)