Aide puissance 4 simple verif colonne
Résolu
Bonjour,
J'essaye de faire un puissance 4 en python.
Je n'ai que les bases, donc je ne peux utiliser que des commandes simples et basiques. Même si cela rallonge le code, ce n'est pas grave.
Je suis rendu au vérification des colonnes et j'ai écrit un programme qui est censé fonctionner or ce n'est pas le cas. Je demande votre aide car je vois pas de solution.
Voici le programme en question:
Je devrais avoir d'afficher dans ma console
Merci
J'essaye de faire un puissance 4 en python.
Je n'ai que les bases, donc je ne peux utiliser que des commandes simples et basiques. Même si cela rallonge le code, ce n'est pas grave.
Je suis rendu au vérification des colonnes et j'ai écrit un programme qui est censé fonctionner or ce n'est pas le cas. Je demande votre aide car je vois pas de solution.
Voici le programme en question:
def a_gagne_vert(grille, joueur): c = 0 while c < len(grille) - 3: for i in range(0, len(grille[0]) - 1): if grille[c][i] == grille[c + 1][i] == grille[c + 2][i] == grille[c + 3][i] == joueur: return True c = c + 1 return False print( a_gagne_vert([ [2, 1, 1, 1, 2, 2], [1, 1, 2, 2, 1, 2], [1, 1, 2, 0, 0, 2], [1, 1, 2, 2, 0, 2], [0, 0, 0, 0, 0, 0] ], 2 ))
Je devrais avoir d'afficher dans ma console
True, or c'est
False.
Merci
Configuration: Windows / Chrome 97.0.4692.71
A voir également:
- Aide puissance 4 simple verif colonne
- Test puissance pc - Guide
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
- Iphone 14 simple - Guide
2 réponses
Bonjour,
Merci d'utiliser les balises de codes dans tes prochains messages. Essaye aussi d'espacer ton code de sorte à te conformer aux recommandations PEP8 (espace derrière les virgules, espaces autour des opérateurs).
Ton bug est dû au fait que ton programme n'examine pas la dernière colonne. En effet, si tu écris
De plus, vu que tu connais
Dernier point : Il faut être vigilant à ce que retourne un test d'égalité. En l'occurrence, python3 renvoie la valeur (et non
Bonne chance
Merci d'utiliser les balises de codes dans tes prochains messages. Essaye aussi d'espacer ton code de sorte à te conformer aux recommandations PEP8 (espace derrière les virgules, espaces autour des opérateurs).
Ton bug est dû au fait que ton programme n'examine pas la dernière colonne. En effet, si tu écris
for i in range(n), tu itères de
0inclue à
nexclu avec un pas de
1, donc sur les valeurs
0, 1 ..., n -1.
De plus, vu que tu connais
foret
range, tu devrais l'utiliser à la place de ta boucle
while, ce serait plus élégant. Généralement les indices sont notés
iet
j(
ipour les lignes de la matrices,
jpour les indices de la colonne). En tout cas, ce que tu appelles
cn'est pas adéquat, car ce n'est pas un indice de colonne mais de ligne. Donc si tu veux utiliser
iet
c, on aboutirait au code suivant :
def a_gagne_vertical(grille, joueur): for i in range(len(grille) - 3): for c in range(len(grille[0])): if grille[i][c] == grille[i + 1][c] == grille[i + 2][c] == grille[i + 3][c] == joueur: return True return False print( a_gagne_vertical([ [2, 1, 1, 1, 2, 2], [1, 1, 2, 2, 1, 2], [1, 1, 2, 0, 0, 2], [1, 1, 2, 2, 0, 2], [0, 0, 0, 0, 0, 0] ], 2 ))
Dernier point : Il faut être vigilant à ce que retourne un test d'égalité. En l'occurrence, python3 renvoie la valeur (et non
Trueou
False), ce qui signifie que lorsqu'un test d'égalité est évalue, on ne compare pas un booléen à une valeur de ta matrice. Donc c'est correct en python3, mais selon le langage, écrire un test ainsi peut ne pas marcher.
Bonne chance
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
il y a une petite erreur en ligne 4: affiche peut-être les valeurs de i pour t'aider à comprendre.
il y a une petite erreur en ligne 4: affiche peut-être les valeurs de i pour t'aider à comprendre.
par un for, je suggère plutôt:
et pas