EATRYL
Programación / Lección y práctica

Validación y excepciones: decidir qué hacer con una entrada inválida

Escribir una función que rechace entradas inválidas y comunicar la causa sin ocultar errores.

Preparatoria · Universidad15 min

Comprende la idea

Antes de empezar: Funciones, condicionales y tipos básicos de Python.

Una entrada puede tener un formato convertible y aun así no ser válida para tu aplicación. El texto "150" puede convertirse a entero, pero no pertenece al rango de una calificación entre 0 y 100. Conviene separar esas dos comprobaciones.

Un contrato explícito

def leer_puntos(texto):
    valor = int(texto)
    if not 0 <= valor <= 100:
        raise ValueError("Los puntos deben estar entre 0 y 100")
    return valor

Esta función acepta texto convertible por int y exige el rango indicado. Para "80" devuelve 80. Para "ocho" la conversión lanza ValueError; para "150", la función lanza ese tipo de excepción con su propia explicación.

Atender un error esperado

try:
    puntos = leer_puntos("150")
except ValueError as error:
    print(error)

El bloque except se ejecuta si ocurre ese tipo de error. Captura lo que sabes manejar. Un except demasiado general puede esconder fallos que no corresponden a una entrada inválida.

Qué pertenece a cada parte

La función puede validar y devolver el resultado, mientras la interfaz decide cómo pedir otro intento. Así no obligas a todo programa que la use a mostrar mensajes de una sola manera.

¿Un assert sustituye esta validación?

No. Las aserciones pueden omitirse al ejecutar Python con optimización. Para rechazar datos de entrada de manera necesaria, usa una comprobación explícita y una respuesta definida, como lanzar ValueError.

entrada → conversión → comprobación → resultado o error

Vamos con un ejemplo

Resuelto paso a paso

Prueba leer_puntos con "0", "100", "-1", "101" y "abc". Los dos primeros son extremos válidos; los siguientes salen del rango; el último ni siquiera representa un entero convertible. Cada caso comprueba una decisión distinta.

Conecta y aplica

En un formulario de estudio, informa si el dato no puede convertirse o si está fuera del rango. Conservar el valor introducido ayuda a corregirlo. La validación en una interfaz web también debe existir donde se procesen datos cuando haya un servidor.

Un detalle que importa: No confundas terminar sin excepción con tener un dato adecuado: aceptar 150 como entero solo confirma el formato numérico, no el rango de la aplicación.

Ponlo a prueba

¿Qué ocurre con leer_puntos("101") usando la función de la lección?

Elige una respuesta para ver la explicación.

Clases en línea · Atención personalizada

¿Necesitas ayuda con este tema?

Trabájalo paso a paso con un profesor de EATRYL. Consulta disponibilidad y costo para reforzar Validación y excepciones: decidir qué hacer con una entrada inválida.

Consultar una clase sobre este tema
Python: organizar y validar datos / 4 de 4Ver la ruta completa
Practicar con la ficha de cierre