Condicionales en Python
9. Ejemplo de Errores de Excepción
Bien
Esto está BIEN! el if evalúa una condición.
a = float(input("Ingrese un número entre [0,10]: "))
if a >10 or a <0:# mira si está en xxxxxxxxxxx)0----------10(xxxxxxxxxx
print("El ingresado {}, no pertenece al rango [0,10]".format(a))
else:#No tiene condición a evaluar el else!
print("El número {} pertence el intervalo [0,10].".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.
esto está BIEN! el if evalúa una condición.
a = float(input("Ingrese un número entre [0,10]: "))
if 0<=a and a <=10:# mira si está en --[0 xxxxxxxx 10]-----------
print("El ingresado {}, pertenece al rango [0,10]".format(a))
else:#No tiene condición a evaluar el else!
print("El número {} NO pertence al intervalo [0,10].".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.
Mal
Lo que sigue NO se aconseja, ya se levanta una excepción a partir de la evaluación de una condición.
Para la cátedra estaría mal, lo mencionamos por que puede ser que lo vean en algún video o solución
try:
a = float(input("Ingrese un número entre [0,10]: "))
if 0 > a or a > 10:# mira si está en xxxxxxxxx)0-------------10(xxxxxxx
raise Exception #Mal levanta una excepción por una condición!
else:#No tiene condición a evaluar el else!
print("El número {} pertence al intervalo [0,10].".format(a))
except Exception:
print("El número {} NO pertence al intervalo [0,10].".format(a))
print("Fin del scrip.. ")#esta línea está fuera del if/else siempre se ejecuta.
Esto se consideraría mal, pese a que puede funcionar, es como pasar el semáforo en rojo, se puede pasar, pero no se debe pasar, así que si el alumno utiliza esta forma para levantar una excepción en la materia lo consideraremos mal. Este tipo de resoluciones aparecen en algunos videos de Youtube.
MAL
Veamos un MAL ejemplo de uso del try/except.
try:
a = int(input("Ingrese un número: "))
if a%2 == 0:#MAL esto NO causa excepción!!
print( "El número es par")
else:
print("El número es impar")
except ValueError:
print("El ingreso no es válido!")
print("Fin del scrip.. ")#esta línea está fuera del try/except
Podemos ver que de TODAS las líneas dentro del try, SOLO una puede levantar una excepción, así que vamos a poner SOLO esa línea dentro del try , para eso está el else del try.
BIEN
try:
a = int(input("Ingrese un número: "))
except ValueError:
print("El ingreso no es válido!")
else: #else del try, si no hay excepción se ejecuta
if a%2 == 0:#MAL esto NO causa excepción!!
print( "El número es par")
else:#else del if.
print("El número es impar")
print("Fin del scrip.. ")#esta línea está fuera del try/except
BIEN
try:
a = int(input("Ingrese un número: "))
b = int(input("Ingrese un otro: "))
except ValueError:
print("El ingreso no es válido!")
else:
if a%b == 0:
print("{} divide a {}".format(b,a))
else:
print("{} NO divide a {}".format(b,a))
print("esta línea está fuera del try/except/else")
Veamos un error común al NO usar el else del try.
MAL
try:
a = int(input("Ingrese un número: "))
b = int(input("Ingrese un otro: "))
except ValueError:
print("El ingreso no es válido!")
if a%b == 0:
print("{} divide a {}".format(b,a))
else:
print("{} NO divide a {}".format(b,a))
print("esta línea está fuera del try/except/else")
Esté código si se ingresa un letra para el valor de a NO va a funcionar, va a tirar un error en la línea:
if a%b == 0:
por que a NO está definido !!!
Se pide al alumno analizar detenidamente esta mala implementación!!!