• "and" et "&" sont-ils vraiment synonymes ?
Réponses:
4
Visites:
0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum.
Inscrivez-vous maintenant
• "and" et "&" sont-ils vraiment synonymes ?
Posté par
daroussin
le
05/09/2008 14:54
Ci dessous un petit script extrait de l’excellent support de formation http://www.cifen.ulg.ac.be/inforef/swi/download/python_notes_hyper.pdf :
6.8. Écrire un programme qui, étant données deux bornes entières a et b additionne les nombres multiples de 3 et de 5 compris entre ces bornes. Prendre par exemple a = 0, b = 32. Le résultat devrait être alors 0 + 15 + 30 = 45. a,b = 0,32 s = 0 while a <= b: if a % 3 == 0 and a % 5 == 0: s=s+a a=a+1 print s Le résultat est bien 45. Maintenant, changez "and" en "&" dans le script. Le résultat devient 165 ! En fait le "&" se comporte comme un "or" et inversement, le "|" se comporte comme un "and". Mais seulement pour cette expression car, par exemple, les expressions "if 0 and 1:" et "if 0 & 1:" se comportent bel et bien de la même manière. En revanche, si je parenthèse l'expression : a,b = 0,32 s = 0 while a <= b: if (a % 3 == 0) and (a % 5 == 0): s=s+a a=a+1 print s je retrouve bien le même comportement avec "and" et "&". Je soupçonne donc "&" de ne pas être parfaitement synonyme de "and" et "|" de ne pas être parfaitement synonyme de "or". Tout au moins, leur priorité semble ne pas être la même. Quelqu’un a-t-il une explication à cela ? D'avance merci. PS: le code ci-dessus a été saisi avec l'indentation "règlementaire". Pourtant elle disparait de l'aperçu. Qu'est-ce que je fais de mal ? |
• Re: "and" et "&" sont-ils vraiment synonymes ?
Posté par
daroussin
le
05/09/2008 15:13
La même question mais avec le code indenté et mes excuses.
Ci dessous un petit script extrait de l’excellent support de formation http://www.cifen.ulg.ac.be/inforef/swi/download/python_notes_hyper.pdf : 6.8. Écrire un programme qui, étant données deux bornes entières a et b additionne les nombres multiples de 3 et de 5 compris entre ces bornes. Prendre par exemple a = 0, b = 32. Le résultat devrait être alors 0 + 15 + 30 = 45. code: a,b = 0,32
Le résultat est bien 45. Maintenant, changez "and" en "&" dans le script. Le résultat devient 165 ! En fait le "&" se comporte comme un "or" et inversement, le "|" se comporte comme un "and". Mais seulement pour cette expression car, par exemple, les expressions "if 0 and 1:" et "if 0 & 1:" se comportent bel et bien de la même manière. En revanche, si je parenthèse l'expression : code: a,b = 0,32
je retrouve bien le même comportement avec "and" et "&". Je soupçonne donc "&" de ne pas être parfaitement synonyme de "and" et "|" de ne pas être parfaitement synonyme de "or". Tout au moins, leur priorité semble ne pas être la même. Quelqu’un a-t-il une explication à cela ? D'avance merci. |
• Re: "and" et "&" sont-ils vraiment synonymes ?
Posté par
gawel
le
05/09/2008 15:34
C'est deux chose totalement différentes. Y a d'un coté une opération booleene et de l'autre une histoire de bite:
http://docs.python.org/lib/boolean.html et http://docs.python.org/lib/bitstring-ops.html D'ailleurs si tu test avec autre chose qu'un entier ça pète: code:
|
• Re: "and" et "&" sont-ils vraiment synonymes ?
Posté par
isatis39871
le
05/09/2008 15:35
Bonjour,
& et and, ainsi que | et or ne sont pas synonymes en Python. and et or sont des opérateurs booléens, ils testent ce qui est vrai ou faux dans un contexte booléen, donc leur résultat dépend de ce que python considère comme vrai ou faux. En l'occurence python considère faux : - None - une chaine / sequence vide - 0 Tout le reste est vrai (je schématise). Pour & et |, la situation est différente. Ce sont des opérateurs binaires qui effectuent une tests sur des octets. Ce qui est trompeur, c'est : - && et || sont souvent utilisés dans d'autres langages (java, c, php...) comme and et or en Python - & et | PEUVENT être utilisés pour faire des comparaisons booléennes par des fanatiques de l'optimisation mais celà implique un code un peu torturé. En Python, on préfère la lisibilité. Il est très peu probable que vous ayez besoin de & et | (à moins de faire des maths avancées), donc rangez les au placard et profitez du fait que Python permet généralement de tout faire simplement et clairement. Sur un gros développement, vous allez voir, ça change la vie. Cordialement, |
• Re: "and" et "&" sont-ils vraiment synonymes ?
Posté par
daroussin
le
18/11/2008 12:21
Merci à vous deux qui avez pris le temps de répondre.
|






