Проблема со словарем. 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, хотя у самой первой точки его нет.