Не могу понять почему код не работает
Пишет, что ошибка в функции isSpaceFree, но в чем ошибка вообще не понятно.Я несколько раз переписывал функцию по другому, но ничего не меняется. Вот весь код:
import random
def drowBoard (board):
print(board[7] + '|' + board[8] + '|' + board[9])
print('-+-+-')
print(board[4] + '|' + board[5] + '|' + board[6])
print('-+-+-')
print(board[1] + '|' + board[2] + '|' + board[3])
def inputPlayerletter ():
letter = ""
while not (letter == 'X' or letter == 'O'):
letter = input('Выбирете Х или О: ').upper()
if letter == 'X':
return ['X', 'O']
else:
return ['O', 'X']
def whoGoesFirst ():
who = random.randint(0, 1)
if who == 0:
return 'человек'
else:
return 'компьютер'
def makeMove (board, letter, move):
board[move] = letter
def isWinner (bo, le):
return ((bo[7] == le and bo[8] == le and bo[9] == le) or
(bo[4] == le and bo[5] == le and bo[6] == le) or
(bo[1] == le and bo[2] == le and bo[3] == le) or
(bo[7] == le and bo[4] == le and bo[1] == le) or
(bo[8] == le and bo[5] == le and bo[2] == le) or
(bo[9] == le and bo[6] == le and bo[3] == le) or
(bo[7] == le and bo[5] == le and bo[3] == le) or
(bo[9] == le and bo[5] == le and bo[1] == le))
def getBoardCopy (board):
boardCopy = []
for i in board:
boardCopy.append(i)
return boardCopy
def isSpaceFree (board, move):
return board[move] == " "
def getPlayerMove (board):
move = ''
while move not in "1 2 3 4 5 6 7 8 9".split() or not isSpaceFree(board, int(move)) :
move = input('Куда хотите походить ? (1-9) ')
return int(move)
def chooseRandomMoveFromList (board, moveList):
posibleMove = []
for i in board:
if isSpaceFree(board, i):
posibleMove.append(i)
if len(posibleMove) != 0:
return random.choice(posibleMove)
else:
return None
def getCamputerMove(board, computerLetter ):
if computerLetter == 'X':
playerLetter = 'O'
else:
playerLetter = 'X'
for i in range(1, 10):
boardCopy = getBoardCopy(board)
if isSpaceFree(boardCopy, i):
makeMove(boardCopy, computerLetter, i)
if isWinner(boardCopy, computerLetter):
return i
for i in range(1, 10):
boardCopy = getBoardCopy(board)
if isSpaceFree(boardCopy, i):
makeMove(boardCopy, playerLetter, i)
if isWinner(boardCopy, playerLetter):
return i
move = chooseRandomMoveFromList(boardCopy, [1, 7, 9, 3])
if move != None:
return move
if isSpaceFree(boardCopy, 5):
return 5
return chooseRandomMoveFromList(boardCopy, [4, 8, 6, 2])
def isBoardFull(board):
for i in board:
if isSpaceFree(board, i):
return False
return True
print("Игра 'Крестики-нолики' !")
while True:
theBoard = [' '] * 10
playerLetter, computerLetter = inputPlayerletter()
turn = whoGoesFirst()
gameIsPlaying = True
print('' + turn + 'ходит первым')
while gameIsPlaying:
if turn == 'человек':
drowBoard(theBoard)
move = getPlayerMove(theBoard)
makeMove(theBoard, playerLetter, move)
if isWinner(theBoard, playerLetter):
drowBoard(theBoard)
print("Ура, вы победили !")
gameIsPlaying = False
else:
if isBoardFull(theBoard):
drowBoard(theBoard)
print('Ничья')
break
else:
turn = 'компьютер'
else:
drowBoard(theBoard)
move = getCamputerMove(theBoard, computerLetter)
makeMove(theBoard, computerLetter, move)
if isWinner(theBoard, computerLetter):
drowBoard(theBoard)
print("Вы проиграли !")
gameIsPlaying = False
else:
if isBoardFull(theBoard):
drowBoard(theBoard)
print('Ничья')
break
else:
turn = 'человек'
print("Сыграем еще раз ? (да / нет) ")
if not input.lower().startswith('д'):
break