@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
Кому не сложно, помогите разобраться с данной темой.
  • Вопрос задан
  • 333 просмотра
Решения вопроса 1
@fireSparrow
Исключения тут ни при чём.
Просто в питоне отрицательный индекс обозначает элемент, отсчитываемый с конца списка. Например, lst[-1] - последний элемент списка, lst[-2] -предпоследний, и так далее.

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

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

Войти через центр авторизации
Похожие вопросы
Ovision Санкт-Петербург
от 100 000 до 300 000 ₽
Сбер Санкт-Петербург
от 100 000 до 100 000 ₽
08 мая 2021, в 00:18
3000 руб./за проект
07 мая 2021, в 22:42
3000 руб./за проект
07 мая 2021, в 22:25
2400 руб./за проект