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

sir*_*ain 2 python math sqrt python-idle

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

这总是让我有点问题:

bsqr = (int(c) ** 2) - (int(a) ** 2)
b = int(bsqr) / sqrt(bsqr)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

 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
Run Code Online (Sandbox Code Playgroud)

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

mgi*_*son 5

这可能是因为bsqr是否定的,并且采用负数的sqrt不能很好地工作.

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

检查你的代数/输入. c(hypoteneuse)应始终大于任何一条腿(ab)


另外,请注意,ZeroDivisionError如果您恰好输入值a并且c相等(int截断它们之后),您也可以得到a .