给出以下代码:
def slope(x1, y1, x2, y2):
"""
>>> slope(5, 3, 4, 2)
1.0
>>> slope(1, 2, 3, 2)
0.0
>>> slope(1, 2, 3, 3)
0.5
>>> slope(2, 4, 1, 2)
2.0
"""
xa = float (x1)
xb = float (x2)
ya = float (y1)
yb = float (y2)
return (ya-yb)/(xa-xb)
if name_ == '__main__':
import doctest
doctest.testmod()
第二个doctest失败了:
Failed example:
slope(1, 2, 3, 2)
Expected:
0.0
Got:
-0.0
但是,我们都知道-0.0 == 0.0。 doctest是否正在进行字符串比较以检查结果?为什么第二次测试失败?
答案 0 :(得分:9)
失败,因为doctest执行字符串比较。它仅检查输出是否与在Python交互式解释器上执行代码时输出的输出相同:
>>> 0 / -2
-0.0
修改:以下referenced下的Daniel Lew链接提供了有关其工作方式的更多提示,以及您如何能够影响此行为。