Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python while循环的外部变量还是内部变量?_Python_Variables_While Loop - Fatal编程技术网

Python while循环的外部变量还是内部变量?

Python while循环的外部变量还是内部变量?,python,variables,while-loop,Python,Variables,While Loop,当变量mid和mid\u val在while循环之外定义时,为什么我的函数不能工作,就像low和high一样 def binary_search(arr, x): low = 0 high = len(arr) - 1 while low <= high: mid = (low + high) // 2 mid_val = arr[mid] if x == mid_val: ret

当变量
mid
mid\u val
在while循环之外定义时,为什么我的函数不能工作,就像
low
high
一样

def binary_search(arr, x):
    low = 0
    high = len(arr) - 1 

    while low <= high:

        mid = (low + high) // 2 
        mid_val = arr[mid] 

        if x == mid_val: 
            return mid 
        elif x > mid_val: 
            low = mid + 1
        else: 
            high = mid - 1
    
    return "Out of range"


array = [2,4,5,6]
x = 6

print(binary_search(array, x))
def二进制搜索(arr,x):
低=0
高=透镜(arr)-1
而中低值:
低=中+1
其他:
高=中-1
返回“超出范围”
数组=[2,4,5,6]
x=6
打印(二进制搜索(数组,x))

使用
mid=(低+高)//2设置变量值时,将使用其他变量的当前值计算该值。这是一个一劳永逸的行动<如果
low
high
的值更改,code>mid
将不会自动更新。因此,您需要在while循环中使用此赋值来更新
mid

,因为每次循环重复时,它们都需要更改。它们取决于
low
high
的更新值。变量只包含一个值,它们不记得用于赋值的表达式。因此,在重新分配其他变量时,该值不会自动更改。