【问题标题】:Python Program keeps returning FalsePython程序不断返回False
【发布时间】:2015-06-25 10:39:43
【问题描述】:

我的程序一直返回 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

【问题讨论】:

  • 您在 while 循环中返回 False 。因此,在 for 循环完成后,它将始终返回 False。
  • 显示您的示例输入,返回 True(您期望)

标签: python loops return


【解决方案1】:

您的函数在return False 之后不会继续,这就是它总是这样做的原因。

【讨论】:

    【解决方案2】:

    据我了解,这是一个递归函数(您省略了标题)。因此,您的代码不会返回任何递归调用的返回值。对比一下:

    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 中的任何位置,则返回 False,或者 route 的最后一个元素与 target 的最后比较结果,由 @ 表示987654326@.

    【讨论】:

    • """ 返回第一条路线的每条道路是否包含在目标路线中。应尊重路线的顺序,但不一定要连续使用道路。(例如:[ “AB”、“BC”、“CD”]包含在[“ZA”、“AX”、“XA”、“AB”、“BY”、“YW”、“WY”、“YB”、“BC”中", "CD"])""" --> 应该为真
    • 正如 user1016274 解释的那样,我忘记了递归语句之前的“返回”,现在它可以工作了......非常感谢!
    • 不客气,很高兴它对你有用。如果你能接受我的回答,我会很高兴。
    【解决方案3】:

    在 return 语句之后,您的函数不会继续。

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

    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
    

    【讨论】:

      猜你喜欢
      • 2015-07-24
      • 1970-01-01
      • 2022-01-24
      • 2021-02-13
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多