Проблема со словарем. Python

я убрал лишнее из кода:

WIDTH = 1000
WHITE = (255, 255, 255)
BLUE = (0, 255, 255)
GREEN = (0, 255, 0)
GREY = (192,192,192)

cols = 50
gap = WIDTH // cols
length = 4
direction = 'right'
snake = {}


class Spot:
    def __init__(self,row,col,width,total_rows):
        self.row = row
        self.col = col
        self.color = WHITE
        self.width = width
        self.total_rows = total_rows
        self.snake = False
        self.head = False

    def get_color(self):
        return self.color
    def is_snake(self):
        return self.snake == True
    def make_snake(self):
        self.snake = True
        self.color = BLUE
    def is_head(self):
        return self.head == True
    def make_head(self):
        self.head = True
        self.snake = True
        self.color = BLUE




def make_grid(cols, gap, length, snake):
    grid = []
    for i in range(cols):
        grid.append([])
        for j in range(cols):
            grid[i].append(Spot(i, j, gap, cols))
    head = grid[14][10]
    head.make_head()
    snake['head'] = head
    for i in range(length):
        grid[13-i][10].make_snake()
        snake[grid[13-i][10]] = grid[14-i][10]
        if i == length:
            grid[13-i][10].make_last()
    return grid, head, snake

grid, head, snake = make_grid(cols, gap, length, snake)

for row in grid:
    for spot in row:
        if spot.is_snake():
            print(snake[spot].row)

Ошибка заключается в том, что когда я пытаюсь вывести значение row для каждой клетки snake вылазит ошибка и говорит, что такого значения в словаре нет. Выглядит ошибка примерно так(каждый раз разные значения из за смен точек):

11
12
13
14
Traceback (most recent call last):
  File "D:\Projects\Snake\Understand.py", line 67, in <module>
    print(snake[spot].row)
KeyError: <__main__.Spot object at 0x000002348BA53610>

Не могу понять почему же он думает что значения нет, если я его прям перед выводом задаю(


Ответы (1 шт):

Автор решения: Egor Bochkaryov

Ответ нашел:

Суть в том что я пытаюсь брать значение row, хотя у самой первой точки его нет.

→ Ссылка