Python TypeError:/:';列表';和';int';
我正在进行二进制搜索,发现以下错误: TypeError:/:“list”和“int”的操作数类型不受支持 下面是有问题的代码:Python TypeError:/:';列表';和';int';,python,python-3.6,Python,Python 3.6,我正在进行二进制搜索,发现以下错误: TypeError:/:“list”和“int”的操作数类型不受支持 下面是有问题的代码: def binary_search(arr,val): if len(arr)==0 or len(arr)==1 and arr[0]!=val: return false mid=arr[len(arr)//2] if val==mid: return true if val<mid:
def binary_search(arr,val):
if len(arr)==0 or len(arr)==1 and arr[0]!=val:
return false
mid=arr[len(arr)//2]
if val==mid:
return true
if val<mid:
return binary_search(len(arr//2,val))
if val>mid:
return binary_search(len(arr//2+1,val))
arr=[1,2,3,4,5,6]
print(binary_search(arr,3))
def二进制搜索(arr,val):
如果len(arr)==0或len(arr)==1且arr[0]=瓦尔:
返回错误
mid=arr[len(arr)//2]
如果val==mid:
返回真值
如果是valmid:
返回二进制搜索(len(arr//2+1,val))
arr=[1,2,3,4,5,6]
打印(二进制搜索(arr,3))
如何解决此问题?使用
arr//2
,您将arr
列表除以2
,导致异常。您应该将arr
的一部分传递给递归函数:
def binary_search(arr,val):
if len(arr)==0 or len(arr)==1 and arr[0]!=val:
return False
mid=arr[len(arr)//2]
if val==mid:
return True
if val<mid:
return binary_search(arr[:len(arr)//2],val)
if val>mid:
return binary_search(arr[len(arr)//2+1:],val)
arr=[1,2,3,4,5,6]
print(binary_search(arr,3))
def二进制搜索(arr,val):
如果len(arr)==0或len(arr)==1且arr[0]=瓦尔:
返回错误
mid=arr[len(arr)//2]
如果val==mid:
返回真值
如果是valmid:
返回二进制搜索(arr[len(arr)//2+1:],val)
arr=[1,2,3,4,5,6]
打印(二进制搜索(arr,3))
当您在返回二进制搜索(len(arr//2,val))
中进行递归调用时,您试图在数组的一半上进行递归调用。在python中,不能像那样分割数组。获取类似于arr[0:len(arr)//2]的子数组。true和false中也存在语法错误