没有返回return语句

时间:2014-04-15 19:59:43

标签: python return-value

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

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

2 个答案:

答案 0 :(得分:7)

此时你正在调用你的函数,但只是把结果扔掉了。你实际上没有从函数调用中给出一个值(你使用return就好了):

你想要这样的东西:

position = binarySearch(names, "Ava Fischer")

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

答案 1 :(得分:3)

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

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