Если честно, не знаю, зачем здесь try-except. Слишком маловероятна какая-нибудь ошибка. Единственное более-менее логичное, что можно записать - это TimeoutError, MemoryError, SystemError, NameError Но это как-то не очень. Лучше уточни у преподавателя, что конкретно надо написать и с какой целью.
А код, который ты написал в ответе выглядит правильно (кроме проверки: кто ходит), но всё-таки спроси ещё про массив доступных клеток, как метод ускорения.
Саму функция я бы сделал так, если честно:
def computer():
if current_player:
return str(choice(available_turns))
Т.е., единственное, что нам нужно сделать, это просто проверить, ходит ли сейчас компьютер и затем вернуть любое число из доступных нам (available_turns). Это при условии того, что этот массив заполнен числами - координатами клеток, которые мы удаляем после каждого хода. Т.е., здесь не нужна даже "проверка на дурака" validate(), потому что мы выбранное случайное число в любом случае типа int, в любом случае подходит под клетку поля и т.д. А когда ходит игрок, мы его проверяем.
Если нужно, как сказал учитель, то просто добавь
if current_player == 1:
# code
# Или
if current_player:
# code
И к except припиши SystemError. Всё.
Кстати, я только что заметил, что computer() возвращает строку, которую мы никуда не записываем в основном коде.
Soremix уже об этом сказал. И это вполне логично, что stats не уменьшается. Проанализируйте свой код:
1) Выводятся статы, и даётся выбор прокачки.
2) Пользователь качается и статы растут.
3) Выводятся статы после прокачки, и даётся выбор атаки.
4) Пользователь стреляет, статы уменьшаются.
5) При ЛЮБОМ обстоятельстве, кроме выхода из игры, список stats удаляется, и создаётся новый с новыми статами.
А дальше мы возвращаемся с первому пункту: выводятся статы из НОВОГО списка, созданного в конце. И конечно они будут больше прошлых.
P.s.: зачем тебе две последние строчки, если до print("\n\n") программа всё равно не дойдёт из-за continue? И зачем тебе continue, если это всё равно конец итерации цикла?
P.s.s.: используйте, пожалуйста, поле кода для ввода кода.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
А код, который ты написал в ответе выглядит правильно (кроме проверки: кто ходит), но всё-таки спроси ещё про массив доступных клеток, как метод ускорения.
Саму функция я бы сделал так, если честно:
Т.е., единственное, что нам нужно сделать, это просто проверить, ходит ли сейчас компьютер и затем вернуть любое число из доступных нам (available_turns). Это при условии того, что этот массив заполнен числами - координатами клеток, которые мы удаляем после каждого хода. Т.е., здесь не нужна даже "проверка на дурака" validate(), потому что мы выбранное случайное число в любом случае типа int, в любом случае подходит под клетку поля и т.д. А когда ходит игрок, мы его проверяем.
Если нужно, как сказал учитель, то просто добавь
И к except припиши SystemError. Всё.
Кстати, я только что заметил, что computer() возвращает строку, которую мы никуда не записываем в основном коде.