Runtime error 在python 3.7中学习二进制搜索

Runtime error 在python 3.7中学习二进制搜索,runtime-error,binary-search,python-3.7,Runtime Error,Binary Search,Python 3.7,我在电脑上找到了这个密码 然而,当我运行它时,我遇到了这个问题:TypeError:列表索引必须是整数或片,而不是浮点 我不知道该怎么做。我试图将整个数组设置为int,但不起作用,或者用int替换x,也不起作用 有什么建议吗 问题在这一行: mid = l + (r - l)/2; 在Python3中,/进行浮点除法,而由于mid用作数组索引,它需要是整数。要进行整数除法,请使用/ mid = l + (r - l) // 2; 对函数的调用还有另一个问题: result = binaryS

我在电脑上找到了这个密码

然而,当我运行它时,我遇到了这个问题:TypeError:列表索引必须是整数或片,而不是浮点 我不知道该怎么做。我试图将整个数组设置为int,但不起作用,或者用int替换x,也不起作用


有什么建议吗

问题在这一行:

mid = l + (r - l)/2;
在Python3中,/进行浮点除法,而由于mid用作数组索引,它需要是整数。要进行整数除法,请使用/

mid = l + (r - l) // 2;
对函数的调用还有另一个问题:

result = binarySearch(arr, 0, len(arr) - 1, int)
最后一个参数不应为int,而应为x(您正在搜索的变量):


当您传入int作为最后一个参数时,您将得到一个错误TypeError:unorderable types:int()>type()

l+(r-l)/2
为float。试试四舍五入。好吧,让我试试。感谢刚刚尝试过,现在我得到的是错误:TypeError:“>”在“int”和“type”的实例之间不受支持。好的,只是我做了这些更改,现在可以工作了。非常感谢你。
result = binarySearch(arr, 0, len(arr) - 1, int)
result = binarySearch(arr, 0, len(arr) - 1, x)