Ошибки использования модуля Math / Python [duplicate]

Правильный ответ:

select table_record_id,
group_concat(if(value_name='note', value_text, NULL)) as note
,group_concat(if(value_name='hire_date', value_text, NULL)) as hire_date
,group_concat(if(value_name='termination_date', value_text, NULL)) as termination_date
,group_concat(if(value_name='department', value_text, NULL)) as department
,group_concat(if(value_name='reporting_to', value_text, NULL)) as reporting_to
,group_concat(if(value_name='shift_start_time', value_text, NULL)) as shift_start_time
,group_concat(if(value_name='shift_end_time', value_text, NULL)) as shift_end_time
from other_value
where table_name = 'employee'
and is_active = 'y'
and is_deleted = 'n'
GROUP BY table_record_id
2
задан Bhargav Rao 31 March 2015 в 18:46
поделиться

4 ответа

Проблема в том, что формула Херона хороша только тогда, когда сумма двух чисел больше третьей. Вам нужно проверить это явно.

Лучше, если вы используете код для этого, используя Обработка исключений

try:
    s = sqrt(d*(d-a)*(d-b)*(d-c))
    print "a+b+c =", a, b, c
    print "Distr. =", d*2, "Area =", s
except ValueError:
    print "Please enter 3 valid sides"

Если вы хотите сделать это без try, вы можете сделать это как

delta = (d*(d-a)*(d-b)*(d-c))
if delta>0:
    s = sqrt(delta)
    print "a+b+c =", a, b, c
    print "Distr. =", d*2, "Area =", s
else:
    print "Please enter 3 valid sides"
3
ответ дан Bhargav Rao 20 August 2018 в 15:43
поделиться
  • 1
    Спасибо за ответ, просто комментарий: я не могу использовать использование 'del' в качестве переменной – szzso24 1 April 2015 в 08:02
  • 2
    О, да. Это зарезервированное слово. благодаря – Bhargav Rao♦ 1 April 2015 в 08:05

Я получил ту же ошибку с моим кодом, пока не использовал cmath вместо math, как сказал aneroid:

import sys
import random
import cmath

x = random.randint(1, 100)
y = random.randint(1, 100)

a = 2 * x * cmath.sqrt(1 - x * 2 - y * 2)
b = 2 * cmath.sqrt(1 - x * 2 - y * 2)
c = 1 - 2 * (x * 2 + y * 2)

print ( 'The point on the sphere is: ', (a, b, c) )

Таким образом, мой код правильно работал.

4
ответ дан aneroid 20 August 2018 в 15:43
поделиться
  • 1
    В другом ответе уже было предложено использовать cmath вместо math. – MSeifert 21 December 2016 в 02:28
  • 2
    Я должен пропустить это. У меня не было намерения не давать должного доверия, и я также новичок [profile wise] в stackoverflow. Извините за тенденции noobish. – SilverInternet 21 December 2016 в 04:38

Используйте cmath вместо этого.

import cmath
num=cmath.sqrt(your_number)
print(num)

Теперь, независимо от того, является ли число отрицательным или положительным, вы получите результат ...

0
ответ дан Subham Debnath 20 August 2018 в 15:43
поделиться
  • 1
    ОП пытается вычислить площадь треугольника, маловероятно, что возвращение сложного значения для плохо определенного треугольника является хорошей идеей. – Mark Dickinson 18 February 2018 в 18:34
  • 2
    Затем перед вводом значения используйте abs (), чтобы убедиться, что значение положительное ..... Затем используйте math.sqrt () .... – Subham Debnath 19 February 2018 в 06:27
  • 3
    Это еще хуже! Теперь вы тихо даете неверный ответ на проблему, вместо того, чтобы дать понять, что что-то не так. Если кто-то спрашивает, какая область треугольника со сторонами 1, 2 и 5, правильный ответ не 2.45j, а это не 2.45. Правильный ответ заключается в том, чтобы дать некоторую ошибку с сообщением «Нет такого треугольника». – Mark Dickinson 19 February 2018 в 09:36
  • 4
    Hmmmmm ..... Тогда, прежде всего, нам нужно проверить, что стороны удовлетворяют теореме пифагора, затем продолжайте ... – Subham Debnath 20 February 2018 в 06:34

Я думаю, проблема заключается в том, что вы не можете определить треугольник с любыми сторонами, которые пользователь вводит. Попробуйте сделать треугольник с длиной сторон, 10,2 и 1. Невозможно. Поэтому иногда Формула Херона не может работать, потому что треугольника нет.

0
ответ дан zch 20 August 2018 в 15:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: