logo

Slik fikser du verdifeil-unntak i Python

Python kommer med innebygde unntak som oppstår når vanlige feil oppstår. Disse forhåndsdefinerte unntakene gir en fordel fordi du kan bruke try-except-blokken i Python for å håndtere dem på forhånd. For eksempel kan du bruke try-except-blokken for å administrere ValueError-unntaket i Python. I denne artikkelen vil vi se noen metoder og årsaker for å oppstå og løse Valueerror-unntakene i Python.

Hva er ValueError i Python?

ValueError Unntaket er ofte hevet inn Python når en ugyldig verdi tildeles en variabel eller sendes til en funksjon mens den kalles. Det oppstår også ofte under utpakking av sekvensdatatyper så vel som med funksjoner når en retursetning brukes.

Syntaks:



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

Hvorfor oppstår ValueError i Python?

Noen vanlige årsaker til forekomsten av ValueError er som følger:

Ugyldig argument

En ValueError oppstår vanligvis når vi sender et ugyldig argument til en funksjon i Python. Som et eksempel tar float()-funksjonen til Python et tall og konverterer det til en float-verdi. Men hvis vi sender en streng til denne funksjonen, vil det naturligvis ikke være mulig for Python å konvertere en streng til en flyte, og dermed vil det føre til en 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'>

Feil bruk av matematikkmodulen

ValueError-unntaket økes ganske mye mens du arbeider med Math-modulen i Python. Dette er fordi man kanskje ikke er klar over de gyldige argumentene for en gitt funksjon. Som et eksempel returnerer math.factorial()-funksjonen til Math-modulen faktoren til et gitt tall. Imidlertid, hvis noen prøver å sende en negativ verdi til denne funksjonen, er de nødt til å kjøre inn i ValueError:

Python3




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

konvertere int til streng
>

>

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

Pakker ut et gjentakbart objekt

Et gjentakelig objekt i Python, som lister, tuples og ordbøker, kan løkkes over. Utpakking, hvor verdier av en iterabel er tilordnet individuelle variabler, er en vanlig operasjon. Hvis du oppgir flere eller færre variabler, vil det oppstå en feil, for eksempel ValueError. For eksempel, i eksemplet nedenfor, er en liste med tre elementer pakket ut ved hjelp av fire variabler, noe som fører til en 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)>

Tilnærminger/grunner til å løse Valueerror-unntak

Nedenfor er måtene å løse Valueerror-unntakene i Python

  • Bruker prøve-unntatt blokk
  • Korriger koden
  • Bruk riktig antall variabler

Bruker prøve-unntatt blokk

Nedenfor prøver koden å konvertere en numerisk verdi (`a`) og en ikke-numerisk streng (`b`) til flyter ved å bruke funksjonen `float()`. En try-except-blokk brukes til å fange opp en potensiell 'ValueError' som kan oppstå under konverteringen av den ikke-numeriske strengen. Hvis en slik feil oppstår, skriver den ut en tydelig feilmelding som indikerer manglende evne til å konvertere strengen til en flytende.

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

>

>

Utgang:

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

Korriger koden

Nedenfor regner koden ut faktoren av 3 uten å heve aValueError>. Hvis du trenger å håndtere tilfellet med negativ inndata, kan det være lurt å legge til en sjekk for å sikre at inndata er gyldig før du ringermath.factorial>funksjon.

Python3




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

>

>

Utgang:

6>

Bruk riktig antall variabler

For å løse Valueerror Exceptions in pack list, bør du bruke riktig antall variabler for å pakke ut listen. Hvis listen din har tre elementer, bør du bruke tre variabler. Her er den korrigerte koden:

Python3




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

>

strengfunksjoner i java
>

Produksjon

Geeks for Geeks>

Konklusjon

Avslutningsvis innebærer å løse ValueError-unntak i Python en grundig undersøkelse av inndata og å sikre kompatibilitet med det forventede formatet. Å bruke riktige valideringsteknikker, for eksempel prøve-unntatt blokker og betingede utsagn, kan hjelpe forebyggende å fange opp og håndtere potensielle problemer. Bruk av innebygde funksjoner og biblioteker for inndataparsing og validering gir et ekstra lag med robusthet til koden.