Problème condition python objet
Résolu/Fermé
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
-
Modifié le 8 mai 2020 à 00:44
Vicoumich Messages postés 31 Date d'inscription lundi 8 mai 2017 Statut Membre Dernière intervention 26 août 2020 - 9 mai 2020 à 01:04
Vicoumich Messages postés 31 Date d'inscription lundi 8 mai 2017 Statut Membre Dernière intervention 26 août 2020 - 9 mai 2020 à 01:04
A voir également:
- Problème condition python objet
- Excel cellule couleur si condition texte - Guide
- Vente objet occasion entre particulier - Guide
- Citizen code python avis - Accueil - Outils
- Identifier un objet à partir d'une photo - Guide
- Objet interdit en cabine ryanair - Guide
5 réponses
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
8 mai 2020 à 00:47
8 mai 2020 à 00:47
Bonsoir Vicoumich,
il est difficile de t'apporter de l'aide sans l’indentation, bien que je ne doute pas que ce soit le cas dans ton code chez toi.
Pour conserver l'indentation sur le site il faut utiliser les balises de code python avant ou après avoir copié ton code. Tu peux te référer à ce petit tuto : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Un code non indenté, d'autant plus quand il est long, ça a tendance à décourager les personnes qui veulent aider. :-)
il est difficile de t'apporter de l'aide sans l’indentation, bien que je ne doute pas que ce soit le cas dans ton code chez toi.
Pour conserver l'indentation sur le site il faut utiliser les balises de code python avant ou après avoir copié ton code. Tu peux te référer à ce petit tuto : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Un code non indenté, d'autant plus quand il est long, ça a tendance à décourager les personnes qui veulent aider. :-)
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
8 mai 2020 à 14:52
8 mai 2020 à 14:52
Bonjour,
Le problème se trouve ici :
Tu ne peux pas l'écrire comme on dirait en français : "0, 1 et 2 sont tous dans la liste
En effet, dans un contexte avec des opérateurs booléens tel que
Quand tu écris :
cela revient au même qu' écrire :
car 0 devient
Ta condition est donc
Le problème se trouve ici :
0 and 1 and 2 in self.x_croix
Tu ne peux pas l'écrire comme on dirait en français : "0, 1 et 2 sont tous dans la liste
self.x_croix"
En effet, dans un contexte avec des opérateurs booléens tel que
and, les nombres, s'ils sont une condition à eux-seuls, sont convertis en booléens.
Quand tu écris :
0 and 1 and 2 in self.x_croix
cela revient au même qu' écrire :
False and True and (2 in self.x_croix)
car 0 devient
False
, tandis que tout autre nombre non nul devient True
.
Ta condition est donc
False
. Voilà pour l'explication. Je te laisse corriger.
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
9 mai 2020 à 01:03
9 mai 2020 à 01:03
C'est effectivement mieux ainsi, et il faut penser à le faire pour toutes tes conditions qui avaient le même problème.
Tu as testé à nouveau ?
Si cela répond à ta demande initiale, je te propose de marquer le sujet comme Résolu. :-)
Tu as testé à nouveau ?
Si cela répond à ta demande initiale, je te propose de marquer le sujet comme Résolu. :-)
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
9 mai 2020 à 01:04
9 mai 2020 à 01:04
Oui tout fonctionne bien après modification merci beaucoup
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
Modifié le 8 mai 2020 à 00:54
Modifié le 8 mai 2020 à 00:54
#fonction de tri les listes x/y_croix et x/y_ronds def tri_insertion(tab): for i in range(1, len(tab)): k = tab[i] j = i-1 while j >= 0 and k < tab[j] : tab[j + 1] = tab[j] j -= 1 tab[j + 1] = k return tab #fonction de tri des tuples dans les listes croix et ronds contenant les coordonnées de chaques formes def tri_insertion_tuple(tab): for i in range(1, len(tab)): k = tab[i][0] kk = tab[i] j = i-1 while j >= 0 and k < tab[j][0] : tab[j + 1] = tab[j] j -= 1 tab[j + 1] = kk return tab class morpion(): def __init__(self,longueur,largeur ): self.longueur = longueur self.largeur = largeur self.case = longueur * largeur self.case_ocup = [] self.croix = [] self.ronds = [] self.x_croix = [] self.y_croix =[] self.x_ronds = [] self.y_ronds = [] def placer_croix ( self, x , y ): x = int( x ) y = int( y ) pos = ( x , y ) if pos in self.case_ocup : return False else : self.case_ocup.append( pos ) self.croix.append( pos ) def placer_rond (self,x,y): x = int( x ) y = int( y ) pos = ( x , y ) if pos in self.case_ocup : return False else : self.case_ocup.append( pos ) self.ronds.append( pos ) #Une fonction pour remettre le jeu a zéro et recommencer un partie def reset (self): self.case_ocup = [] self.croix = [] self.ronds = [] self.x_croix = [] self.y_croix = [] self.x_ronds = [] self.y_ronds = [] #On vérifie si il y a un allignement de 3 croix ou de 3 ronds def _verife_(self): if len(self.croix) >= 3 or len(self.ronds) >= 3: self.x_croix = [x[0] for x in self.croix] self.y_croix =[x[1] for x in self.croix] self.x_ronds = [x[0] for x in self.ronds] self.y_ronds = [x[1] for x in self.ronds] self.x_croix = tri_insertion(self.x_croix) self.y_croix = tri_insertion(self.y_croix) self.croix = tri_insertion_tuple(self.croix) self.x_ronds = tri_insertion(self.x_ronds) self.y_ronds = tri_insertion(self.y_ronds) self.ronds = tri_insertion_tuple(self.ronds) if 0 and 1 and 2 in self.x_croix and (self.y_croix.count(0)==3 or self.y_croix.count(1)==3 or self.y_croix.count(2)==3): return 1 elif 0 and 1 and 2 in self.y_croix and (self.y_croix.count(0)==3 or self.y_croix.count(1)==3 or self.y_croix.count(2)==3): return 1 elif 0 and 1 and 2 in self.x_croix and self.croix[0][0] == self.croix[0][1] and self.croix[1][0] == self.croix[1][1] and self.croix[2][0] == self.croix[2][1]: return 1 if 0 and 1 and 2 in self.x_ronds and (self.y_ronds.count(0)==3 or self.y_ronds.count(1)==3 or self.y_ronds.count(2)==3): return 1 elif 0 and 1 and 2 in self.y_ronds and (self.y_ronds.count(0)==3 or self.y_ronds.count(1)==3 or self.y_ronds.count(2)==3): return 1 elif 0 and 1 and 2 in self.x_ronds and self.ronds[0][0] == self.ronds[0][1] and self.ronds[1][0] == self.ronds[1][1] and self.ronds[2][0] == self.ronds[2][1]: return 1 def pos_croix(self): return self.croix def play (): jeu = morpion(3,3) jeu.placer_croix(0,0) jeu.placer_croix(1,1) jeu.placer_croix(2,2) print(jeu.pos_croix()) print(jeu._verife_()) play()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Vicoumich
Messages postés
31
Date d'inscription
lundi 8 mai 2017
Statut
Membre
Dernière intervention
26 août 2020
8 mai 2020 à 22:36
8 mai 2020 à 22:36
merci beaucoup, voila la nouvelle ligne:
if (0 in self.x_croix and 1 in self.x_croix and 2 in self.x_croix) and (self.y_croix.count(0)==3 or self.y_croix.count(1)==3 or self.y_croix.count(2)==3):