Извините, что я не могу комментировать, но похоже, что @jonsharpe прав. есть проблема с поплавковой точностью. Я положил print abs(test - 4.6) < 0.001
, и это вернулось. Я также импортирован UnitTest и использовал assertEqual (я выложу код ниже:
import unittest
def function(x):
a = 0
x.remove(min(x))
x.remove(max(x))
for i in x:
a = a + i
return float(1)/len(x)*a
tc = unittest.TestCase('__init__')
tc.assertEqual(function([3, 1, 2, 5, 9, 11, 4]), 4.6)
От создания экземпляра теста и запуска этого он показал немного больше того, что основная ошибка Вот что я. получил в результате от запуска этого:
Traceback (most recent call last):
File "test.py", line 12, in <module>
tc.assertEqual(function([3, 1, 2, 5, 9, 11, 4]), 4.6)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/case.py", line 515, in assertEqual
assertion_func(first, second, msg=msg)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/unittest/case.py", line 508, in _baseAssertEqual
raise self.failureException(msg)
AssertionError: 4.6000000000000005 != 4.6
Я надеюсь, что это может помочь вам понять вашу проблему и найти решение этой проблемы
'функция печати ([3, 1, 2, 5, 9, 11, 4]) 'дает' 8.388608e-17'. –
О, извините, я думаю, что допустил ошибку в своем коде, но код все еще g от ошибки утверждения. –
Попробуйте 'assert abs (function (...) - 4.6) <0.001' - это может быть проблема точности поплавка. – jonrsharpe