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

3 投票
2 回答
24204 浏览
提问于 2025-04-18 05:44

我正在写一段代码,用来帮助我在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

请查看这个内容:

Python中的平方根

还可以看看Python里的 cmath 模块

cmath模块 - sqrt

6

这可能是因为 bsqr 是负数,而负数的平方根计算起来不太好。

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

检查一下你的数学计算和输入。c(斜边)应该 总是 大于任意一条直角边(ab)。


另外,顺便提一下,如果你输入的 ac 的值相等(在 int 截断后),也可能会出现 ZeroDivisionError 的错误。

撰写回答