В рамках школьного задания мне нужно кодировать алгоритм Хаффмана, и у меня возникла проблема с одной из моих переменных, и я не понимаю, почему.
def encodedata(huffmanTree, dataIN):
"""
Encodes the input string to its binary string representation.
"""
binresult = ""
for i in dataIN:
tmp = _encodedata(huffmanTree, i, '') # NoneType ??
binresult = binresult + tmp
return binresult
def _encodedata(tree, char, val):
if tree.key == char:
return val # val is str
if tree.key == None:
_encodedata(tree.right, char, val + '1')
_encodedata(tree.left, char, val + '0')
В моей вторичной функции val является строкой (для уверенности, что используется тип (val)), но в моей основной функции tmp имеет тип 'NoneType', тогда как он должен совпадать с val ...
РЕДАКТИРОВАТЬ : Я изменил всю свою функцию, и она работает.Вот версия, которую я отправлю:
def encodedata(huffmanTree, dataIN):
"""
Encodes the input string to its binary string representation.
"""
result = ''
L = _encodedata(huffmanTree, '', [])
for i in dataIN:
for j in L:
if i == j[0]:
result = result + j[1]
return result
def _encodedata(tree, val, L):
if tree.key != None:
L.append((tree.key, val))
else:
_encodedata(tree.right, val + '1', L)
_encodedata(tree.left, val + '0', L)
return L
Однако я все равно был бы благодарен за объяснение, почему мой предыдущий код не работает.Спасибо за тех, кто помог.