Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1119 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Une très bête question "and" comme "or"?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une très bête question "and" comme "or"?

n°2265522
morris aka​ the moose
en décompensation maniaque
Posté le 08-09-2015 à 22:08:14  profilanswer
 

Bonjour,
 
très bête question, j'ai honte mais je ne comprends pas pourquoi python fait la différence entre
 
        if X in Z and Y in Z  
        if X and Y in Z
 
 
Dasn le premier cas, il va chercher toute les occurences de 'Z' qui remplissent les deux critères (x et y), dans l'autre il va lister toutes les occurences qui contiennet x ou y dans z => le and est interprêté comme un "or"
 
Moi pas comprendre :-/
 
merci d'avance :hello:


---------------
"La chance de voir une biche" Archlinux :: http://www.archlinux.org/ ::
mood
Publicité
Posté le 08-09-2015 à 22:08:14  profilanswer
 

n°2265527
rufo
Pas me confondre avec Lycos!
Posté le 08-09-2015 à 22:56:57  profilanswer
 

Ca serait pas une question de priorité des opérateurs du genre :
if (x in z) and (y in z)
if (x) and (y in z)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2265532
masklinn
í dag viðrar vel til loftárása
Posté le 09-09-2015 à 11:02:40  profilanswer
 

rufo a écrit :

Ca serait pas une question de priorité des opérateurs du genre :
if (x in z) and (y in z)
if (x) and (y in z)


Correct. La première expression vérifie que x est dans z et y est dans z, la seconde vérifie que x (est "truthy" ), et que y est dans z (mais pas que x est dans z).

 

Nota bene: (x and y) in z ne va pas non plus vérifier que `x in z and y in z`, c'est pas comme ça que ça marche (si `x` est truthy ça va vérifier que `x in z`, sinon ça va vérifier que `y in z`, mais jamais les deux)

Message cité 1 fois
Message édité par masklinn le 09-09-2015 à 11:03:39

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2265606
czh
Posté le 09-09-2015 à 22:24:24  profilanswer
 

La première expression "if X in Z and Y in Z" est une expression booléenne.
 
Dans un monde, où la deuxième expression "if X and Y in Z" serait équivalente à la première expression, il s'agirait de la représentation d'une expression ensembliste.
 
Les opérateurs or et and sont opérateurs booléens, on ne peut pas les utiliser comme des opérateurs ensemblistes. Et donc la deuxième expression se comporte comme une expression booléenne. (Les posts ci-dessus expliquent très bien comment est interprété cette expression donc je ne vais pas revenir dessus.)
 
Pour écrire des expressions ensemblistes, il faudrait que le langage puisse utiliser des opérateurs ensemblistes qui serait probablement nommé union et intersect ce qui donnerait probablement un truc du genre "if (X union Y) in Z". Ou que le langage soit capable : soit de distinguer à la volée les 2 types d'expressions pour y appliquer les bons opérateurs, soit d'avoir des marqueurs implictes à cet usage du genre "ifensemblist X and Y in Z".
 
in est un opérateur ensembliste, il s'agit d'un include.
 
edit: apparemment, python a une syntaxe ensembliste : https://docs.python.org/2/library/stdtypes.html#set
Et donc il suffit d'utiliser union (|) à la place de and et utiliser issuperset pour vérifier si l'ensemble complet est inclus dans l'autre.
 
Un truc du genre "if (x|y).issuperset(z)".

Message cité 1 fois
Message édité par czh le 09-09-2015 à 23:16:35
n°2265695
morris aka​ the moose
en décompensation maniaque
Posté le 10-09-2015 à 17:26:59  profilanswer
 

rufo a écrit :

Ca serait pas une question de priorité des opérateurs du genre :
if (x in z) and (y in z)
if (x) and (y in z)


masklinn a écrit :


Correct. La première expression vérifie que x est dans z et y est dans z, la seconde vérifie que x (est "truthy";), et que y est dans z (mais pas que x est dans z).
 
Nota bene: (x and y) in z ne va pas non plus vérifier que `x in z and y in z`, c'est pas comme ça que ça marche (si `x` est truthy ça va vérifier que `x in z`, sinon ça va vérifier que `y in z`, mais jamais les deux)


czh a écrit :

La première expression "if X in Z and Y in Z" est une expression booléenne.
 
Dans un monde, où la deuxième expression "if X and Y in Z" serait équivalente à la première expression, il s'agirait de la représentation d'une expression ensembliste.
 
Les opérateurs or et and sont opérateurs booléens, on ne peut pas les utiliser comme des opérateurs ensemblistes. Et donc la deuxième expression se comporte comme une expression booléenne. (Les posts ci-dessus expliquent très bien comment est interprété cette expression donc je ne vais pas revenir dessus.)
 
Pour écrire des expressions ensemblistes, il faudrait que le langage puisse utiliser des opérateurs ensemblistes qui serait probablement nommé union et intersect ce qui donnerait probablement un truc du genre "if (X union Y) in Z". Ou que le langage soit capable : soit de distinguer à la volée les 2 types d'expressions pour y appliquer les bons opérateurs, soit d'avoir des marqueurs implictes à cet usage du genre "ifensemblist X and Y in Z".
 
in est un opérateur ensembliste, il s'agit d'un include.
 
edit: apparemment, python a une syntaxe ensembliste : https://docs.python.org/2/library/stdtypes.html#set
Et donc il suffit d'utiliser union (|) à la place de and et utiliser issuperset pour vérifier si l'ensemble complet est inclus dans l'autre.
 
Un truc du genre "if (x|y).issuperset(z)".


merci à tous les trois pour ces réponses claires, et mention spéciale à czh pour explication fondamentale :-)
J'ai appris un truc important.
:hello:


---------------
"La chance de voir une biche" Archlinux :: http://www.archlinux.org/ ::

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Une très bête question "and" comme "or"?

 

Sujets relatifs
Bonnes pratiques pour une gestion de stocks très basique[RSA] Question sur les clés RSA
question xml[cakephp] Question de noob sur les models
Simple question ??Question programmation miniserveur/client FTP
[JavaScript] question très bête !!!apprendre le c et le c++ et une ptite question tres bete
[DELPHI] Question très bête !!![C] Question tres bete, mais jamais fait ....
Plus de sujets relatifs à : Une très bête question "and" comme "or"?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR