Python 返回语句未执行

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

嘿,伙计们,我有一个问题,就是我的返回语句没有执行。 这是我的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
    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
a
return 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
a
return 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语句。其他地方可能有错误。你试过使用我的代码吗?