Одна функция, с которой у меня возникают проблемы, это split_list, где я должен разделить список на три кортежа, каждый из которых содержит strlist, через рекурсию. Первый кортеж со строками должен начинаться с гласного, второй кортеж со строками должен начинаться с согласного, а третий кортеж со строками не должен начинаться с буквенного символа.
class Node:
def __init__(self, value, rest):
self.value = value
self.rest = rest
def __eq__(self, other):
return ((type(other) == Node)
and self.value == other.value
and self.rest == other.rest
)
def __repr__(self):
return ("Node({!r}, {!r})".format(self.value, self.rest))
# a StrList is one of
# - None, or
# - Node(string, StrList)
def split_list(strlist):
if strlist is None:
return (None, None, None)
res = split_list(strlist.rest)
if strlist.value or res(strlist.value) == 'AEIOUaeiou':
return (Node(strlist.value, res[0]), res[1], res[2])
if strlist.value or res(strlist.value) != 'AEIOUaeiou':
return (res[0], Node(strlist.value, res[1]), res[2])
if strlist.value.isalpha() or res(strlist.value) == False:
return (res[0], res[1], Node(strlist.value, res[2]))
Это то, что у меня есть в настоящее время, но основная проблема заключается в том, что я не получаю правильную информацию при запуске своих модульных тестов. У меня проблема с AssertionError.
Примеры:
strlist = Node("xyz", Node("Abc", Node("49ers", None)))
self.assertEqual(split_list(strlist),(Node('Abc', None), Node('xyz', None), Node('49ers', None)))
strlist = Node("Yellow", Node("abc", Node("$7.25", Node("lime", Node("42", Node("Ethan", None))))))
self.assertEqual(split_list(strlist),(Node('abc', Node("Ethan", None)), Node('Yellow', Node("lime", None)), Node('$7.25', Node("42", None))))
Вывод:
AssertionError: Tuples differ: (Node('Yellow', Node('abc', Node('$7.25', Node('[50 chars]None) != (Node('abc', Node('Ethan', None)), Node('Yellow'[50 chars]ne)))
Может кто-нибудь выяснить проблему? Я был бы благодарен.