Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Cláusula

def average(float_nums: list = [0]) -> float:
    '''
    Calcula el promedio de una lista de notas.    
    Lanza un ValueError si hay más de 4 notas utilizando "raise".
    Captura errores de tipo automáticamente.
    '''
    try:
        if len(float_nums) > 4:
            raise ValueError("La lista no puede poseer más de 4 notas.")
        calculus = round(sum(float_nums) / len(float_nums), 2)
        return calculus
    except TypeError:
        return "No fue posible calcular el promedio del(la) estudiante. ¡Sólo se admiten valores numéricos!"
    except ValueError as ve:
        return str(ve)
    finally:
        print("La consulta ha concluido.")

Uso "raise" para el error personalizado de tipo ValueError en el que no queremos que se puedan ingresar más de 4 notas. Uso "try-exception" para el TypeError que será detectado automáticamente por Python.

try:
  grades = [4.5, 7, 8.5, 9]
  print(f'El promedio es: {average(grades)}')
except NameError:
  print("No fue posible calcular el promedio del(la) estudiante. ¡Sólo se admiten valores numéricos!\nLa consulta ha concluido.")

Ahí agrego otro manejo de excepción, en el caso de que se ingresen, por ejemplo, caracteres, pero sin comillas. Ése sería un error del tipo NameError que no puede ser manejado dentro de la función "average", ya que es un error que no ocurre dentro de la función, sino antes de que se llame a la misma, en la línea donde se intenta crear la lista. Por eso, el try-except dentro de average() no lo puede atrapar, porque el error ni siquiera le da oportunidad a la función de empezar a ejecutarse.

1 respuesta

Hola , espero que estés muy bien.

Felicitaciones por tu aprendizaje. Estamos priorizando el foro para postear dudas, así optimizamos el tiempo de respuesta para ustedes.

Para no dejar de compartir los códigos, actividades y ejercicios que realizas, creamos un canal en Discord (#compartetucodigo) donde puedes compartirlos, dar y sugerir mejoras con el resto de tus compañeros.

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios