Автор оригинала: Pankaj Kumar.
1. Что такое Python ValueError?
Python ValueError поднимается, когда функция получает аргумент правильного типа, но не подходящее значение. Кроме того, ситуация не должна быть описана более точным исключением, таким как indexError.
2. Пример ValueError
Вы получите ValucterRor с математическими операциями, такими как квадратный корень отрицательного числа.
>>> import math >>> >>> math.sqrt(-10) Traceback (most recent call last): File "", line 1, in ValueError: math domain error >>>
3. Обработка исключения ValueError
Вот простой пример для обработки исключений ValueError, используя TRY-BLOCK.
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.')
Вот выход программы с различными типами ввода.
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, inx = int(input('Please enter a positive number:\n')) ValueError: invalid literal for int() with base 10: 'abc'
Наша программа может повысить ValuctionError в функциях int () и Math.sqrt (). Итак, мы можем создать вложенный блок, кроме как раз, чтобы справиться с ними обоими. Вот обновленный фрагмент, чтобы позаботиться обо всех сценариях ValueRor.
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. Поднятие ValueError в функции
Вот простой пример, где мы поднимаем ValueError для входного аргумента правильного типа, но не подходящего значения.
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. Ссылки
- Обработка исключения Python
- ValueError Python Docs.