##----- Définition des Variables globales -----##
cases = [[0, 0, 0],
         [0, 0, 0],
         [0, 0, 0]]

joueur = 1                              # On commence par le joueur n°1
n = 1                                   # Premier tour de jeu
somme = 0                               # Somme des cases


##----- Définition des Fonctions -----##
def affichage(tableau):
    """Cette fonction affiche à l'écran chaque ligne d'un tableau."""
    n = len(tableau)
    for i in range(n):
        print(tableau[i])


def demande(numero):
    """Cette fonction renvoie la case dans laquelle le joueur se place."""
    if numero == 1:
        print('Au tour du joueur n°1 !')
    else:
        print('Au tour du joueur n°2 !')
    ligne = int(input('Numéro de ligne ? '))
    colonne = int(input('Numéro de colonne ? '))
    return [ligne, colonne]


def verif(tableau):
    """Cette fonction calcule les sommes de chaque ligne/colonne/diagonale
        pour vérifier l'alignement. Elle renvoie le n° du joueur gagnant."""
    sommes = [0,0,0,0,0,0,0,0]          # Il y a 8 sommes à vérifier
    # Les lignes :
    sommes[0] = sum(tableau[0])
    sommes[1] = sum(tableau[1])
    sommes[2] = sum(tableau[2])
    # Les colonnes
    sommes[3] = tableau[0][0]+tableau[1][0]+tableau[2][0]
    sommes[4] = tableau[0][1]+tableau[1][1]+tableau[2][1]
    sommes[5] = tableau[0][2]+tableau[1][2]+tableau[2][2]
    # Les diagonales
    sommes[6] = tableau[0][0]+tableau[1][1]+tableau[2][2]
    sommes[7] = tableau[0][2]+tableau[1][1]+tableau[2][0]

    for i in range(8):                  # Parcours des sommes
        if sommes[i] == 3:
            return 1
        elif sommes[i] == -3:
            return -1
    return 0


##----- Programme principal -----##
affichage(cases)

while somme == 0 and n <= 9:
    [ligne, colonne] = demande(joueur)
    while cases[ligne][colonne] != 0:   # Recherche d'une case vide
        print('Case occupée')
        [ligne, colonne] = demande(joueur)
    cases[ligne][colonne] = joueur
    affichage(cases)

    somme = verif(cases)                # Vérification de l'alignement
    joueur = -joueur                    # Passage au joueur suivant
    n += 1                              # Passage au tour suivant

if somme == 1:
    print('Bravo joueur 1 !')
elif somme == -1:
    print('Bravo joueur 2 !')
else:
    print('Match nul !')
