Ошибка при проверке выбора для игры в крестики-нолики

#python #conditional-statements #runtime-error #tic-tac-toe #validationerror

Вопрос:

Этот код запрашивает у пользователя пару координат, а затем сверяет их с массивом допустимых пар координат. Если пользователь вводит недопустимую пару, ему предлагается ввести ее повторно.

Код возвращает ошибку в инструкции return. Ниже приведен код и последующая ошибка.

 def position_choice():
    '''the indexes are not yet given by the user so we initialise it with a string ,
    which can be anything'''
    x,y="not yet","not yet"
    #this contains the list of indexes that are in a tic tac  toe board
    ttt_index=[[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2]]
    #looping until we get the choice
    while (x.isdigit()==False and y.isdigit()==False) or[int(x),int(y)] not in ttt_index:
        x=(input("Which row would you like to place the element"))
        y=(input("Which column in the row would like to place the element"))
        if [int(x),int(y)] not in ttt_index:
            clear_output()
            print("I'm sorry the position that you've chosen is not valid, please do check and re-enter accordingly :)")
    return int(x,y)
 

Ошибка:

 Traceback (most recent call last):
  File "C:/Users/paul/Documents/k.py", line 16, in <module>
    position_choice()
  File "C:/Users/paul/Documents/k.py", line 14, in position_choice
    return int(x,y)
TypeError: 'str' object cannot be interpreted as an integer
 

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

1. В чем заключается ошибка? В этом нет никаких сомнений

Ответ №1:

Я отправил ожидающее утверждения редактирование, в котором объясняется возникающая проблема. Проблема в том, как вы возвращаете x и y. Поэтому измените оператор return на: return int(x), int(y)