Я не уверен на 100%, что понимаю вопрос, но если я все сделал правильно, вы хотите, чтобы python не go до последней строки из-за индекса -1 в списке?
Если так попробуйте использовать функцию max, как это!
L[max(0,row-1)][1]
РЕДАКТИРОВАТЬ: мое старое решение было поддельным и подсчитал количество клеток, которые вы хотели игнорировать, поэтому я удалил его. Вместо этого, что вы можете сделать, это добавить и к вашему, если это уместно, например, так:
def countAdjacentMines(lis,row,col):
total = 0
if ((row > 0 and col > 0) and lis[row-1][col-1] == 'x'):
total+=1
if (row > 0 and lis[row-1][col] == 'x'):
print("here")
total+=1
if ((row > 0 and col < len(lis)-1) and lis[row-1][col+1] == 'x'):
total+=1
if (col > 0 and lis[row][col-1] == 'x'):
total+=1
if (col < len(lis)-1 and lis[row][col+1] == 'x'):
total+=1
if ((row < len(lis)-1 and col > 0) and lis[row+1][col-1] == 'x'):
total+=1
if (row < len(lis)-1 and lis[row+1][col] == 'x'):
total+=1
if ((row < len(lis)-1 and col < len(lis)-1) and lis[row+1][col+1] == 'x'):
total+=1
return total
L = [
['','',''],
['x','',''],
['x','','']
]
Это будет работать до тех пор, пока у вас есть квадратная матрица, в противном случае вы можете использовать len (lis [row]) или что-то подобное.
Кроме того, я предлагаю найти другой способ, кроме try, кроме pass для обработки ошибок.
Очарование в четвертый раз?
LAST EDIT: если вы выполняете countAdjacentMines ( L, 2,0) он выводит 1, потому что нет случая подсчитать текущую ячейку, в которой мы находимся, как сейчас.