Guía de diagnóstico

ValueError: el tipo encaja, pero el valor concreto no

La función sabe trabajar con ese tipo de objeto, pero no con ese contenido o forma. Es el error típico de conversiones y validaciones donde el dato tiene el tipo general correcto.

Revisado 2026-09-30Ejemplos y diagnóstico

El ejemplo clásico revela la diferencia

conversion.py
texto = "doce"
numero = int(texto)

int() acepta strings, por eso no es un TypeError. El problema es que "doce" no representa un entero decimal que int() pueda interpretar.

Prueba una pequeña tabla de entradas

Entradaint(...)Qué revela
"42"42cadena válida como entero
"4.2"ValueErrorrepresenta decimal, no entero
"hola"ValueErrorno representa número
""ValueErrorentrada vacía

Validar antes o capturar después

Si solo necesitas convertir y reaccionar al fallo, try/except ValueError suele ser más fiable que intentar anticipar manualmente todas las formas de entrada. Si tienes reglas de dominio —por ejemplo edad entre 0 y 130— valida además el resultado convertido.

Otro origen: la forma del valor

desempaquetado.py
nombre, edad = ["Ana"]

La lista es iterable y los tipos son válidos, pero tiene un número de elementos incompatible con la asignación. El mensaje específico te dice qué supuesto sobre el valor se rompió.

Señal de que ya lo entiendesPuedes provocar este error con un ejemplo mínimo, explicar qué supuesto se rompió y elegir una corrección que conserve la intención del programa.

Referencia técnica: documentación oficial de excepciones de Python.