Ситуация: мы пишем программу расчёта математических формул для научного отдела в институте. Логика простая: берём исходные данные, подставляем их в формулу, считаем результат (квадратный корень) и выводим результат.
По идее всё должно пройти успешно, код тоже несложный:
# подключаем модуль для математических вычислений
import math
# готовим переменные для формулы
a = 500
b = 3
c = 0.42
d = 14
# вычисляем предварительные данные
data = (a/d*b-c+(b/c-a)+c)
# считаем квадратный корень
result = math.sqrt(data)
# выводим результат
print(result)
Но при запуске мы получаем ошибку:
❌ ValueError: math domain error

Что это значит: мы попытались выполнить действие, которое выходит за пределы допустимого диапазона вычислений в математике. Проще говоря — попробовали посчитать то, что математически неправильно.
Когда встречается: в ситуациях, когда операции нарушают какие-то законы вычислений и математики в целом при использовании модуля Math.
Что делать с ошибкой ValueError: math domain error
Интерпретатор указал нам в выводе, что ошибка случилась в команде извлечения квадратного корня. Отсюда можно сделать вывод: единственное, из чего нельзя извлечь корень (с использованием этого модуля и стандартных переменных), — это отрицательное число. И судя по всему, это как раз наш случай.
Чтобы избавиться от ошибки ValueError: math domain error, добавим в код проверку на отрицательное значение перед извлечением корня. Ещё можно добавить обработку исключений, но в таком простом проекте можно и без этого.
Добавляем проверку:
# подключаем модуль для математических вычислений
import math
# готовим переменные для формулы
a = 500
b = 3
c = 0.42
d = 14
# вычисляем предварительные данные
data = (a/d*b-c+(b/c-a)+c)
# добавляем проверку отрицательных значений
if data > 0:
# считаем квадратный корень
result = math.sqrt(data)
# выводим результат
print(result)
# выводим сообщение об ошибке, если значение отрицательное
else:
print('Ошибка: отрицательное значение в результатах формулы')