风起云间林 2021-11-06 00:18 采纳率: 100%
浏览 59
已结题

python,要求输入对应字符和概率,求哈夫曼编码。

这个报错告诉对象没有属性root,但我在_init_不是写过了吗,刚学习类,不太清楚,疑惑。

img

img

完整代码如下

char_get=input().split( )#储存字母名称
percent=input().split()#储存概率
percent=[int(percent[i])for i in range(len(percent))]
length=len(percent)#有多少个字符

class Nodecreate(object):
    def _init_(self,name=None,pro=None):
        self.name=name
        self.pro=pro
        self.left=None
        self.right=None
class Huffman(object):
    def _init_(self):
        self.list=[Nodecreate(char_get(i),percent(i)) for i in range(length)]#建立列表,用来进行比较概率。

        while(self.list)!=1:#当只剩根节点时停止运行
            self.list.sort(key=lambda x:x.pro)#从小到大排序
            self.new=Nodecreate(pro=(self.list[0].pro+self.list[1].list))#新的节点pro之和

            self.new.left=self.list.pop(0)#左节点为列表第一个节点
            self.new.right=self.list.pop(0)#右节点为现在第一个
            self.list.append(self.list)
        self.root=self.list[0]#储存根节点

        self.myth=[0 for i in range (10)]
    def order(self,now_tree,myth_length):#遍历得到huffman编码
        now_node=now_tree
        if now_node.name==None:
            return
        else:
            print(now_node.name,end="")
            for i in range (myth_length):
                print(self.myth[i],end="")
            return
        self.myth[myth_length]=0
        self.order(now_node.left,myth_length+1)
        self.myth[myth_length] = 1
        self.order(now_node.right, myth_length + 1)
    def from_print(self):
        self.order(self.root,0)

tree=Huffman()
tree.from_print()

  • 写回答

1条回答 默认 最新

  • 关注

    def __init__(self,name=None,pro=None):
    __init__ 应该是两边各有两个_下划线
    你写的是只有一个下划线_init_

    如有帮助,望采纳!谢谢! 请点击下我回答下方的采纳该回答按钮。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月14日
  • 已采纳回答 11月6日
  • 创建了问题 11月6日

悬赏问题

  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!