值错误:Python中的数学域错误
我正在写一段代码,用来帮助我在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
6
这可能是因为 bsqr
是负数,而负数的平方根计算起来不太好。
>>> import math
>>> math.sqrt(-1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
检查一下你的数学计算和输入。c
(斜边)应该 总是 大于任意一条直角边(a
和 b
)。
另外,顺便提一下,如果你输入的 a
和 c
的值相等(在 int
截断后),也可能会出现 ZeroDivisionError
的错误。