奇怪的错误在某些情况下返回不起作用

时间:2017-10-19 15:29:12

标签: python return binary-search

所以我有一个奇怪的问题,假设很简单: 返回与打印

我正在练习二进制搜索的编码

def binary_search(data, n):
if len(data) == 0:
    return False
x = (len(data))//2
if data[x] == n:
    #The following line seems to be the problem
    return x
elif n < data[x]:
    binary_search(data[:x], n)
else:
    binary_search(data[x+1:], n)]
z = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
print(binary_search(z, 9))

返回None

如果我从返回x切换 - &gt;打印(x)的

# CODE CODE CODE      
print(x)
#CODE CODE CODE

print(binary_search(z, 9))

返回

2
None

我知道二进制搜索本身有效(2是正确的答案)而且“无”#39;无来自两个打印语句,但只有一个打印语句

 # CODE CODE CODE      
 return x
 #CODE CODE CODE
 print(binary_search(z, 9))

它只打印无

知道为什么会这样吗?除非我问

,否则我不希望该方法自动打印

另一个奇怪的事情是

 #ORIG CODE
 return False
 #ORIG CODE

 y = []
 print(binary_search(y, 9))

返回

False

所以在那种情况下&#39;返回&#39;表现得像我期待的那样

我甚至尝试切换返回x以返回True,它仍然返回None

0 个答案:

没有答案