Python 返回语句未执行
嘿,伙计们,我有一个问题,就是我的返回语句没有执行。 这是我的sudo代码。它搜索树以查看树中是否有项Python 返回语句未执行,python,Python,嘿,伙计们,我有一个问题,就是我的返回语句没有执行。 这是我的sudo代码。它搜索树以查看树中是否有项 def search(self, i): if left child is None and right child is None if self.data == i: return True else: pass elif self.data == i: return True
def search(self, i):
if left child is None and right child is None
if self.data == i:
return True
else:
pass
elif self.data == i:
return True
else:
if left child exists:
return self.left.search(i)
if right child exists:
return self.right.search(i)
代码似乎可以工作,除非当self.data==i
时,即使
执行if语句。有人知道这是为什么吗?
提前谢谢
编辑:添加了SELF参数。本来应该在那儿的,是个打字错误
我将数字3、8、2和1插入到树中,然后搜索1。我添加了一个print语句,如果left child为None,right child为None:if self.data==I:print('self.data==I')返回True我在搜索1时添加了该print语句,但print语句没有打印,这意味着执行了if语句,return True语句不执行我想您正在尝试进行二进制搜索,在这种情况下,代码中会出现一些问题。返回语句可能未执行,因为条件
self.data==i
失败。另外,请注意,如果根具有左子级,则在原始代码中永远不会看到右子级
这是一个线性搜索的实现,我将把它作为一个练习,将其修改为二进制搜索
def search(self, i):
if self.data == i:
return True
if self.left is not None:
if self.left.search(i):
return True
if self.right is not None:
return self.right.search(i)
return False
我想您正在尝试进行二进制搜索,在这种情况下,代码中会出现一些问题。返回语句可能未执行,因为条件
self.data==i
失败。另外,请注意,如果根具有左子级,则在原始代码中永远不会看到右子级
这是一个线性搜索的实现,我将把它作为一个练习,将其修改为二进制搜索
def search(self, i):
if self.data == i:
return True
if self.left is not None:
if self.left.search(i):
return True
if self.right is not None:
return self.right.search(i)
return False
除非您提供用例,否则我们无法判断您的问题是什么。我的倾向是,
i
或self.data
不是您所认为的,因此您的条件值是False
,而您并不认为它是。试着让pass
areturn False
代替,看看你得到了什么。请提供一个Hm no,我在树中插入了数字3、8、2和1,然后搜索1。我添加了一个print语句,如果left child为None,right child为None:if self.data==I:print('self.data==I')返回True我在搜索1时添加了该print语句,但print语句没有打印,这意味着执行了if语句,return True语句不会执行。除非您提供用例,否则我们无法判断您的问题是什么。我的倾向是,i
或self.data
不是您所认为的,因此您的条件值是False
,而您并不认为它是。试着让pass
areturn False
代替,看看你得到了什么。请提供一个Hm no,我在树中插入了数字3、8、2和1,然后搜索1。我添加了一个print语句,如果left child为None,right child为None:if self.data==I:print('self.data==I')返回True我在搜索1时添加了该print语句,但print语句没有打印,这意味着执行了if语句,return-True语句没有执行。很抱歉,它应该在那里。那是个打字错误。即使我有它也不起作用。否,我将数字3、8、2和1插入树中,然后搜索1。我添加了一个print语句,如果left child为None,right child为None:if self.data==I:print('self.data==I')返回True我在搜索1时添加了该print语句,但print语句没有打印,这意味着执行了if语句,return True语句不执行如何验证return语句不执行?因为当我打印(True)时,它打印“True”。我知道它实际上进入了if语句,因为我使用了print('a')来检查它。但是,当我将print更改为return时,它不会返回“True”,您应该使用pdb进行调试。如果打印消息,则执行return语句。其他地方可能有错误。你试过使用我的密码吗?很抱歉,它应该在那里。那是个打字错误。即使我有它也不起作用。否,我将数字3、8、2和1插入树中,然后搜索1。我添加了一个print语句,如果left child为None,right child为None:if self.data==I:print('self.data==I')返回True我在搜索1时添加了该print语句,但print语句没有打印,这意味着执行了if语句,return True语句不执行如何验证return语句不执行?因为当我打印(True)时,它打印“True”。我知道它实际上进入了if语句,因为我使用了print('a')来检查它。但是,当我将print更改为return时,它不会返回“True”,您应该使用pdb进行调试。如果打印消息,则执行return语句。其他地方可能有错误。你试过使用我的代码吗?