【问题标题】:Python return None instead of value [duplicate]Python返回None而不是值[重复]
【发布时间】:2018-06-25 00:42:03
【问题描述】:

我正在尝试在这里实现一个非常简单的二进制搜索问题:返回一个数组的索引,该索引是给定目标的加/减一。

但是,当我执行此代码时,我的结果始终为 None。 Python 似乎没有捕捉到我的返回值。

这是我的代码:

class Solution:
        def closestNumber(self, A, target):
        if len(A) == None:
            return -1

        if target - 1 > A[-1] or target + 1 < A[0]:
            return -1

        result = self.BinarySearch(0,len(A), A, target)
        return result

def BinarySearch(self,startIndex, endIndex, A, target):
    if startIndex > endIndex:
        return -1

    mid = (startIndex + endIndex)//2
    print(mid)
    if target == A[mid]:
        return mid

    if target + 1 == A[mid] or target - 1 == A[mid]:
        return mid

    if target + 1 > A[mid]:
        self.BinarySearch(mid, endIndex, A, target)

    if target - 1 < A[mid]:
        self.BinarySearch(startIndex, mid, A, target)


print(Solution().closestNumber([1,4,6,10,20],21))

任何帮助将不胜感激!

谢谢!

【问题讨论】:

  • 确保你的缩进是正确的。
  • 您没有返回递归调用的结果。你的缩进也很远。

标签: python


【解决方案1】:

您的代码的递归调用分支中缺少 2 个返回语句:

if target + 1 > A[mid]:
    return self.BinarySearch(mid, endIndex, A, target)

if target - 1 < A[mid]:
    return self.BinarySearch(startIndex, mid, A, target)

【讨论】:

  • 显然我没有从这两个分支返回任何东西,这两个分支都返回 None。感谢 Netwave!
  • @AmandaZhu,如果没有显式返回任何内容,每个 python 函数都默认返回 None
猜你喜欢
  • 2019-05-08
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多