未返回返回语句
我刚刚发了一个关于这段代码的问题,很抱歉再问一次,但我的返回语句没有正常工作。每次我运行代码时,它都会要求一个全局变量的位置,而我正试图在搜索方法中返回这个变量。希望能得到一些帮助。谢谢。
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
这个函数内部的。我们可以通过把返回的值赋给一个变量来获取它,就像上面那样。