python return none 而不是 True/False
python return none instead of True/False
我在 Python
中有两个使用二进制搜索进行搜索的程序
计划 1:
def bin(alist,x):
if len(alist)==0:
return False
else:
mid=len(alist)//2
if (alist[mid]==x):
return True
else:
if alist[mid] < x:
#print(alist[mid+1:],x)
bin(alist[mid+1:],x)
else:
#print(alist[:mid],x)
bin(alist[:mid],x)
print (bin([2,3,5,8,9],8))
print (bin([2,3,5,8,9],7))
程序输出:
None
None
计划 2:
def bin(alist,x):
if len(alist)==0:
return False
else:
mid=len(alist)//2
if (alist[mid]==x):
return True
else:
if alist[mid]<x:
return bin(alist[mid+1:],x)
else:
return bin(alist[:mid],x)
print(bin([1,5,7,8,9],10))
print(bin([1,4,5,8,9],8))
程序输出:
False
True
为什么会这样?
在你的程序1中,只有当列表为空或者你要搜索的值在列表中间时,它才会return你的布尔值,那是因为你明确地说return
如果len(alist)==0
和return True
满足if (alist[mid]==x):
,其余条件也一样
def bin(alist,x):
if len(alist)==0:
return False
else:
mid=len(alist)//2
if (alist[mid]==x):
return True
else:
if alist[mid] < x:
#print(alist[mid+1:],x)
bin(alist[mid+1:],x) # -------> return
else:
#print(alist[:mid],x)
bin(alist[:mid],x) # -------> return
当您递归调用 bin()
方法并期望得到一个布尔值时,您必须在上面突出显示的行中添加 return。
我在 Python
中有两个使用二进制搜索进行搜索的程序计划 1:
def bin(alist,x):
if len(alist)==0:
return False
else:
mid=len(alist)//2
if (alist[mid]==x):
return True
else:
if alist[mid] < x:
#print(alist[mid+1:],x)
bin(alist[mid+1:],x)
else:
#print(alist[:mid],x)
bin(alist[:mid],x)
print (bin([2,3,5,8,9],8))
print (bin([2,3,5,8,9],7))
程序输出:
None
None
计划 2:
def bin(alist,x):
if len(alist)==0:
return False
else:
mid=len(alist)//2
if (alist[mid]==x):
return True
else:
if alist[mid]<x:
return bin(alist[mid+1:],x)
else:
return bin(alist[:mid],x)
print(bin([1,5,7,8,9],10))
print(bin([1,4,5,8,9],8))
程序输出:
False
True
为什么会这样?
在你的程序1中,只有当列表为空或者你要搜索的值在列表中间时,它才会return你的布尔值,那是因为你明确地说return
如果len(alist)==0
和return True
满足if (alist[mid]==x):
,其余条件也一样
def bin(alist,x):
if len(alist)==0:
return False
else:
mid=len(alist)//2
if (alist[mid]==x):
return True
else:
if alist[mid] < x:
#print(alist[mid+1:],x)
bin(alist[mid+1:],x) # -------> return
else:
#print(alist[:mid],x)
bin(alist[:mid],x) # -------> return
当您递归调用 bin()
方法并期望得到一个布尔值时,您必须在上面突出显示的行中添加 return。