5
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 "

最近刚刚发布了这个问题,但我的代码仍然不起作用?

4

4 回答 4

10

你使用了错误的括号len(li)不是len[li]

请记住,当您尝试访问需要使用的功能时,function(args)如果您[]实际上是在访问一个序列,例如一个列表。your_list[index]. len 是一个内置函数,所以你需要()

于 2013-11-14T22:19:00.567 回答
5

len是一个内置函数,但您正试图将其用作序列:

len[li]

改为调用该函数:

len(li)

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

于 2013-11-14T22:19:08.583 回答
2

Python 使用(...)调用函数和[...]索引集合。此外,您现在要做的是索引内置函数len

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

low, high = 0, len(li)
于 2013-11-14T22:19:00.590 回答
1

我花了几分钟才弄清楚出了什么错误。有时盲点会阻止你看明显的东西。

不正确

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 是一种方法,必须使用 () 调用,但缺少并导致问题。希望对大家寻找方法并添加()有所帮助。

于 2017-09-16T15:49:10.077 回答