Python vine cu excepții încorporate care apar atunci când apar erori comune. Aceste excepții predefinite oferă un avantaj deoarece puteți utiliza blocul try-except din Python pentru a le gestiona în prealabil. De exemplu, puteți utiliza blocul try-except pentru a gestiona excepția ValueError în Python. În acest articol, vom vedea câteva metode și motive pentru apariția și rezolvarea excepțiilor Valueerror în Python.
Ce este ValueError în Python?
Excepția ValueError este adesea ridicată în Piton când o valoare nevalidă este atribuită unei variabile sau transmisă unei funcții în timpul apelării acesteia. De asemenea, apare adesea în timpul despachetării tipurilor de date secvențe, precum și cu funcții atunci când este utilizată o instrucțiune return.
Sintaxa:
ValueError: could not convert string to float: 'techcodeview.com'>
De ce apare ValueError în Python?
Câteva motive comune pentru apariția ValueError sunt următoarele:
- Argument invalid
- Utilizarea incorectă a Modulul de matematică
- Despachetarea unui Obiect iterabil
Argument invalid
O ValueError apare de obicei atunci când trecem un argument nevalid unei funcții în Python. De exemplu, funcția float() din Python preia un număr și îl convertește într-o valoare float. Dar, dacă trecem un șir acestei funcție, în mod natural nu va fi posibil ca Python să convertească un șir într-un float și, prin urmare, va duce la o 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'>
Utilizarea incorectă a modulului de matematică
Excepția ValueError este ridicată destul de mult în timpul lucrului cu modulul Math în Python. Acest lucru se datorează faptului că s-ar putea să nu fie conștient de argumentele valide pentru o anumită funcție. Ca exemplu, funcția math.factorial() a modulului Math returnează factorialul unui număr dat. Cu toate acestea, dacă cineva încearcă să transmită o valoare negativă acestei funcții, atunci este obligat să întâlnească ValueError:
Python3
ce este un sistem de fișiere linux
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>
Despachetarea unui obiect iterabil
Un obiect iterabil în Python, cum ar fi liste, tupluri și dicționare, poate fi buclat peste. Dezambalarea, unde valorile unui iterabil sunt atribuite variabilelor individuale, este o operație comună. Dacă furnizați mai multe sau mai puține variabile, va apărea o eroare, cum ar fi ValueError. De exemplu, în exemplul de mai jos, o listă cu trei articole este dezambalată folosind patru variabile, ducând la o valoare 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)>
Abordări/Motive pentru a rezolva excepțiile Valueerror
Mai jos, sunt modalități de a rezolva excepțiile Valueerror în Python
- Folosind blocul try-except
- Corectați Codul
- Utilizați numărul corect de variabile
Folosind blocul try-except
Mai jos, codul încearcă să convertească o valoare numerică (`a`) și un șir nenumeric (`b`) în float folosind funcția `float()`. Un bloc try-except este folosit pentru a prinde o potențială „ValueError” care poate apărea în timpul conversiei șirului non-numeric. Dacă apare o astfel de eroare, se tipărește un mesaj de eroare clar care indică incapacitatea de a converti șirul într-un float.
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.'>)> |
>
>
Ieșire:
34.0 Error: Unable to convert the string to a float.>
Corectați Codul
Mai jos, codificați factorialul 3 fără a crește aValueError>. Dacă trebuie să gestionați cazul unei intrări negative, este posibil să doriți să adăugați o verificare pentru a vă asigura că intrarea este validă înainte de a apelamath.factorial>funcţie.
Python3
import> math> print>(math.factorial(>3>))> |
>
>
Ieșire:
6>
Utilizați numărul corect de variabile
Pentru a rezolva excepțiile Valueerror din lista de despachetare, ar trebui să utilizați numărul corect de variabile pentru a despacheta lista. Dacă lista ta are trei elemente, ar trebui să folosești trei variabile. Iată codul corectat:
Python3
my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c>=> my_list># Use three variables instead of four> print>(a)> print>(b)> print>(c)> |
>
miez microlitic
>
Ieșire
Geeks for Geeks>
Concluzie
În concluzie, rezolvarea excepțiilor ValueError în Python implică o examinare meticuloasă a datelor de intrare și asigurarea compatibilității cu formatul așteptat. Folosirea tehnicilor de validare adecvate, cum ar fi blocurile try-except și instrucțiunile condiționate, poate ajuta la identificarea și gestionarea posibilelor probleme în mod preventiv. Utilizarea de funcții și biblioteci încorporate pentru analizarea și validarea intrărilor adaugă un strat suplimentar de robustețe codului.