logo

Com corregir les excepcions Valueerror a Python

Python inclou excepcions integrades que es plantegen quan es produeixen errors habituals. Aquestes excepcions predefinides proporcionen un avantatge perquè podeu utilitzar el bloc try-except de Python per gestionar-les abans. Per exemple, podeu utilitzar el bloc try-except per gestionar l'excepció ValueError a Python. En aquest article, veurem alguns mètodes i motius per produir i resoldre les excepcions Valueerror a Python.

ordres de kali linux

Què és ValueError a Python?

Sovint es genera l'excepció ValueError Python quan s'assigna un valor no vàlid a una variable o es passa a una funció mentre la crida. També es produeix sovint durant el desempaquetat dels tipus de dades de la seqüència, així com amb les funcions quan s'utilitza una instrucció return.



Sintaxi:

ValueError: could not convert string to float: 'techcodeview.com'>

Per què es produeix ValueError a Python?

Alguns motius habituals per a l'aparició de ValueError són els següents:

  • Argument invàlid
  • Ús incorrecte de Mòdul de matemàtiques
  • Desembalatge un Objecte iterable

Argument invàlid

Normalment es produeix un ValueError quan passem un argument no vàlid a una funció en Python. Com a exemple, la funció float() de Python pren un nombre i el converteix en un valor flotant. Però, si passem una cadena a aquesta funció, naturalment no serà possible que Python converteixi una cadena en un flotant i, per tant, donarà lloc a un ValueError.



Python 3






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'>

Ús incorrecte del mòdul de matemàtiques

L'excepció ValueError es planteja molt mentre es treballa amb el mòdul de matemàtiques a Python. Això es deu al fet que és possible que no sigui conscient dels arguments vàlids per a una funció determinada. Com a exemple, la funció math.factorial() del mòdul Math retorna el factorial d'un nombre donat. Tanmateix, si algú intenta passar un valor negatiu a aquesta funció, està obligat a trobar el ValueError:

Python 3




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>

Desembalatge d'un objecte iterable

Un objecte iterable a Python, com ara llistes, tuples i diccionaris, es pot recórrer en bucle. Descomprimir, on els valors d'un iterable s'assignen a variables individuals, és una operació habitual. Si proporcioneu més o menys variables, es produirà un error, com ara ValueError. Per exemple, a l'exemple següent, es desempaqueta una llista amb tres elements mitjançant quatre variables, donant lloc a un ValueError

Python 3




my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c, d>=> my_list> print>(a)> print>(b)> print>(c)>

>

>

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)>

Enfocaments/Raons per resoldre les excepcions d'error de valor

A continuació, es mostren les maneres de resoldre les excepcions Valueerror a Python

  • Utilitzant el bloc try-except
  • Corregiu el Codi
  • Utilitzeu el nombre correcte de variables

Utilitzant el bloc try-except

A continuació, el codi intenta convertir un valor numèric (`a`) i una cadena no numèrica (`b`) en flotants mitjançant la funció `float()`. S'utilitza un bloc try-except per detectar un potencial 'ValueError' que es pot produir durant la conversió de la cadena no numèrica. Si es produeix aquest error, s'imprimeix un missatge d'error clar que indica la impossibilitat de convertir la cadena en un flotant.

Python 3




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.'>)>

>

>

Sortida:

34.0 Error: Unable to convert the string to a float.>

Corregiu el Codi

A continuació, codi calcular el factorial de 3 sense augmentar aValueError>. Si necessiteu gestionar el cas d'entrada negativa, potser voldreu afegir una comprovació per assegurar-vos que l'entrada és vàlida abans de trucar almath.factorial>funció.

Python 3




import> math> print>(math.factorial(>3>))>

>

>

Sortida:

6>

Utilitzeu el nombre correcte de variables

Per resoldre les excepcions Valueerror a la llista de descomprimir, hauríeu d'utilitzar el nombre correcte de variables per desempaquetar la llista. Si la vostra llista té tres elements, hauríeu d'utilitzar tres variables. Aquí teniu el codi corregit:

Python 3




my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c>=> my_list># Use three variables instead of four> print>(a)> print>(b)> print>(c)>

>

>

Sortida

Geeks for Geeks>

Conclusió

En conclusió, resoldre les excepcions de ValueError a Python implica un examen meticulós de les dades d'entrada i garantir la compatibilitat amb el format esperat. L'ús de tècniques de validació adequades, com ara blocs try-except i declaracions condicionals, pot ajudar a detectar i gestionar possibles problemes de manera preventiva. L'ús de funcions i biblioteques integrades per a l'anàlisi i validació d'entrada afegeix una capa addicional de robustesa al codi.