想问一下为什么这个运行不了,报错也不太理解
想问一下为什么这个运行不了,报错也不太理解这是python2的写法,python3的print要写括号
改成 print(binary_search(my_list, 3))
isdkz 发表于 2023-6-7 10:57
这是python2的写法,python3的print要写括号
改成 print(binary_search(my_list, 3))
嗯 我试了一下,但是运行之后,并没有return结果,但确实这次不报错了 pionrrt 发表于 2023-6-7 11:02
嗯 我试了一下,但是运行之后,并没有return结果,但确实这次不报错了
因为你的缩进错了
my_list=
print(binary_search(my_list, 3))
这两行应该要放在函数外面的
isdkz 发表于 2023-6-7 11:03
因为你的缩进错了
def binary_search(list, item):
low = 0
high=len(list)-1
while low<=high:
mid=(low + high)
guess=list
if guess==item:
return mid
if guess>item:
high=mid-1
else:
low=mid+1
return None
my_list=
print(binary_search(my_list, 7))
还想问一下,mid=(low + high)这里为什么不除以2呢,我 输入 mid=(low + high)/2再运行代码就是错的 pionrrt 发表于 2023-6-7 14:07
还想问一下,mid=(low + high)这里为什么不除以2呢,我 输入 mid=(low + high)/2再运行代码就是错的
你在计算mid的时候应该要除以2,以得到中间位置的索引。但在Python中,除法运算符"/"会产生浮点数结果,而在索引中我们需要的是整数,因此你应该使用"//"来进行整数除法。
所以,你的代码应该如下修正:
def binary_search(list, item):
low = 0
high=len(list)-1
while low<=high:
mid=(low + high) // 2#使用了"//"来进行整数除法
guess=list
if guess==item:
return mid
if guess>item:
high=mid-1
else:
low=mid+1
return None
my_list=
print(binary_search(my_list, 7))
这样你的代码应该就可以正确运行了。
页:
[1]