Python 哈夫曼编码错误
我正在尝试实现哈夫曼编码算法 我已经编写了以下代码Python 哈夫曼编码错误,python,huffman-code,Python,Huffman Code,我正在尝试实现哈夫曼编码算法 我已经编写了以下代码 def make_leaf(symbol,weight): return (symbol,weight) def is_leaf(x): return isinstance(x,tuple) and \ len(x)==2 and \ isinstance(x[0],str) and \ isinstance(x[1],int) def get_leaf_sy
def make_leaf(symbol,weight):
return (symbol,weight)
def is_leaf(x):
return isinstance(x,tuple) and \
len(x)==2 and \
isinstance(x[0],str) and \
isinstance(x[1],int)
def get_leaf_symbol(leaf):
return leaf[0]
def get_leaf_freq(leaf):
return leaf[1]
def get_left_branch(huff_tree):
return huff_tree[0]
def get_right_branch(huff_tree):
return huff_tree[1]
def get_symbols(huff_tree):
if is_leaf(huff_tree):
return [get_leaf_symbol(huff_tree)]
else:
return huff_tree[2]
def get_freq(huff_tree):
if is_leaf(huff_tree):
return get_leaf_freq(huff_tree)
else:
huff_tree[3]
def make_huffman_tree(left_branch,right_branch):
return [left_branch,
right_branch,
get_symbols(left_branch) + get_symbols(right_branch),
get_freq(left_branch) + get_freq(right_branch)]
但是,当我试图通过编写以下代码来构建二叉树时
ht01 = make_huffman_tree(make_leaf('A', 4),
make_huffman_tree(make_leaf('B',2),
make_huffman_tree(make_leaf('D', 1),
make_leaf('C', 1))))
我得到一个类似这样的错误:
Traceback (most recent call last):
File "C:\Users\Swadesh\Documents\Anmol\Python\huffman trial.py", line 47, in <module>
make_leaf('C', 1))))
File "C:\Users\Swadesh\Documents\Anmol\Python\huffman trial.py", line 41, in make_huffman_tree
get_freq(left_branch) + get_freq(right_branch)]
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
回溯(最近一次呼叫最后一次):
文件“C:\Users\Swadesh\Documents\Anmol\Python\huffman-trial.py”,第47行,在
做叶子('C',1)))
文件“C:\Users\Swadesh\Documents\Anmol\Python\huffman-trial.py”,第41行,在make\u-huffman\u树中
获取频率(左分支)+获取频率(右分支)]
TypeError:不支持+:'int'和'NoneType'的操作数类型
我不知道如何解决这个错误。有人能帮我吗
谢谢您的get\u freq()函数的最后一行缺少一个“return” 如果没有从函数返回任何内容,Python将使用None作为返回值
然后,当您尝试在加法中使用此返回值时,您会收到所发布的错误(不能将“无”添加到整数)。您的get\u freq()函数的最后一行缺少“return” 如果没有从函数返回任何内容,Python将使用None作为返回值 然后,当您尝试在加法中使用此返回值时,您将得到所发布的错误(不能将“无”添加到整数)