Ti c ta c toe- В чем тут ошибка - PullRequest
0 голосов
/ 19 июня 2020

В ЧЕМ ЗДЕСЬ ОШИБКА ??

Traceback (most recent call last)
<ipython-input-51-cb088c4c5c82> in <module>
     17             display_board(the_board)
     18             position = player_choice(the_board)
---> 19             place_marker(the_board,Player1_marker,position)
     20             if win_check(the_board,Player1_marker):
     21                 display_board(the_board)

<ipython-input-41-ba563e2cb168> in place_marker(board, marker, position)
      1 def place_marker(board, marker, position):
----> 2     board[position] = marker

TypeError: list indices must be integers or slices, not NoneType

1 Ответ

0 голосов
/ 19 июня 2020

Показанные строки указывают точно что и где не так. Вам просто нужно знать, как это интерпретировать:

     18             position = player_choice(the_board)
---> 19             place_marker(the_board,Player1_marker,position)

      1 def place_marker(board, marker, position):
----> 2     board[position] = marker

TypeError: list indices must be integers or slices, not NoneType

Что вы можете почерпнуть из всего этого:

  • переменная position, используемая в строке 2 place_marker() установлен на None, поскольку это фактическая ошибка (переменные, установленные на None, относятся к типу NoneType, а position - это индекс списка, на который жалуются);
  • эта переменная position инициализируется из переменной с тем же именем, как часть вызова place_marker() в строке 19, поэтому она также должна быть установлена ​​на None;
  • , что переменная (та, что была передана) пришла из функции player_choice().

Другими словами, ваша строка:

position = player_choice(the_board)

по какой-то причине вернула None.

К сожалению, поскольку вы не показали нам этот код для этой функции, мы не можем углубиться в анализ, но вы можете посмотреть для путей в этой функции, которые возвращают без значения. Это типичная причина, по которой функции возвращают None, например:

def fn(x):
    if x == 1:
        return 7 # This path returns 7 when 1 is passed in.
    # This path returns None (implicitly) for any other value.

print(fn(1)) # Explicitly gets 7.
print(fn(2)) # Implicitly gets None.

Результат выполнения этого кода, согласно комментариям:

7
None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...