ValueError: Demasiados valores para desempaquetar
-
¿Qué es
ValueError
en Python? -
Solucione el
ValueError: demasiados valores para desempaquetar
en Python -
Manejar la excepción
ValueError: demasiados valores para desempaquetar
conTry-Catch
en Python
El ValueError: demasiados valores para desempaquetar
a veces ocurre cuando las variables a la izquierda del operador de asignación =
no son iguales a los valores a la derecha del operador de asignación =
.
Comúnmente sucede cuando intenta tomar más de una entrada del usuario en una sola declaración de entrada
o asigna variables desiguales a algunos valores.
¿Qué es ValueError
en Python?
Un ValueError
es una excepción común en Python que ocurre cuando su número de valores no cumple con el número de variables, ya sea tomando entrada, asignación directa o a través de una matriz. Para entender el ValueError
, tomemos un ejemplo.
Ejemplo de código:
# take two string values as input separated by a comma
x, y = input("Enter x and y: ").split(",")
Producción :
Eneter x and y: 3,2,1
ValueError: too many values to unpack (expected 2)
Como puede ver en el código anterior, estamos tomando dos entradas, x
e y
; la instrucción input
espera dos valores separados por la coma ,
.
Pero en este caso, hemos proporcionado tres valores como entrada para demostrar el tema, que ha arrojado el ValueError: demasiados valores para desempaquetar
.
Otro caso del ValueError: demasiados valores para desempaquetar
podría ser la asignación directa de valores a las variables. Entendámoslo a través de un ejemplo.
a, b = 2, 3, 5 # ValueError: too many values to unpack (expected 2)
a, b, c = 2, 3 # ValueError: not enough values to unpack (expected 3, got 2)
a, b = [3, 2, 1] # ValueError: too many values to unpack (expected 2)
Los anteriores son algunos otros casos que arrojan el ValueError
.
Solucione el ValueError: demasiados valores para desempaquetar
en Python
Para evitar el ValueError
, debe proporcionar el número exacto de valores esperado por la instrucción input
, una lista
o una matriz
. Las mejores prácticas son utilizar bloques try-catch
y mostrar mensajes a los usuarios para guiarlos.
Entendamos cómo podemos solucionar el ValueError: demasiados valores para desempaquetar
.
# User message --> Enter the two numbers to add ::
a, b = input("Enter two numbers to add :: ").split(",")
# type casting a and b
a = int(a)
b = int(b)
print("The sum of the two numbers is :: ", a + b)
Producción :
Enter two numbers to add :: 22,23
The sum of the two numbers is :: 45
Manejar la excepción ValueError: demasiados valores para desempaquetar
con Try-Catch
en Python
Casi todos los demás lenguajes de programación tienen el mecanismo try-catch
para el manejo de excepciones. El manejo de excepciones es un mecanismo proactivo que controla los errores o las excepciones antes de bloquear el programa y ayuda a mostrar la naturaleza y la causa del error.
Además, puede mostrar sus mensajes para interpretar las excepciones.
Entendámoslo a través de un ejemplo.
try:
# User message --> Enter the two numbers to add ::
x, y = input("Enter two numbers to add :: ").split(",")
# type casting x and y
x = int(x)
y = int(y)
print("The sum of the two numbers is :: ", x + y)
except ValueError as v:
print(
"Oops! Looks like you have enter an invalid number of input"
+ "\nPlease enter two numbers to add"
)
print("ValueError:", v)
print("\nWow! The program is not crashed.")
Producción :
Enter two numbers to add :: 1,2,3
Oops! Looks like you have enter an invalid number of input
Please enter two numbers to add
ValueError: too many values to unpack (expected 2)
Wow! The program is not crashed.
Como puede ver, el programa anterior falla y provoca el ValueError
, pero tenga en cuenta que el programa aún no se ha bloqueado.
Puede ver que el código en el bloque try
ha causado la excepción ValueError
, y en lugar de bloquearlo en la línea, el bloque try
ha pasado el error al bloque except
, que interpreta la excepción y muestra un mensaje personalizado para el usuario. El mensaje personalizado nos ayuda a interpretar el error fácilmente.
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedInArtículo relacionado - Python Error
- Administrar fallas de segmentación en Python
- Archivo <Stdin>, Línea 1, en <Módulo> Error en Python
- Arreglar AttributeError: el objeto 'generador' no tiene atributo 'siguiente' en Python
- Arreglar el comando cl.exe falló: no existe tal archivo o directorio en Windows
- Arreglar NameError: la variable no está definida en Python
- Arreglar Socket.Gaierror: [Errno 8] Nodename ni Servname proporcionado, o desconocido en Python