Beispiele für die Behandlung von ValueError-Ausnahmen in Python
1. Was ist ein Python ValueError?
Ein Python ValueError wird ausgelöst, wenn eine Funktion ein Argument des richtigen Typs, aber einen unangemessenen Wert erhält. Außerdem sollte die Situation nicht durch eine spezifischere Ausnahme wie IndexError beschrieben werden.
2. Beispiel für ValueError
Sie erhalten einen ValueError bei mathematischen Operationen, wie zum Beispiel der Quadratwurzel einer negativen Zahl.
>>> import math
>>>
>>> math.sqrt(-10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
>>>
3. Umgang mit ValueError-Ausnahmen
Hier ist ein einfaches Beispiel, um die ValueError-Ausnahme mit einem Try-Except-Block zu behandeln.
import math
x = int(input('Please enter a positive number:\n'))
try:
print(f'Square Root of {x} is {math.sqrt(x)}')
except ValueError as ve:
print(f'You entered {x}, which is not a positive number.')
Hier ist die Ausgabe des Programms mit verschiedenen Eingabetypen.
Please enter a positive number:
16
Square Root of 16 is 4.0
Please enter a positive number:
-10
You entered -10, which is not a positive number.
Please enter a positive number:
abc
Traceback (most recent call last):
File "/Users/pankaj/Documents/PycharmProjects/hello-world/journaldev/errors/valueerror_examples.py", line 11, in <module>
x = int(input('Please enter a positive number:\n'))
ValueError: invalid literal for int() with base 10: 'abc'
Unser Programm kann bei den Funktionen int() und math.sqrt() einen ValueError auslösen. Daher können wir einen verschachtelten try-except-Block erstellen, um beide zu behandeln. Hier ist der aktualisierte Codeausschnitt, um alle ValueError-Szenarien zu berücksichtigen.
import math
try:
x = int(input('Please enter a positive number:\n'))
try:
print(f'Square Root of {x} is {math.sqrt(x)}')
except ValueError as ve:
print(f'You entered {x}, which is not a positive number.')
except ValueError as ve:
print('You are supposed to enter positive number.')
4. Auslösen eines ValueError in einer Funktion
Hier ist ein einfaches Beispiel, bei dem wir einen ValueError für ein Eingabeargument des richtigen Typs, aber mit einem unangemessenen Wert auslösen.
import math
def num_stats(x):
if x is not int:
raise TypeError('Work with Numbers Only')
if x < 0:
raise ValueError('Work with Positive Numbers Only')
print(f'{x} square is {x * x}')
print(f'{x} square root is {math.sqrt(x)}')
5. Literaturverzeichnis
- Python Ausnahmebehandlung
- ValueError Python-Dokumentation
