2013-11-14 37 views
1
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 " 

最近刚发布了这个问题,但我的代码仍然不起作用?'builtin_function_or_method'对象不可自订

+0

当len()是一个内置函数来计算一个对象的长度时,你不能写'len [li]'。 –

回答

4

您使用了错误的括号len(li)len[li]

,当您试图访问你需要的,如果你使用[]你实际上是像访问列表的顺序使用function(args)功能记住。 your_list[index]。 len是内置函数,因此您需要()

+0

修好了,谢谢! – user2928929

2

Python使用(...)来调用函数,[...]来索引一个集合。此外,您正在尝试做的是索引内置函数len

要解决此问题,使用括号而不是方括号:

low, high = 0, len(li) 
+0

它仍然不工作,因为某些原因..它不会再给我一个错误,但它只是不输出任何东西 – user2928929

+0

@ user2928929 - 你怎么调用'binary_search'?你是否像使用'print binary_search(li,targetValue)'那样使用'print'? – iCodez

+0

是的,即使我打印binary_search(li,targetValue),如果targetValue在列表中,它会返回“我们找到它”,但如果它不是它不会返回任何东西。 – user2928929

4

len是一个内置的功能,但你要使用它作为一个序列:

len[li] 

拨打的功能代替:

len(li) 

请注意那里的形状改变,索引用方括号完成,调用完成圆括号。

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)]) 

正如你所看到的加入是一种方法,具有与()这是失踪,导致该问题的调用。希望它可以帮助所有人查找方法并添加()。

相关问题