Цель здесь - взять некоторый список координат, например [[1,2],[3,4],[7,1]]
, а затем выяснить, насколько большим должен быть холст, если вы хотите напечатать все эти координаты. Возьмите максимальную нижнюю левую координату и минимальную верхнюю правую координату, которые будут плотно прилегать к этим точкам. Например, в приведенном выше списке мы ищем [[1,1],[7,4]]
, который определяет наименьший прямоугольник, в который поместятся все эти точки.
В середине этой функции я вижу, что входящей "доске" присвоено новое значение.
def print_board(board):
# import pdb; pdb.set_trace()
dimensions = None
for i in board:
if dimensions == None:
dimensions = [i, i]
else:
dimensions[0][0] = min(dimensions[0][0], i[0])
#'board' is redefined !!!
dimensions[0][1] = min(dimensions[0][1], i[1])
#dimensions[1][0] = max(dimensions[1][0], i[0])
#dimensions[1][1] = max(dimensions[1][1], i[1])
# (after we get the canvas size
# we print the canvas with the points on it
# but we never make it that far without an error)
Поскольку цикл for перемещается через координаты входящего board
, он, похоже, устанавливает board[0]
в любую координату, на которую он смотрит в данный момент. Так что [[1,2],[3,4],[7,1]]
сначала изменится на [[3,4],[3,4],[7,1]]
, затем на [[7,1],[3,4],[7,1]]
.
Я бы не ожидал, что board
изменится вообще.
(Python 3.2.2)