Показывает ошибку в коде, не могу понять, в чем проблема
board = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
def DisplayBoard(board):
for i in range(len(board)):
for f in range(len(board[i])) :
print(' +-------+-------+-------+\n',
'| | | |\n',
'| ', board[i][0],
' | ', board[i][1],
' | ', board[i][2], ' |\n',
'| | | |')
print(' +-------+-------+-------+')
def EnterMove(board):
while True :
n = input('Где нолик поставишь ?')
if not (int (123456789)):
print ('pomilca')
continue
n = int(n)
if n >= 1 and n <= 9 :
if (str(board[n-1]) not in 'XO') :
board[n-1] = board
True
else :
print('zanniato')
else :
print('pommilca')
break
DisplayBoard(board)
EnterMove(board)
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
у вас возникает такая ситуация в строке
if (str(board[n - 1]) not in 'XO'):
если ввести число больше 3 (например, 4):
n = 4
board = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
у вас же поле список списков 3x3, а вы обращаетесь к 4 элементу, которого нет :)
вам надо или одномерную доску от 0 до 8 сделать или число n переводить в двумерное:
x = (n - 1) % 3
y = (n - 1) // 3
а вообще я бы рефакторинг кода сделал бы
P.S.
а то что вы делаете
board[n - 1] = board
это вы в ячейку впихиваете весь свой двумерный массив со всеми вытекающими - так точно делать не надо,