不同列表的AssertionError

时间:2019-02-28 11:08:53

标签: python unit-testing enumerate

我不使用reversed()函数进行了反向枚举。我想将字符串和数字反向打印。但是,在测试时,我收到一个AssertionError消息,指出列表不匹配。

def my_own_enumerate(a):
    for i in range(len(a)-1, -1, -1):
        return i, a[i]

class Test(unittest.TestCase):
    def test_my_own_enumerate(self):
        self.assertEqual([(0, "m"), (1, "e"), (2, "!")], list(my_own_enumerate("me!")))

1 个答案:

答案 0 :(得分:0)

  • my_own_enumerate meant ,可以返回反向枚举(如您自己所说),所以我不确定为什么要用不可逆枚举。

  • my_own_enumerate中的循环在第一次迭代后返回,因此它将始终仅返回最后一个字符及其索引。而是尝试

    def my_own_enumerate(a):
        return [(i, a[i]) for i in range(len(a) - 1, -1, -1)]
    

然后

print(my_own_enumerate('me!'))
# [(2, '!'), (1, 'e'), (0, 'm')]

class Test(unittest.TestCase):
    def test_my_own_enumerate(self):
        self.assertEqual([(2, '!'), (1, 'e'), (0, 'm')], my_own_enumerate("me!"))

不会失败。