I'm working on creating a simple minimax algorithm for a Tic Tac Toe bot. I've read some of the other answers on here, but I'm still not really sure what I'm doing wrong, I'm pretty new to recursive functions. I think I understand how the algorithm works, but I'm not totally sure.
def minimax(board, player, originalPlayer):
    global ai, human
    if gameOver(board):
        if hasWon(board, originalPlayer):
            return 1, None
        if hasWon(board, opposite(originalPlayer)):
            return -1, None
        if len(getEmptyIndexes(board)) is 0:
            return 0, None
    possibleMoves = getEmptyIndexes(board)
    if player == originalPlayer:
        bestScore = float('-inf')
    else:
        bestScore = float('inf')
    for moveIndex in possibleMoves:
        clone = copy(board)
        clone = makeMove(clone, moveIndex, player)
        score, index = minimax(clone, opposite(player), originalPlayer)
        if player == originalPlayer:
            if score > bestScore:
                bestScore = score
                bestMove = index
        else:
            if score < bestScore:
                bestScore = score
                bestMove = index
    return bestScore, bestMove
My game loop is below, I'm just using it for debugging. The error I've been getting is that the minimax function returns the tuple (0, None) when I'm expecting to have an index of the board where the None is.
ai = 'X'
human = 'O'
board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
while True:
    print('Board:')
    printBoard(board)
    choice = int(input('Your choice: '))
    board[choice] = human
    print('AI Moves')
    score, index = minimax(board, ai, ai)
    board[index] = ai
Thanks for your help!
Edit: getEmptyIndexes returns the indexes of blank spaces on the board; for example:
getEmptyIndexes([' ', 'X', ' ', 'X', ' ', 'O', ' ', 'O', ' ']) = [0, 2, 4, 6, 8]
Edit 2: I think I actually just fixed it, I was writing "bestMove = index" instead of "bestMove = moveIndex", pretty much I was using the old move index from the older leaf nodes instead of the new one.
