Python ir iebūvēti izņēmumi, kas tiek parādīti bieži sastopamu kļūdu gadījumā. Šie iepriekš noteiktie izņēmumi sniedz priekšrocības, jo varat izmantot Python bloku try-except, lai tos apstrādātu iepriekš. Piemēram, varat izmantot bloku try-except, lai pārvaldītu ValueError izņēmumu programmā Python. Šajā rakstā mēs redzēsim dažas metodes un iemeslus Valueerror izņēmumu parādīšanai un risināšanai Python.
Kas ir ValueError programmā Python?
Izņēmums ValueError bieži tiek minēts Python ja mainīgajam tiek piešķirta nederīga vērtība vai tā tiek nodota funkcijai tās izsaukšanas laikā. Tas bieži notiek arī secības datu tipu izpakošanas laikā, kā arī ar funkcijām, kad tiek izmantots atgriešanas priekšraksts.
Sintakse :
ValueError: could not convert string to float: 'techcodeview.com'>
Kāpēc Python rodas ValueError?
Daži izplatītākie ValueError rašanās iemesli ir šādi:
- Nederīgs arguments
- Nepareiza lietošana Matemātikas modulis
- Izpakošana an atkārtojams objekts
Nederīgs arguments
ValueError parasti rodas, ja Python funkcijai nododam nederīgu argumentu. Piemēram, Python funkcija float() ņem skaitli un pārvērš to peldošā vērtībā. Bet, ja mēs nododam virkni šai funkcijai, Python, protams, nevarēs pārvērst virkni pludiņā, un tādējādi tas novedīs pie 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'>
Nepareiza matemātikas moduļa izmantošana
Strādājot ar Python matemātikas moduli, ValueError izņēmums tiek parādīts diezgan daudz. Tas ir tāpēc, ka kāds var nebūt informēts par derīgajiem argumentiem konkrētai funkcijai. Piemēram, Math moduļa funkcija math.factorial() atgriež dotā skaitļa faktoriālu. Tomēr, ja kāds mēģina šai funkcijai nodot negatīvu vērtību, viņam noteikti tiks parādīta 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>
Atkārtojama objekta izsaiņošana
Atkārtojamu Python objektu, piemēram, sarakstus, korešus un vārdnīcas, var cilpot. Izpakošana, kad iterējamās vērtības tiek piešķirtas atsevišķiem mainīgajiem, ir izplatīta darbība. Ja norādāt vairāk vai mazāk mainīgo, tiks parādīta kļūda, piemēram, ValueError. Piemēram, zemāk esošajā piemērā saraksts ar trim vienumiem tiek izsaiņots, izmantojot četrus mainīgos, kā rezultātā rodas 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)>
Pieejas/iemesli, kā atrisināt Valueerror izņēmumus
Tālāk ir norādīti veidi, kā atrisināt Valueerror izņēmumus programmā Python
- Izmantojot mēģinājumu, izņemot bloku
- Labojiet kodu
- Izmantojiet pareizo mainīgo skaitu
Izmantojot mēģinājumu, izņemot bloku
Tālāk kods mēģina pārveidot skaitlisku vērtību (a) un virkni, kas nav skaitliska (b) par pludiņiem, izmantojot funkciju 'float()'. Izmēģināšanas bloks tiek izmantots, lai uztvertu iespējamu ValueError kļūdu, kas var rasties virknes, kas nav skaitliska, konvertēšanas laikā. Ja rodas šāda kļūda, tiek izdrukāts skaidrs kļūdas ziņojums, kas norāda uz nespēju pārvērst virkni pludiņā.
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.'>)> |
>
>
Izvade:
34.0 Error: Unable to convert the string to a float.>
Labojiet kodu
Zemāk kods aprēķina koeficientu 3, nepalielinot aValueError>. Ja nepieciešams apstrādāt negatīvas ievades gadījumu, pirms izsaukšanas varat pievienot pārbaudi, lai pārliecinātos, ka ievadītā informācija ir derīga.math.factorial>funkciju.
Python3
import> math> print>(math.factorial(>3>))> |
>
>
Izvade:
6>
Izmantojiet pareizo mainīgo skaitu
Lai atrisinātu Valueerror izņēmumus izpakošanas sarakstā, izmantojiet pareizo mainīgo skaitu, lai izpakotu sarakstu. Ja sarakstā ir trīs elementi, jāizmanto trīs mainīgie. Šeit ir izlabotais kods:
Python3
my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c>=> my_list># Use three variables instead of four> print>(a)> print>(b)> print>(c)> |
>
java burbuļu šķirošana
>
Izvade
Geeks for Geeks>
Secinājums
Noslēgumā jāsaka, ka ValueError izņēmumu atrisināšana programmā Python ietver rūpīgu ievades datu pārbaudi un saderības nodrošināšanu ar paredzēto formātu. Pareizu validācijas metožu izmantošana, piemēram, try-izņemot blokus un nosacījumu paziņojumus, var palīdzēt novērst un novērst iespējamās problēmas. Iebūvēto funkciju un bibliotēku izmantošana ievades parsēšanai un validācijai piešķir kodam papildu robustuma slāni.