TypeError: индексы списка должны быть целыми числами или частями, а не кортежем при использовании индексированных значений в математических операциях - PullRequest
0 голосов
/ 22 сентября 2019

Я новичок в программировании в целом, и получил эту задачу от универа:

Определить функцию near_piece (board, x, y), которая использует формулу Пифагора для определения расстояния до ближайшегокусок.Насколько я понял:

def nearest_piece(board, x, y):
    distance = 1000001
    temp = 0
    piece_coordinates = list(board.keys())
    for element in piece_coordinates:
        temp = math.sqrt(((((piece_coordinates[element][0]) - x)**2)) + ((piece_coordinates[element][1]) - y)**2)
        if temp < distance:
            shortest_distance = temp
            shortest_distance_coordinates = element
        else:
            continue
    return shortest_distance_coordinates

«Доска» - это словарь с «кусочками» внутри.Они хранятся так:

{ (x, y): "player", (x, y): "player" }

Ключ является кортежем, а значение - строкой, в которой указан игрок, которому принадлежит фигура по указанной координате.Причина для расстояния = 100001 просто в том, что это максимальный размер доски.Ранее я решил ошибку с индексацией на board.keys(), поэтому вместо этого я сделал это в виде списка.Следующей ошибкой является эта, и, похоже, она возникает в строке 6 в этом примере, также в первой итерации.

TypeError: списочные индексы должны быть целыми или кусочками, а не кортежем

Оценитьлюбая помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...