Python doctest не работает на 0.0! = -0.0 - что дает? - PullRequest
2 голосов
/ 21 мая 2009

С учетом следующего кода:

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()

Второй документ не пройден:

Failed example:
    slope(1, 2, 3, 2)
Expected:
    0.0
Got:
    -0.0

Однако мы все знаем, что -0,0 == 0,0. Doctest выполняет сравнение строк, чтобы проверить результаты здесь? Почему второй тест не пройден?

1 Ответ

9 голосов
/ 21 мая 2009

Сбой, потому что doctest делает сравнение строк . Он просто проверяет, совпадает ли вывод с тем, что было бы выведено, если бы код был выполнен на интерактивном интерпретаторе Python:

>>> 0 / -2
-0.0

Редактировать: : ссылка , на которую ссылается Дэниел Лью ниже, дает еще несколько советов о том, как это работает и как вы можете повлиять на это поведение. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...