• Python создать функцию крестики-нолики с ИИ?

    D1os
    @D1os
    Если честно, не знаю, зачем здесь 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() возвращает строку, которую мы никуда не записываем в основном коде.
  • Ребята в коде проблема когда пользователь выбирает выстрел то stats улучшаются а нужно их уменьшать. Как исправить эту ошибку?

    D1os
    @D1os
    Soremix уже об этом сказал. И это вполне логично, что stats не уменьшается. Проанализируйте свой код:
    1) Выводятся статы, и даётся выбор прокачки.
    2) Пользователь качается и статы растут.
    3) Выводятся статы после прокачки, и даётся выбор атаки.
    4) Пользователь стреляет, статы уменьшаются.
    5) При ЛЮБОМ обстоятельстве, кроме выхода из игры, список stats удаляется, и создаётся новый с новыми статами.
    А дальше мы возвращаемся с первому пункту: выводятся статы из НОВОГО списка, созданного в конце. И конечно они будут больше прошлых.
    P.s.: зачем тебе две последние строчки, если до print("\n\n") программа всё равно не дойдёт из-за continue? И зачем тебе continue, если это всё равно конец итерации цикла?
    P.s.s.: используйте, пожалуйста, поле кода для ввода кода.