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

En este ejemplo se puede ver el buen uso del  else del try.

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")
Si se ejecuta este script, y se ingresa una letra en lugar de un número el script NO VA a tirar error

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!!!