logo

Come correggere le eccezioni Valueerror in Python

Python viene fornito con eccezioni integrate che vengono sollevate quando si verificano errori comuni. Queste eccezioni predefinite forniscono un vantaggio perché puoi utilizzare il blocco try-Exception in Python per gestirle in anticipo. Ad esempio, puoi utilizzare il blocco try-Exception per gestire l'eccezione ValueError in Python. In questo articolo, vedremo alcuni metodi e ragioni per cui si verificano e risolvono le eccezioni Valueerror in Python.

Cos'è ValueError in Python?

Viene spesso sollevata l'eccezione ValueError Pitone quando un valore non valido viene assegnato a una variabile o passato a una funzione mentre la si chiama. Si verifica spesso anche durante la decompressione dei tipi di dati di sequenza nonché con le funzioni quando viene utilizzata un'istruzione return.



Sintassi:

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

Perché ValueError si verifica in Python?

Alcuni motivi comuni per il verificarsi di ValueError sono i seguenti:

  • Argomento non valido
  • Uso errato di Modulo di matematica
  • Disimballaggio di un Oggetto iterabile

Argomento non valido

Un ValueError si verifica in genere quando passiamo un argomento non valido a una funzione in Python. Ad esempio, la funzione float() di Python prende un numero e lo converte in un valore float. Ma, se passiamo una stringa a questa funzione, naturalmente non sarà possibile per Python convertire una stringa in un float e quindi porterà a 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'>

Utilizzo errato del Modulo Matematico

L'eccezione ValueError viene sollevata spesso mentre si lavora con il modulo Math in Python. Questo perché si potrebbe non essere a conoscenza degli argomenti validi per una determinata funzione. Ad esempio, la funzione math.factorial() del modulo Math restituisce il fattoriale di un dato numero. Tuttavia, se qualcuno tenta di passare un valore negativo a questa funzione, è destinato a imbattersi nel ValueError:

Python3




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

cos'è un file system linux
>

>

Hangup (SIGHUP) Traceback (most recent call last):  File 'Solution.py', line 3, in   print(math.factorial(-3)) ValueError: factorial() not defined for negative values>

Decompressione di un oggetto iterabile

Un oggetto iterabile in Python, come liste, tuple e dizionari, può essere ripetuto. Il decompressione, in cui i valori di un iterabile vengono assegnati a singole variabili, è un'operazione comune. Se fornisci più o meno variabili, si verificherà un errore, come ValueError. Ad esempio, nell'esempio seguente, un elenco con tre elementi viene decompresso utilizzando quattro variabili, portando a un ValueError

Python3




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

Approcci/motivi per risolvere le eccezioni Valueerror

Di seguito sono riportati i modi per risolvere le eccezioni Valueerror in Python

  • Utilizzo del blocco try-eccetto
  • Correggere il codice
  • Utilizza il numero corretto di variabili

Utilizzo del blocco try-eccetto

Di seguito, il codice tenta di convertire un valore numerico (`a`) e una stringa non numerica (`b`) in float utilizzando la funzione `float()`. Un blocco try-Exception viene utilizzato per rilevare un potenziale 'ValueError' che potrebbe verificarsi durante la conversione della stringa non numerica. Se si verifica un errore di questo tipo, stampa un chiaro messaggio di errore che indica l'impossibilità di convertire la stringa in float.

come convertire da int a string in Java

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

>

>

Produzione :

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

Correggere il codice

Di seguito, il codice calcola il fattoriale di 3 senza aumentare aValueError>. Se devi gestire il caso di input negativo, potresti voler aggiungere un controllo per assicurarti che l'input sia valido prima di chiamare ilmath.factorial>funzione.

Python3




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

>

>

Produzione :

6>

Utilizza il numero corretto di variabili

Per risolvere le eccezioni Valueerror nell'elenco decompresso, è necessario utilizzare il numero corretto di variabili per decomprimere l'elenco. Se la tua lista ha tre elementi, dovresti usare tre variabili. Ecco il codice corretto:

Python3




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

>

parametri predefiniti di Java
>

Produzione

Geeks for Geeks>

Conclusione

In conclusione, risolvere le eccezioni ValueError in Python implica un esame meticoloso dei dati di input e garantire la compatibilità con il formato previsto. L'utilizzo di tecniche di convalida adeguate, come i blocchi try-eccetto e le istruzioni condizionali, può aiutare a individuare e gestire preventivamente potenziali problemi. L'utilizzo di funzioni e librerie integrate per l'analisi e la convalida dell'input aggiunge un ulteriore livello di robustezza al codice.