Как исправить ошибку во время выполнения в функции проверки выигрыша в крестики-нолики

#python

#python

Вопрос:

Я пишу игру в крестики-нолики на python 2 для моего класса CompSci, используя SimpleGUI. У меня есть 2D-массив, установленный таким образом, что всякий раз, когда игрок нажимает в определенной области на холсте, он рисует X или O в этой области, а также записывает один из элементов массива, который должен быть установлен на эту букву. Это работает нормально. Я определил функцию для проверки каждой строки массива, чтобы проверить, выиграл ли игрок, и это выглядит примерно так:

 def checkRows():
    if len(set(grid[0])) == 1:
        winner = grid[0][0]
    if len(set(grid[1])) == 1:
        winner = grid[1][0]
    if len(set(grid[2])) == 1:
        winner = grid[2][0]
  

Кроме того, у меня есть счетчик, который увеличивается на единицу каждый раз, когда заполняется квадрат, и цикл while в конце, который запускает функцию checkRows, пока счетчик меньше 9 (потому что 9 — это максимальное количество квадратов, которые нужно заполнить, чтобы один игрок выиграл). Это выглядит примерно так:

 while counter < 9:
    checkRows()
    if winner == "X":
        frame.add_label("X wins!", 100)
    elif winner == "O":
        frame.add_label("O Wins!", 100)
  

Каждый раз, когда я запускаю код, он выдает ошибку во время выполнения со словами «TimeLimitError: программа превысила ограничение по времени выполнения.», иногда в первой, иногда во второй строке функции. Кто-нибудь знает, что может быть причиной этого?

Комментарии:

1. Не могли бы вы добавить ошибку во время выполнения в сообщение, это помогло бы нам диагностировать проблему ^_^

2. Это звучит как ошибка в соревновательной сессии программирования. Вы запускаете свою программу в системе оценки URI?

3. Я уже сталкивался с подобным вопросом раньше. Включен ли ваш код пользовательского ввода в синхронизацию? Этого не должно быть, поскольку ваш код ничего не делает в ожидании ввода пользователем.