Как я могу поймать все ошибки индекса в Python? - PullRequest
2 голосов
/ 09 апреля 2019

Я вычисляю расстояние между пикселями, я только что сделал функцию обратного вызова мыши в программе для вычисления координат 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 голосов
/ 09 апреля 2019

Я предполагаю, что position - это список пар х, у.Итак, на первой позиции ваша программа не работает, поскольку нет позиции для сравнения.В этом случае вы также можете использовать оператор if вместо оператора try, который будет перехватывать все IndexError, т.е. вы предотвратите возникновение ошибки, а не перехват ее.

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

Примечание, вы должны использовать отрицательные индексы, чтобы ссылаться на последние элементы, чем
length - x

0 голосов
/ 09 апреля 2019

Полагаю, вам нужно сделать следующее:

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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...