如何在python中捕获所有索引超出范围的错误?

时间:2019-04-09 12:50:48

标签: python opencv

我正在计算像素之间的距离,我只是在程序中做了一个鼠标回调函数,用于计算x和y坐标。

这是代码,我尝试过的

def distance():
    length = len(position)
    # Distance in terms of x
    distance_value = position[length-1][0] - position[length-2][0]
    # Distance in terms of y
    # distance_value = position[length-1][1] - position[length-2][1]

    print("Value of pixel is: " + str(distance_value))
  

IndexError:列表索引超出范围。

2 个答案:

答案 0 :(得分:0)

我想您需要执行以下操作:

def distance():
    length = len(position)
    # Distance in terms of x
    try:
        distance_value = position[length-1][0] - position[length-2][0]
        print("Value of pixel is: " + str(distance_value))
    except IndexError as e:
        print('There is an error')
        print(str(e))

答案 1 :(得分:0)

我假设position是x,y对的列表。因此,在第一个位置,由于没有可比较的位置,您的程序将失败。 在这种情况下,您还可以使用if语句而不是try语句,它可以捕获所有IndexError,即,您可以防止发生错误而不是捕获错误。

if len(position) > 1:
    distance_value = position[-1][0] - position[-2][0]

请注意,您应该宁愿使用负索引来引用最后一个元素,而不是
length - x