以下是我写的内容:
>>> import math
>>> 2/3*math.log(2/3,2)
以下是我遇到的错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
有人可以解释一下我做错了什么吗? 感谢。
答案 0 :(得分:5)
我假设这是Python 2.7。
在2.7中,默认情况下,2/3因为分区而评估为0。因此,您尝试记录0,因此出错。另一方面,Python 3默认执行浮点除法。
要获得正确的行为,您可以:
from __future__ import division
,它在Python 2.7中为您提供Python 3分区行为。2/3
替换为2/float(3)
或2/3.0
。答案 1 :(得分:1)
问题是你可能正在使用python 2.7。在这个版本中,2/3给出了结果0(零)。并且日志功能未定义为0.尝试此:
2/3.0*math.log(2/3.0,2)
在Python 3.5中,这个问题不会发生。