logo

Comment corriger les exceptions ValueError en Python

Python est livré avec des exceptions intégrées qui sont déclenchées lorsque des erreurs courantes se produisent. Ces exceptions prédéfinies offrent un avantage car vous pouvez utiliser le bloc try-sauf en Python pour les gérer au préalable. Par exemple, vous pouvez utiliser le bloc try-sauf pour gérer l'exception ValueError en Python. Dans cet article, nous verrons quelques méthodes et raisons pour lesquelles les exceptions Valueerror se produisent et sont résolues en Python.

Qu’est-ce que ValueError en Python ?

L'exception ValueError est souvent déclenchée dans Python lorsqu'une valeur invalide est attribuée à une variable ou transmise à une fonction lors de son appel. Cela se produit également souvent lors du décompression des types de données séquence ainsi qu'avec des fonctions lorsqu'une instruction return est utilisée.

Syntaxe :



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

Pourquoi ValueError se produit-il en Python ?

Voici quelques raisons courantes de l'apparition de ValueError :

  • Argument invalide
  • Utilisation incorrecte de Module Mathématiques
  • Déballage d'un Objet itérable

Argument invalide

Une ValueError se produit généralement lorsque nous transmettons un argument non valide à une fonction en Python. À titre d'exemple, la fonction float() de Python prend un nombre et le convertit en valeur flottante. Mais, si nous passons une chaîne à cette fonction, il ne sera naturellement pas possible pour Python de convertir une chaîne en float et cela conduira donc à une 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'>

Utilisation incorrecte du module mathématique

L'exception ValueError est fréquemment générée lors de l'utilisation du module Math en Python. En effet, il se peut que l'on ne connaisse pas les arguments valides pour une fonction donnée. A titre d'exemple, la fonction math.factorial() du module Math renvoie la factorielle d'un nombre donné. Cependant, si quelqu'un essaie de transmettre une valeur négative à cette fonction, il rencontrera forcément 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>

Déballage d'un objet itérable

Un objet itérable en Python, comme des listes, des tuples et des dictionnaires, peut être bouclé. Le déballage, où les valeurs d'un itérable sont affectées à des variables individuelles, est une opération courante. Si vous fournissez plus ou moins de variables, une erreur, telle que ValueError, se produira. Par exemple, dans l'exemple ci-dessous, une liste de trois éléments est décompressée à l'aide de quatre variables, conduisant à une ValueError

Python3




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

>

méthode remplaçant en java
>

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

Approches/raisons pour résoudre les exceptions ValueError

Vous trouverez ci-dessous les moyens de résoudre les exceptions Valueerror en Python.

  • Utilisation du bloc try-sauf
  • Corrigez le code
  • Utiliser le nombre correct de variables

Utilisation du bloc try-sauf

Ci-dessous, le code tente de convertir une valeur numérique (`a`) et une chaîne non numérique (`b`) en flottants à l'aide de la fonction `float()`. Un bloc try-sauf est utilisé pour détecter une potentielle « ValueError » qui peut se produire lors de la conversion de la chaîne non numérique. Si une telle erreur se produit, il imprime un message d'erreur clair indiquant l'impossibilité de convertir la chaîne en flottant.

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

>

>

Sortir :

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

Corrigez le code

Ci-dessous, le code calcule la factorielle de 3 sans augmenter deValueError>. Si vous devez gérer le cas d'une entrée négative, vous souhaiterez peut-être ajouter une vérification pour garantir que l'entrée est valide avant d'appeler lemath.factorial>fonction.

Python3


Language de machine



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

>

>

Sortir :

6>

Utiliser le nombre correct de variables

Pour résoudre les exceptions Valueerror dans la liste de décompression, vous devez utiliser le nombre correct de variables pour décompresser la liste. Si votre liste comporte trois éléments, vous devez utiliser trois variables. Voici le code corrigé :

Python3




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

>

>

Sortir

Geeks for Geeks>

Conclusion

En conclusion, résoudre les exceptions ValueError en Python implique un examen minutieux des données d’entrée et garantir la compatibilité avec le format attendu. L’utilisation de techniques de validation appropriées, telles que les blocs try-sauf et les instructions conditionnelles, peut aider à détecter et à gérer de manière préventive les problèmes potentiels. L'utilisation de fonctions et de bibliothèques intégrées pour l'analyse et la validation des entrées ajoute une couche supplémentaire de robustesse au code.