值错误:Python中的数学域错误

时间:2014-05-07 21:18:20

标签: python math python-idle sqrt

我正在编写一个代码来帮助我解决Python中的毕达哥拉斯定理。问题是,当我让代码尝试解决B时,我不断收到这个错误。

这总是让我遇到问题:

bsqr = (int(c) ** 2) - (int(a) ** 2)
b = int(bsqr) / sqrt(bsqr)

我收到此错误:

 Traceback (most recent call last):
 File "<pyshell#24>", line 1, in <module> pythag()
 File "C:\Python34\fact.py", line 156, in pythag
 b = int(bsqr) / sqrt(bsqr)
 ValueError: math domain error

导致此错误的原因是什么,我该如何解决?

2 个答案:

答案 0 :(得分:5)

可能是因为bsqr是否定的,并且取负数的sqrt并不能很好地工作。

>>> import math
>>> math.sqrt(-1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error

检查你的代数/输入。 c(hypoteneuse)总是大于任何一条腿(ab


另外,请注意,如果您恰好输入ZeroDivisionErrora相等的值(c截断它们之后),您也可以获得int

答案 1 :(得分:0)

请仔细阅读:

Square roots in python

另请参阅Python中的cmath模块

cmath module - sqrt