Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: python error math domain error - почему падает код?

  1. python error math domain error - почему падает код?

    Ребята, помогите плиз! Пытаюсь написать небольшой скрипт, который должен вычислять корень из произвольного числа, введенного пользователем. Но иногда выбивает ошибка 'math domain error'. Не пойму, что я делаю не так. Может кто-то сталкивался с такой же проблемой и мог бы помочь разобраться? Заранее спасибо! Вот кусок кода:

    Программный код:
          import math
          
          def calculate_square_root
    (x):
          return 
    math.sqrt(x)
          
          try:
          
    number_input float(input("Введите число: "))
          
    result calculate_square_root(number_input)
          print(
    "Результат:"result)
          
    except Exception as e:
          print(
    "Ошибка:"e
    В чем проблема с этими отрицательными числами? Если у кого есть примеры с try... except или что-то подобное, буду безмерно благодарен!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Вангую, ошибка в том, что ты передаешь отрицательные числа в math.sqrt(), а корень из отрицательного числа - это комплексное число. Добавь проверку числа до вызова функции:

    Программный код:
    def calculate_square_root(x):
    if 
    0:
    raise ValueError("Нельзя вычислить корень из отрицательного числа!")
    return 
    math.sqrt(x)

    try:
    number_input float(input("Введите число: "))
    result calculate_square_root(number_input)
    print(
    "Результат:"result)
    except Exception as e:
    print(
    "Ошибка:"e
    Так проблема должна исчезнуть. Удачи!

  4. Цитата Сообщение от polet
    Вангую, ошибка в том, что ты передаешь отрицательные числа в math.sqrt(), а корень из отрицательного числа - это комплексное число. Добавь проверку числа до вызова функции:

    Программный код:
    def calculate_square_root(x):
    if 
    0:
    raise ValueError("Нельзя вычислить корень из отрицательного числа!")
    return 
    math.sqrt(x)

    try:
    number_input float(input("Введите число: "))
    result calculate_square_root(number_input)
    print(
    "Результат:"result)
    except Exception as e:
    print(
    "Ошибка:"e
    Так проблема должна исчезнуть. Удачи!
    Классная идея с явным выбросом исключения, так код станет более читаемым и безопасным.

  5. Да, это из-за отрицательной вводимой настройки. Ты можешь использовать комплексные числа, если работаешь с математикой, которая разрешает это:

    Программный код:
    import cmath

    def calculate_square_root
    (x):
    return 
    cmath.sqrt(x)

    try:
    number_input float(input("Введите число: "))
    result calculate_square_root(number_input)
    print(
    "Результат:"result)
    except Exception as e:
    print(
    "Ошибка:"e
    Попробуй этот подход.

  6. Цитата Сообщение от Lina
    Да, это из-за отрицательной вводимой настройки. Ты можешь использовать комплексные числа, если работаешь с математикой, которая разрешает это:

    Программный код:
    import cmath

    def calculate_square_root
    (x):
    return 
    cmath.sqrt(x)

    try:
    number_input float(input("Введите число: "))
    result calculate_square_root(number_input)
    print(
    "Результат:"result)
    except Exception as e:
    print(
    "Ошибка:"e
    Попробуй этот подход.
    Комплексные числа - это уже немного другой уровень, но если надо, почему бы и нет?

  7. Просто добавь проверку на отрицательные числа перед вычислением корня:

    Программный код:
    def calculate_square_root(x):
    try:
    if 
    0:
    raise ValueError("Нельзя вычислить корень из отрицательного числа")
    return 
    math.sqrt(x)
    except ValueError as ve:
    return 
    str(ve)
    try:
    number_input float(input("Введите число: "))
    result calculate_square_root(number_input)
    print(
    "Результат:"result)
    except Exception as e:
    print(
    "Ошибка:"e
    Это должно помочь.

  8. Цитата Сообщение от Валентина
    Просто добавь проверку на отрицательные числа перед вычислением корня:

    Программный код:
    def calculate_square_root(x):
    try:
    if 
    0:
    raise ValueError("Нельзя вычислить корень из отрицательного числа")
    return 
    math.sqrt(x)
    except ValueError as ve:
    return 
    str(ve)
    try:
    number_input float(input("Введите число: "))
    result calculate_square_root(number_input)
    print(
    "Результат:"result)
    except Exception as e:
    print(
    "Ошибка:"e
    Это должно помочь.
    Отличная идея с поднятием ValueError, это делает код более понятным!

  9. Можно также использовать библиотеку sympy, если тебе придется работать с корнями из отрицательных чисел. Она поддерживает символическую математику и корни из отрицательных чисел. Но, возможно, это излишне. Самый простой вариант был предложен выше - просто добавить проверку на отрицательные числа.

  10. Цитата Сообщение от AsteroidHunter
    Можно также использовать библиотеку sympy, если тебе придется работать с корнями из отрицательных чисел. Она поддерживает символическую математику и корни из отрицательных чисел. Но, возможно, это излишне. Самый простой вариант был предложен выше - просто добавить проверку на отрицательные числа.
    Символическая математика - это круто, правда sympy может быть чересчур для такой простой задачи.

Страница 1 из 2 12 ПоследняяПоследняя