def binary_search(li, targetValue):
low, high = 0, len[li] #error on this line
while low <= high:
mid = (high - low)/2
if li[mid] == targetValue:
return "we found it!"
elif li[mid] > targetValue:
low = mid - 1;
elif li[mid] < targetValue:
high = mid + 1;
print "search failure "
最近刚发布了这个问题,但我的代码仍然不起作用?
答案 0 :(得分:8)
您使用的是错误的括号len(li)
而不是len[li]
请记住,当您尝试访问某个功能时,如果使用function(args)
,则需要使用[]
,实际上您正在访问类似列表的序列。 your_list[index]
。 len是内置函数,因此您需要()
答案 1 :(得分:4)
len
是一个内置函数,但您尝试将其用作序列:
len[li]
改为调用函数:
len(li)
注意那里的形状变化,索引是用方括号完成的,调用是用圆括号完成的。
答案 2 :(得分:2)
Python使用(...)
来调用函数,使用[...]
来索引集合。此外,您现在要做的是索引内置函数len
。
要解决此问题,请使用括号代替方括号:
low, high = 0, len(li)
答案 3 :(得分:0)
我花了几分钟才弄明白这是什么错误。 有时候一个盲点阻止你看清楚。
不正确的
msg = "".join['Temperature out of range. Range is between', str(
HeatedRefrigeratedShippingContainer.MIN_CELSIUS), " and ", str(
RefrigeratorShippingContainer.MAX_CELSIUS)]
正确
msg = "".join(['Temperature out of range. Range is between', str(
HeatedRefrigeratedShippingContainer.MIN_CELSIUS), " and ", str(
RefrigeratorShippingContainer.MAX_CELSIUS)])
正如您所看到的,join是一种方法,必须使用()调用,该方法丢失并导致问题。希望它能帮助所有人查找方法并添加()。