logo

Kako popraviti izjeme Valueerror v Pythonu

Python ima vgrajene izjeme, ki se sprožijo, ko pride do pogostih napak. Te vnaprej določene izjeme zagotavljajo prednost, ker lahko uporabite blok poskusi razen v Pythonu, da jih vnaprej obravnavate. Na primer, lahko uporabite blok poskusi razen za upravljanje izjeme ValueError v Pythonu. V tem članku bomo videli nekaj metod in razlogov za nastanek in reševanje izjem Valueerror v Pythonu.

Kaj je ValueError v Pythonu?

Izjema ValueError se pogosto pojavi v Python ko je neveljavna vrednost dodeljena spremenljivki ali posredovana funkciji med klicanjem. Pogosto se pojavi tudi med razpakiranjem zaporednih podatkovnih tipov in s funkcijami, ko se uporabi stavek return.



Sintaksa:

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

Zakaj se ValueError pojavi v Pythonu?

Nekaj ​​pogostih razlogov za pojav ValueError je naslednjih:

  • Neveljaven argument
  • Nepravilna uporaba Matematični modul
  • Razpakiranje an ponovljiv objekt

Neveljaven argument

ValueError se običajno pojavi, ko funkciji v Pythonu posredujemo neveljaven argument. Na primer, funkcija float() v Pythonu vzame število in ga pretvori v vrednost float. Če pa tej funkciji posredujemo niz, Python seveda ne bo mogel pretvoriti niza v lebdečo vrednost, kar bo povzročilo 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'>

Nepravilna uporaba matematičnega modula

Izjema ValueError se med delom z modulom Math v Pythonu pogosto pojavi. To je zato, ker morda ne poznamo veljavnih argumentov za določeno funkcijo. Na primer, funkcija math.factorial() modula Math vrne faktorial danega števila. Vendar, če nekdo poskusi tej funkciji posredovati negativno vrednost, bo zagotovo naletel na 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>

Razpakiranje ponovljivega predmeta

Ponavljajoče se predmete v Pythonu, kot so seznami, tuple in slovarji, je mogoče zankati. Razpakiranje, kjer so vrednosti iterable dodeljene posameznim spremenljivkam, je običajna operacija. Če navedete več ali manj spremenljivk, bo prišlo do napake, kot je ValueError. Na primer, v spodnjem primeru je seznam s tremi elementi razpakiran z uporabo štirih spremenljivk, kar vodi do 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)>

Pristopi/razlogi za reševanje izjem napak vrednosti

Spodaj so načini za reševanje izjem Valueerror v Pythonu

  • Uporaba bloka poskusi razen
  • Popravi kodo
  • Uporabite pravilno število spremenljivk

Uporaba bloka poskusi razen

Spodaj poskuša koda s funkcijo `float()` pretvoriti številsko vrednost (`a`) in neštevilski niz (`b`) v lebdeča. Blok poskusi razen se uporablja za prestrezanje morebitne napake `ValueError`, ki se lahko pojavi med pretvorbo neštevilskega niza. Če pride do takšne napake, natisne jasno sporočilo o napaki, ki nakazuje nezmožnost pretvorbe niza v plavajočo vrednost.

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

>

>

Izhod:

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

Popravi kodo

Spodaj koda izračuna faktorial 3 brez dviga aValueError>. Če morate obravnavati primer negativnega vnosa, boste morda želeli dodati preverjanje, da zagotovite veljavnost vnosa, preden pokličetemath.factorial>funkcijo.

Python3




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

>

>

Izhod:

6>

Uporabite pravilno število spremenljivk

Če želite odpraviti izjeme Valueerror na seznamu za razpakiranje, morate za razpakiranje seznama uporabiti pravilno število spremenljivk. Če ima vaš seznam tri elemente, morate uporabiti tri spremenljivke. Tukaj je popravljena koda:

Python3


pretvorba java niza v int



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

>

>

Izhod

Geeks for Geeks>

Zaključek

Skratka, razreševanje izjem ValueError v Pythonu vključuje natančen pregled vhodnih podatkov in zagotavljanje združljivosti s pričakovano obliko. Uporaba ustreznih tehnik preverjanja, kot so bloki poskusi razen in pogojni stavki, lahko pomaga preventivno ujeti in obravnavati morebitne težave. Uporaba vgrajenih funkcij in knjižnic za razčlenjevanje in preverjanje vnosa doda kodi dodatno plast robustnosti.