-
Expression avec ET/OU
Bonjour,
J'ai un petit problème concernant la vérification d'une expression qui est la suivante :
Code:
if ((insert_piece["N"] == piece_vois[g[0]]) | (piece_vois[g[0]] == "x")) & (insert_piece["E"] == piece_vois[g[1]] | (piece_vois[g[1]] == "x")) & (insert_piece["S"] == piece_vois[g[2]] | (piece_vois[g[2]] == "x")) & (insert_piece["O"] == piece_vois[g[3]] | (piece_vois[g[3]] == "x")):
qui me renvoie l'erreur suivante:
TypeError: unsupported operand type(s) for |: 'str' and 'bool'
Je crois comprendre cette erreur. La vérification de la condition conduit à comparer des variables de type booléen et des chaînes. Mais je ne sais pas comment faire autrement.
Merci pour vos idées
-
& et | sont des opérateurs binaires.
A priori, c'est and et or que tu dois utliser
-
oui vous utilisez AND et OR
-
Je m'étais rabattu sur cette solution car Python me met une erreur de syntaxe avec AND et OR.
Code:
if ((insert_piece["N"] == piece_vois[g[0]]) OR (piece_vois[g[0]] == "x")) AND (insert_piece["E"] == piece_vois[g[1]] OR (piece_vois[g[1]] == "x")) AND (insert_piece["S"] == piece_vois[g[2]] OR (piece_vois[g[2]] == "x")) AND (insert_piece["O"] == piece_vois[g[3]] OR (piece_vois[g[3]] == "x")):
erreur
if ((insert_piece["N"] == piece_vois[g[0]]) OR (piece_vois[g[0]] == "x")) AND ((insert_piece["E"] == piece_vois[g[1]]) OR (piece_vois[g[1]] == "x")) AND ((insert_piece["S"] == piece_vois[g[2]]) OR (piece_vois[g[2]] == "x")) AND ((insert_piece["O"] == piece_vois[g[3]]) OR (piece_vois[g[3]] == "x")):
^
SyntaxError: invalid syntax
offset 58, c'est à dire au niveau du premier OR
-
c'est and et or et non AND et OR qu'il faut utiliser
-
A d'accord autant pour moi,
Merci pour cette réponse :)