Я пытаюсь проверить позицию, чтобы увидеть, являются ли положения вокруг нее как действительными индексами, так и визуально рядом друг с другом в сетке (отсюда имя функции count_neighbor). В строке 8 я получаю IndexError, что означает оператор if, прежде чем он неправильно фильтрует недействительные и/или не соответствующие друг другу ячейки, которые он тестирует. Я не могу показаться, чтобы выяснить, почему ..Почему и где этот IndexError происходит?
def count_neighbours(grid, row, col):
count = 0
neighbors = ((1,0),(1,-1),(1,1),
(0,1),(0,-1),
(-1,0),(-1,-1),(-1,1))
for x,y in neighbors:
if row+x >= 0 and col+y >= 0 and row+x < len(grid)-1 and col+y < len(grid)-1:
if grid[row+x][col+y] == 1:
count += 1
return count
print count_neighbours(((1,0,1,0,1),
(0,1,0,1,0),
(1,0,1,0,1),
(0,1,0,1,0),
(1,0,1,0,1),
(0,1,0,1,0)),5,4)
Ошибка:
Traceback (most recent call last):
File "test.py", line 17, in <module>
(0,1,0,1,0)),5,4)
File "test.py", line 8, in count_neighbours
if grid[row+x][col+y] == 1:
IndexError: tuple index out of range
Пожалуйста, пост полной отслеживающий ошибки! Это часть, которая рассказывает, где проблема. –
вы проверяете «если x в связанном ИЛИ y находится в границах». 'Ы/или/и /'. – ch3ka
@ ck3ka: 's/comment/answer /' – DSM