gpt4 book ai didi

python返回值遇到error.help me

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:47 28 4
gpt4 key购买 nike

很抱歉,我在 python 程序中遇到了一个尴尬的问题。首先我是这里的新手,我是一名中国学生。请原谅我糟糕的英语。我会尽力把问题表达清楚。

错误代码在这里:

        def __find__(self,node,value):
if value<node.v:
self.__find__(node.l,value)
elif value>node.v:
self.__find__(node.r,value)
elif value==node.v:
return node.obj

def Find(self,value):
obj=self.__find__(self.r,value)
print obj
return obj

当我在 find 函数中打印 node.obj 时它运行良好,但是当我在 Find 函数中打印 obj 时,它返回 None。
这个问题困扰了我一整天。如果有人能解决它,将不胜感激。

谢谢你

完整代码在这里:我只写BTS树:

    ####class####

class BSTtreeNode:
def __init__(self,lnode=None,rnode=None,parent=None,value=None,obj=None):
self.l=lnode
self.r=rnode
self.p=parent
self.v=value
self.obj=obj


class BSTree:
def __init__(self,RootNode=None):
self.r=RootNode
def Insert(self,value,obj):
self.__insert__(self.r,value,obj)
def __insert__(self,node,value,obj):
if value<=node.v:
if node.l==None:
localnode=BSTtreeNode(lnode=None,rnode=None,parent=node,value=value,obj=obj)
node.l=localnode
elif node.l!=None:
self.__insert__(node.l,value,obj)
if value>node.v:
if node.r==None:
localnode=BSTtreeNode(lnode=None,rnode=None,parent=node,value=value,obj=obj)
node.r=localnode
elif node.r!=None:
self.__insert__(node.r,value,obj)

def __find__(self,node,value):
if value<node.v:
self.__find__(node.l,value)
elif value>node.v:
self.__find__(node.r,value)
elif value==node.v:
return node.obj

def Find(self,value):
obj=self.__find__(self.r,value)
print obj
return obj
def Print(self):
self.__printTree__(self.r)

def __printTree__(self,node):
if node.l==None and node.r==None:
print node.v,node.obj
return
elif node.r != None:
self.__printTree__(node.r)
elif node.l !=None:
self.__printTree__(node.l)
print node.v,node.obj


def main():
mNode=BSTtreeNode(value=10,obj="first")
bstree=BSTree(RootNode=mNode)
bstree.Insert(value=20,obj="second")
bstree.Insert(30,obj="second")
bstree.Print()
bstree.Find(value=20)

if __name__ =="__main__":
main()

最佳答案

您的 __find__ 函数中缺少一些 return。将两次出现的 self.__find__(...) 更改为 return self.__find__(...)

def __find__(self, node, value):
if value < node.v:
return self.__find__(node.l, value)
elif value > node.v:
return self.__find__(node.r, value)
elif value == node.v:
print node.obj
return node.obj

def Find(self, value):
obj = self.__find__(self.r, value)
print obj
return obj

您再次调用该函数,但没有返回值。由于您没有显式返回值,因此隐式返回 None

关于python返回值遇到error.help me,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16642315/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com