【问题标题】:Python: Function printing boolean return values [duplicate]Python:打印布尔返回值的函数[重复]
【发布时间】:2017-05-03 06:50:05
【问题描述】:

我正在处理 python 中的一个小问题。这就是问题 -

给定一个整数数组,如果数组包含 6,则递归计算。我们将使用只考虑数组中从给定索引开始的部分的约定。这样,递归调用可以通过 index+1 向下移动数组。初始调用将传入索引为 0。

array6([1, 6, 4], 0) → true
array6([1, 4], 0) → false
array6([6], 0) → true

这是我想出的解决方案。

def array6(intList, index):
    if len(intList) < index + 1:
        print(False)
    else:
        if intList[index] == 6:
            print(True)
        else:
            array6(intList, index + 1)

脚本似乎可以正常工作,除非我将 print 更改为 return 语句并将其称为: print(array6([1, 6, 4], 0)) 它在控制台中显示“None”。为什么是这样?理想情况下,它应该显示 True 或 False - 对吗?还是我在脚本中遗漏了什么?

【问题讨论】:

  • 您很可能忘记返回array6。你能告诉我们return的代码吗?

标签: python recursion


【解决方案1】:

所有 Python 函数都会返回一些东西。如果您没有显式返回,则返回值为 None。你没有返回任何东西,但你很接近:

def array6(intList, index):
    if len(intList) < index + 1:
        return False
    else:
        if intList[index] == 6:
            return True
        else:
            return array6(intList, index + 1)

此外,您可以像这样删除一定程度的缩进

def array6(intList, index):
    if len(intList) < index + 1:
        return False
    if intList[index] == 6:
        return True
    return array6(intList, index + 1)

任何时候if 中包含return,您都可以删除关注else 并删除,因为该函数已经返回。

【讨论】:

    【解决方案2】:

    您似乎忘记了return 函数array6(intList, index+1)。在递归函数中,if-else-if 链的所有块都返回一些东西是至关重要的。只要函数没有返回任何东西,你就会得到一个None。

    这就是整个代码的样子——(看看评论就知道你哪里出错了)

    def array6(intList, index):
        if len(intList) < index + 1:
            return False
        else:
            if intList[index] == 6:
                return True
            else:
                # you forgot the return here
                return array6(intList, index + 1)
    

    【讨论】:

      【解决方案3】:

      当执行移动到最里面的else语句时,没有找到return语句,所以假设None。

      为了解决这个问题,请执行以下操作:

      return array6(intList, index + 1)
      

      【讨论】:

        猜你喜欢
        • 2013-07-02
        • 2019-10-14
        • 2013-11-07
        • 1970-01-01
        • 1970-01-01
        • 2019-06-14
        • 1970-01-01
        • 2021-10-29
        • 2013-03-11
        相关资源
        最近更新 更多