夕阳袅袅 发表于 2023-1-6 13:58:46

请问为什么会出现list assignment index out of range

class TreeNode(object):
    def __init__(self, data):
      self.data = data
      self.children = []
    def add_child(self, obj):
      self.children.append(obj)
#四层结构
class Tree_4(object):
    def __init__(self, text):
      self.root = TreeNode(text)
    def preorder_trav(self):
      if self.root.data ==None :
            print("文本无内容!!")
      else:
            #分段
            a=[]
            a=self.root.data.split("\n")
            for i in a:
                self.root.add_child(i)
            print(self.root.children)
            #分句
            node1=[]
            node2=[]
            for i in range(len(self.root.children)):
                print(len(self.root.children),"mmm")
                node1=TreeNode(self.root.children)
                node1.add_child(node1.data.split("。"))
            for i in range(len(node1)):
                print(node1)
                #分短语
                # node2=[]
                # for j in range(len(node1.children)):
                #   node2 = TreeNode(node1.children)
                #   node2
if __name__=="__main__":
    with open(r"知识文本.txt", "r", encoding="utf-8") as f:
      text = f.read()
    tr=Tree_4 (text)
    tr.preorder_trav()

KeyError 发表于 2023-1-6 14:48:47

方便复制:
class TreeNode(object):
    def __init__(self, data):
      self.data = data
      self.children = []
    def add_child(self, obj):
      self.children.append(obj)
#四层结构
class Tree_4(object):
    def __init__(self, text):
      self.root = TreeNode(text)
    def preorder_trav(self):
      if self.root.data ==None :
            print("文本无内容!!")
      else:
            #分段
            a=[]
            a=self.root.data.split("\n")
            for i in a:
                self.root.add_child(i)
            print(self.root.children)
            #分句
            node1=[]
            node2=[]
            for i in range(len(self.root.children)):
                print(len(self.root.children),"mmm")
                node1=TreeNode(self.root.children)
                node1.add_child(node1.data.split("。"))
            for i in range(len(node1)):
                print(node1)
                #分短语
                # node2=[]
                # for j in range(len(node1.children)):
                #   node2 = TreeNode(node1.children)
                #   node2
if __name__=="__main__":
    with open(r"知识文本.txt", "r", encoding="utf-8") as f:
      text = f.read()
    tr=Tree_4 (text)
    tr.preorder_trav()

isdkz 发表于 2023-1-6 16:14:28

好歹把你的文本放出来给别人才好帮你调试嘛

chinajz 发表于 2023-1-8 21:34:46

程序可以正常运行的

夕阳袅袅 发表于 2023-1-11 12:05:00

isdkz 发表于 2023-1-6 16:14
好歹把你的文本放出来给别人才好帮你调试嘛

  在过去的工程实践中,领域专家积累了大量知识和经验,这些知识能够对高维设计空间进行有效约减,实现采样数据的效用最大化,但由于流动机理复杂多变,知识的类型多样,缺乏有效的表征方法。
  本课题将气动知识从宏观到微观分为4个层次,如图 1所示,在第一个层次中,描述映射关系的基本属性,设计参数与设计目标之间映射关系的属性,例如,映射关系是否连续、有无突变、呈线性或非线性关系等;第二个层次用于描述特定设计变量与性能之间的单调关系,这种气动知识较为常见,领域专家很容易表达出来,例如法向力会随着攻角的增大而增大,但随着马赫数的增大而降低;第三个层次比第二个层次复杂得多,描述了特定特征和目标之间的形状关系,例如在攻角变化过程中,气动参数会以以L型降低,斜率也会发生一定变化;第四层,最后一个层次用于描述多个特征和目标之间的经验关系,即输入参数和输出参数之间的完整关系式,例如气动外形和气动力之间的经验公式。
  

夕阳袅袅 发表于 2023-1-11 12:05:39

chinajz 发表于 2023-1-8 21:34
程序可以正常运行的

但是为什么我的会出现超出范围呢

夕阳袅袅 发表于 2023-1-11 12:06:16

夕阳袅袅 发表于 2023-1-11 12:05
  在过去的工程实践中,领域专家积累了大量知识和经验,这些知识能够对高维设计空间进行有效约减,实现 ...

不好意思{:5_105:}

isdkz 发表于 2023-1-11 18:24:13

稍微改了一下:
class TreeNode(object):
    def __init__(self, data):
      self.data = data
      self.children = []
    def add_child(self, obj):
      if obj:
            self.children.append(obj)

#四层结构
class Tree_4(object):
    def __init__(self, text):
      self.root = TreeNode(text)
    def preorder_trav(self):
      if self.root.data == '' :         # 这里把 None 改成 ''
            print("文本无内容!!")
      else:
            #分段
            a=self.root.data.split("\n")
            for i in a:
                self.root.add_child(i.strip())
            #分句
            self.node = []
            for c in self.root.children:
                self.node.append(TreeNode(c))
            for n in self.node:
                for i in n.data.split("。"):
                  n.add_child(i)
                print(n.children)
                #分短语
                # node2=[]
                # for j in range(len(node1.children)):
                #   node2 = TreeNode(node1.children)
                #   node2
if __name__=="__main__":
    with open(r"知识文本.txt", "r", encoding="utf-8") as f:
      text = f.read()
    tr=Tree_4 (text)
    tr.preorder_trav()
页: [1]
查看完整版本: 请问为什么会出现list assignment index out of range