Python程序一直返回False

时间:2015-04-18 14:16:19

标签: python loops return

我的程序一直返回False,即使它已经返回True。有人知道我做错了什么以及如何解决这个问题?

(route and target are both lists)



while len(route) > 1:
        for id in range(len(target)):
            if route[0] == target[id]:
                 route_is_contained_in_other_route(route[1:],target[id+1:])
        return False
if len(route)==1:
      if route[0] in target:
        return True
      else:
        return False

3 个答案:

答案 0 :(得分:0)

return False之后,您的功能无法继续,这就是为什么它始终如此。

答案 1 :(得分:0)

据我所知,这是一个递归函数(你遗漏了标题)。因此,您的代码不会返回任何递归调用的返回值。与此相比:

def route_is_contained_in_other_route(route, target):
    while len(route) > 1:
        for id in range(len(target)):
            if route[0] == target[id]:
                return route_is_contained_in_other_route(route[1:], target[id+1:])
    return False
if len(route) == 1:
    return route[0] in target

因此,如果route中当前比较的target元素未包含在route中的任何位置,或者target的最后一个元素与{的最后一次比较结果,则返回False {1}},由len(route) == 1发出信号。

答案 2 :(得分:0)

在返回语句后,您的函数不会继续。

但是没有一个例子,很难说,这个函数应该是什么样的。 如果我不得不猜测,我想说的可能是:

while len(route) > 1:
        for id in range(len(target)):
            if route[0] == target[id]:
                 route_is_contained_in_other_route(route[1:],target[id+1:])
                 return True
        return False
if len(route)==1:
      if route[0] in target:
        return True
      else:
        return False