我正在做如何像计算机科学家一样思考的第 5 章中的练习,并试图解决第三个练习:
编写一个函数
slope(x1, y1, x2, y2)
,返回通过点 (x1, y1) 和 (x2, y2) 的直线的斜率。确保您的实现slope
可以通过以下文档测试: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 """
这是我想出的代码:
def slope(x1, y1, x2, y2):
"""
>>> slope(5, 3, 4, 2)
1.0
>>> slope(1, 2, 3, 2)
0.0
"""
sy = float(y1 - y2)
sx = float(x1 - x2)
return sy / sx
在第二次 doctest 中,我得到-0.0
的不是0.0
……这令人困惑,因为我不知道这-0.0
是一件事。我知道我可以用它abs()
来获取绝对值,但是,如果我确实有应该得出负数的参数,它就行不通了。
也知道我可以对结果设置一个条件,以便它使用绝对值或不使用,但我想知道我是否只是在这里做错了什么。