未返回返回语句

0 投票
2 回答
523 浏览
提问于 2025-04-18 02:52

我刚刚发了一个关于这段代码的问题,很抱歉再问一次,但我的返回语句没有正常工作。每次我运行代码时,它都会要求一个全局变量的位置,而我正试图在搜索方法中返回这个变量。希望能得到一些帮助。谢谢。

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 个回答

3

这是一个作用域的问题。在函数 binarySearch 中,你声明了一个 局部变量 position,所以这个变量只能在这个函数内部使用。因为这个函数会 返回 一个值,你可以把这个结果赋值给一个变量:

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

现在你在调用你的函数,但实际上并没有使用它的结果。你调用函数时用的 return 是没问题的,但你并没有把返回的值用上:

你想要的应该是这样的:

position = binarySearch(names, "Ava Fischer")

你希望在全局范围内存在的那个变量,其实是局限在 binarySearch 这个函数内部的。我们可以通过把返回的值赋给一个变量来获取它,就像上面那样。

撰写回答