@Arkadiysm

Как работает механизм обработки исключений?

Совсем недавно начал изучать питон, как первый ЯП. После изучения базового синтаксиса языка поставил пред собой задачу написать небольшую консольную игру, а именно всем известного сапера. Само минное поле представляет собой квадратный список из бомб "B" и пустых клеток "*". Пользователь поочередно вводит координаты номера строки и столбца, которые проверяются на наличие бомбы в данной клетке. Если ее там нет, то вызывается функция считающая кол-во бомб в соседних 8 клетках и выводящая данное число на место звездочки "*" (точку "." , если бомб не обнаружено).
near_coordinates = [
    [1, 1],
    [1, 0],
    [1, -1],
    [0, -1],
    [0, 1],
    [-1, 1],
    [-1, 0],
    [-1, -1]
]


def mines_counter(a, b, lst):
    counter = 0
    for i in near_coordinates:
        try:
            if lst[a+i[0]][b+i[1]] == 'B':
                counter += 1
        except IndexError:
            continue
    if counter == 0:
        return '.'
    return counter

Однако, проблема в том, что, срабатывая механизм обработки исключений, вероятно работает не совсем так, как я полагаю, из-за чего рядом с границами поля мины показываются даже там где их нет
5a426d776e7d2561407394.jpeg
Кому не сложно, помогите разобраться с данной темой.
  • Вопрос задан
  • 338 просмотров
Решения вопроса 1
@fireSparrow
Исключения тут ни при чём.
Просто в питоне отрицательный индекс обозначает элемент, отсчитываемый с конца списка. Например, lst[-1] - последний элемент списка, lst[-2] -предпоследний, и так далее.

Поэтому, когда в нулевой строчке или нулевом столбце программа будет проверять соседей, индекс (-1) не вызовет ошибки, а будет обозначать ячейку на противоположном краю поля.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы