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