2014-04-15 137 views
0

我刚刚发布了一个关于此代码的问题,我很抱歉再次这样做,但是我的return语句不起作用。每当我尝试运行代码时,它都会要求一个全局变量的位置,我试图在搜索方法中返回。任何帮助表示赞赏。谢谢。不返回声明

def main(): 

    names = ['Ava Fischer', 'Bob White', 'Chris Rich', 'Danielle Porter','Gordon Pike', 'Hannah Beauregard', 'Matt Hoyle', 'Ross Harrison', 'Sasha Ricci', 'Xavier Adams'] 

    binarySearch(names, "Ava Fischer") 

    print("That name is at position "+str(position)) 


def binarySearch(array, searchedValue): 

    begin = 0 
    end = len(array) - 1 
    position = -1 
    found = False 

    while not found and begin<=end: 
     middle=(begin+end)//2 

     if array[middle] == searchedValue: 
      found=True 
      position = middle 
     elif array[middle] >searchedValue: 
      end = middle-1 
     else: 
      first = middle+1 

    return position 

回答

7

目前您所呼叫的功能,但只是抛出的结果了。其实你不给您的函数调用的值(使用return就好了):

你想要的东西,如:

position = binarySearch(names, "Ava Fischer") 

你期望在全球存在的变量是本地范围的binarySearch。我们可以通过为返回的值分配一个变量来获得它,如上所述。

3

这是一个范围问题。在函数binarySearch中,声明了局部变量position,因此只能在该函数内进行访问。由于该函数将返回一个值,则可以将该结果分配给一个变量:

position = binarySearch(names, "Ava Fischer") 
print("That name is at position " + str(position))