ValueError:数学域错误

时间:2014-02-22 18:23:27

标签: python math

我写了这段代码

def partE():
    e = 3 * 10 // 3 + 10 % 3
    print("e).", e)

partE()

当我尝试运行它时,python会返回此错误消息。我不懂为什么。有人可以解释一下吗?非常感谢你!

Traceback (most recent call last):
  File "C:/Users/Crisa/PycharmProjects/untitled/homeworkchap3.py", line 30, in <module>
    partD()
  File "C:/Users/Crisa/PycharmProjects/untitled/homeworkchap3.py", line 27, in partD
    d = sqrt(4.5 - 5.0) + 7 * 3
ValueError: math domain error

1 个答案:

答案 0 :(得分:3)

您的追踪表示您正在向math.sqrt()函数传递负数:

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

不要那样做。根据定义,数字的平方始终为正数,因此要再次获得平方根,必须传递正数。

请注意,您发布的例外与您发布的代码无关。该代码工作得很好:

>>> def partE():
...     e = 3 * 10 // 3 + 10 % 3
...     print("e).", e)
... 
>>> partE()
('e).', 11)