Python wordt geleverd met ingebouwde uitzonderingen die worden gegenereerd wanneer veelvoorkomende fouten optreden. Deze vooraf gedefinieerde uitzonderingen bieden een voordeel omdat u het try-except-blok in Python kunt gebruiken om ze vooraf af te handelen. U kunt bijvoorbeeld het try-except-blok gebruiken om de ValueError-uitzondering in Python te beheren. In dit artikel zullen we enkele methoden en redenen zien voor het optreden en oplossen van de Valueerror-uitzonderingen in Python.
Wat is ValueError in Python?
De ValueError-uitzondering wordt vaak gegenereerd Python wanneer een ongeldige waarde wordt toegewezen aan een variabele of wordt doorgegeven aan een functie terwijl deze wordt aangeroepen. Het komt ook vaak voor tijdens het uitpakken van reeksgegevenstypen en bij functies wanneer een return-instructie wordt gebruikt.
Syntaxis:
ValueError: could not convert string to float: 'techcodeview.com'>
Waarom treedt ValueError op in Python?
Een aantal veelvoorkomende redenen voor het optreden van ValueError zijn als volgt:
- Ongeldig argument
- Verkeerd gebruik van Wiskundemodule
- Uitpakken van een itereerbaar object
Ongeldig argument
Een ValueError treedt doorgaans op wanneer we een ongeldig argument doorgeven aan een functie in Python. De functie float() van Python neemt bijvoorbeeld een getal en converteert dit naar een float-waarde. Maar als we een string aan deze functie doorgeven, zal het voor Python uiteraard niet mogelijk zijn om een string naar een float te converteren en zal dit dus tot een ValueError leiden.
Java-lijst naar array
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'>
Onjuist gebruik van de wiskundemodule
De ValueError-uitzondering komt nogal eens voor tijdens het werken met de Math-module in Python. Dit komt omdat men zich mogelijk niet bewust is van de geldige argumenten voor een bepaalde functie. De functie math.factorial() van de module Math retourneert bijvoorbeeld de faculteit van een bepaald getal. Als iemand echter een negatieve waarde aan deze functie probeert door te geven, zal hij of zij de ValueError tegenkomen:
lees het csv-bestand in Java
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>
Een itereerbaar object uitpakken
Een itereerbaar object in Python, zoals lijsten, tupels en woordenboeken, kan in een lus worden geplaatst. Uitpakken, waarbij waarden van een iterabele worden toegewezen aan individuele variabelen, is een veel voorkomende bewerking. Als u meer of minder variabelen opgeeft, zal er een fout optreden, zoals ValueError. In het onderstaande voorbeeld wordt bijvoorbeeld een lijst met drie items uitgepakt met behulp van vier variabelen, wat leidt tot een ValueError
Python3
my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c, d>=> my_list> print>(a)> print>(b)> print>(c)> |
>
katrina kaif
>
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)>
Benaderingen/redenen om uitzonderingen op het gebied van waardefouten op te lossen
Hieronder vindt u de manieren om de Valueerror-uitzonderingen in Python op te lossen
- Try-except-blok gebruiken
- Corrigeer de code
- Gebruik het juiste aantal variabelen
Try-except-blok gebruiken
Hieronder probeert de code een numerieke waarde (`a`) en een niet-numerieke string (`b`) om te zetten in floats met behulp van de `float()`-functie. Een try-except-blok wordt gebruikt om een potentiële `ValueError` op te vangen die kan optreden tijdens de conversie van de niet-numerieke string. Als een dergelijke fout optreedt, wordt er een duidelijke foutmelding weergegeven die aangeeft dat de string niet naar een float kan worden omgezet.
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.'>)> |
>
lijst sorteren java
>
Uitgang:
34.0 Error: Unable to convert the string to a float.>
Corrigeer de code
Hieronder berekent code de faculteit van 3 zonder a te verhogenValueError>. Als u het geval van negatieve invoer moet afhandelen, wilt u wellicht een controle toevoegen om er zeker van te zijn dat de invoer geldig is voordat u demath.factorial>functie.
Python3
import> math> print>(math.factorial(>3>))> |
>
>
fakkel installeren
Uitgang:
6>
Gebruik het juiste aantal variabelen
Om de Valueerror Exceptions in de uitpaklijst op te lossen, moet u het juiste aantal variabelen gebruiken om de lijst uit te pakken. Als uw lijst uit drie elementen bestaat, moet u drie variabelen gebruiken. Hier is de gecorrigeerde code:
Python3
my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c>=> my_list># Use three variables instead of four> print>(a)> print>(b)> print>(c)> |
>
>
Uitvoer
Geeks for Geeks>
Conclusie
Concluderend betekent het oplossen van ValueError-uitzonderingen in Python een nauwgezet onderzoek van de invoergegevens en het garanderen van compatibiliteit met het verwachte formaat. Het gebruik van de juiste validatietechnieken, zoals try-except-blokken en voorwaardelijke instructies, kan helpen potentiële problemen preventief op te sporen en op te lossen. Het gebruik van ingebouwde functies en bibliotheken voor het parseren en valideren van invoer voegt een extra laag robuustheid toe aan de code.