Python viene con excepciones integradas que se generan cuando ocurren errores comunes. Estas excepciones predefinidas brindan una ventaja porque puedes usar el bloque try-except en Python para manejarlas de antemano. Por ejemplo, puede utilizar el bloque try-except para gestionar la excepción ValueError en Python. En este artículo, veremos algunos métodos y motivos para que ocurran y resuelvan las excepciones de Valueerror en Python.
¿Qué es ValueError en Python?
La excepción ValueError se plantea a menudo en Pitón cuando se asigna un valor no válido a una variable o se pasa a una función mientras se llama. También suele ocurrir durante el descomprimido de tipos de datos de secuencia, así como con funciones cuando se utiliza una declaración de devolución.
Sintaxis:
ValueError: could not convert string to float: 'techcodeview.com'>
¿Por qué ocurre ValueError en Python?
Algunas razones comunes para la aparición de ValueError son las siguientes:
- Argumento no válido
- Uso incorrecto de Módulo de Matemáticas
- Desembalaje de un objeto iterable
Argumento no válido
Un ValueError suele ocurrir cuando pasamos un argumento no válido a una función en Python. Como ejemplo, la función float() de Python toma un número y lo convierte en un valor flotante. Pero, si pasamos una cadena a esta función, naturalmente no será posible para Python convertir una cadena en un flotante y, por lo tanto, generará un ValueError.
Python3
a>=> 34> b>=> 'techcodeview.com'> #works normally> print>(>float>(a))> #leads to the valueerror> print>(>float>(b))> |
>
>
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 8, in print(float(b)) ValueError: could not convert string to float: 'techcodeview.com'>
Uso incorrecto del módulo de matemáticas
La excepción ValueError se genera bastante al trabajar con el módulo Math en Python. Esto se debe a que es posible que uno no conozca los argumentos válidos para una función determinada. Como ejemplo, la función math.factorial() del módulo Math devuelve el factorial de un número determinado. Sin embargo, si alguien intenta pasar un valor negativo a esta función, es probable que se encuentre con el ValueError:
Python3
import> math> print>(math.factorial(>->3>))> |
>
>
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(math.factorial(-3)) ValueError: factorial() not defined for negative values>
Desempacar un objeto iterable
Se puede recorrer un objeto iterable en Python, como listas, tuplas y diccionarios. El desempaquetado, donde los valores de un iterable se asignan a variables individuales, es una operación común. Si proporciona más o menos variables, se producirá un error, como ValueError. Por ejemplo, en el siguiente ejemplo, una lista con tres elementos se descomprime usando cuatro variables, lo que genera un ValueError.
Python3
my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c, d>=> my_list> print>(a)> print>(b)> print>(c)> |
>
matriz java ordenada
>
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 2, in a, b, c, d = my_list ValueError: not enough values to unpack (expected 4, got 3)>
Enfoques/razones para resolver excepciones de errores de valor
A continuación se muestran las formas de resolver las excepciones de Valueerror en Python.
- Usando el bloque try-except
- Corregir el código
- Utilice el número correcto de variables
Usando el bloque try-except
A continuación, el código intenta convertir un valor numérico (`a`) y una cadena no numérica (`b`) en flotantes usando la función `float()`. Se utiliza un bloque try-except para detectar un posible 'ValueError' que puede ocurrir durante la conversión de la cadena no numérica. Si se produce tal error, imprime un mensaje de error claro que indica la imposibilidad de convertir la cadena en un flotante.
Python3
a>=> 34> b>=> 'techcodeview.com'> try>:> ># works normally> >print>(>float>(a))> ># may lead to ValueError, so use try-except> >print>(>float>(b))> except> ValueError:> >print>(>'Error: Unable to convert the string to a float.'>)> |
>
>
Producción :
34.0 Error: Unable to convert the string to a float.>
Corregir el código
A continuación, el código calcula el factorial de 3 sin generar unValueError>. Si necesita manejar el caso de entrada negativa, es posible que desee agregar una verificación para garantizar que la entrada sea válida antes de llamar almath.factorial>función.
Python3
import> math> print>(math.factorial(>3>))> |
>
>
Producción :
6>
Utilice el número correcto de variables
Para resolver las excepciones de Valueerror en la lista de descomprimir, debe usar la cantidad correcta de variables para descomprimir la lista. Si tu lista tiene tres elementos, debes usar tres variables. Aquí está el código corregido:
Python3
my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c>=> my_list># Use three variables instead of four> print>(a)> print>(b)> print>(c)> |
>
>
Producción
Geeks for Geeks>
Conclusión
En conclusión, resolver las excepciones de ValueError en Python implica un examen meticuloso de los datos de entrada y garantizar la compatibilidad con el formato esperado. El empleo de técnicas de validación adecuadas, como bloques try-except y declaraciones condicionales, puede ayudar a detectar y manejar de forma preventiva posibles problemas. El uso de funciones y bibliotecas integradas para el análisis y la validación de entradas agrega una capa adicional de solidez al código.