Pour imprimer une grille de Sudoku, j'ai besoin d'une double ligne à imprimer tous les 3 numéros pour construire la grille.

Je fournis une version simplifiée de ce que j'essaie de faire, veuillez fournir une meilleure solution / alternative.

a = [
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0]
]
boolcheck = False

for i in range(4):  # rows
    for j in range(4):  # columns
        if a[i][j] == 0:
            a[i][j] = (i, j)
        print("│ ", end="")
        print(a[i][j], end=" ")
        if j == 2:
            boolcheck = True
        else:
            boolcheck = False
    if boolcheck:
        print("║")
    else:
        print("│")

Actuellement, ma sortie est la suivante

    │ (0, 0) │ (0, 1) │ (0, 2) │ (0, 3) │
    │ (1, 0) │ (1, 1) │ (1, 2) │ (1, 3) │
    │ (2, 0) │ (2, 1) │ (2, 2) │ (2, 3) │
    │ (3, 0) │ (3, 1) │ (3, 2) │ (3, 3) │

Les résultats attendus sont les suivants

    │ (0, 0) │ (0, 1) │ (0, 2) ║ (0, 3) │
    │ (1, 0) │ (1, 1) │ (1, 2) ║ (1, 3) │
    │ (2, 0) │ (2, 1) │ (2, 2) ║ (2, 3) │
    │ (3, 0) │ (3, 1) │ (3, 2) ║ (3, 3) │
1
rishi 31 août 2020 à 16:22

2 réponses

Meilleure réponse

Je pense que votre problème est l'indentation, en fait comme vous pouvez le voir dans votre code, vous n'entrerez jamais dans votre if boolcheck:. Ceci parce que la dernière exécution de la boucle intérieure aura aussi j=3, donc affectera également boolCheck=False et cela n'imprimera jamais le caractère double ligne souhaité.

Sinon, si vous mettez votre code comme celui-ci, vous aurez la sortie souhaitée:

a = [
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0]
]

for i in range(4):  # rows
    for j in range(4):  # columns
        if a[i][j] == 0:
            a[i][j] = (i, j)
        if j == 3:
          print("║ ", end="")
        else:
          print("│ ", end="")
        print(a[i][j], end=" ") 
    print("│")
1
Giovanni 31 août 2020 à 13:35

Voilà, j'ai juste ajouté une condition if et en ai supprimé d'autres à la fin, en vérifiant que boolcheck est vrai ou faux.

a = [
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0]
]
boolcheck = False

for i in range(4):  # rows
    for j in range(4):  # columns
        if a[i][j] == 0:
            a[i][j] = (i, j)
        if not boolcheck:
            print("│ ", end="")
            boolcheck = False
        print(a[i][j], end=" ")
        if j == 2:
            boolcheck = True
            print("║", end=" ")
        else:
            boolcheck = False
    if not boolcheck:
        print("│")
2
Dharman 31 août 2020 à 13:41