Livre_silo 30 août 2013 16:32 Page 67
¨
©
¨
©
¨
©
¨
©
C o p y r i g h t E y r o l l e s
67
3 – Expressions : types et opérations
ATTENTION Les opérateurs logiques bit à bit
Il existe en Python comme dans d’autres langages deux opérateurs & et | ressemblant à and
et or mais avec de subtiles différences de signification qui peuvent rendre leur comportement difficile à comprendre :
• Ils ont une plus forte précédence que les comparaisons, ainsi on aura :
In [51]: False == False | True
Out[51]: False
car dans cette expression on évalue d’abord False | True.
• Ils ne sont pas paresseux, les deux membres sont systématiquement évalués :
In [52]: (0 != 0) & (1/0 == 2)
ZeroDivisionError: division by zero
• Ils désignent en réalité des opérations logiques bit à bit. Par exemple, les représentations
binaires de 9 et 10 sont respectivement 1001 et 1010. Si on calcule le « et logique » de
chacun de leurs bits de même position, on obtient le mot 1000, ce qui explique le résultat
suivant :
In [53]: 9 & 10
Out[53]: 8
On évitera donc de se servir de & et |, à moins de savoir précisément pourquoi on fait ce
choix et quelles en seront les conséquences.
Exercice 3.8 Quelle est la valeur des expressions booléennes suivantes, lorsqu’elle existe ?
• 3 * 3.5 > 10
• 3. * 7 == 21
• 3 - 1 => 1
• 0 < 10**-300 == 100**-150
• not (2-1 == 1 == 4+3)
• not (True and False)
• not (not True)
• (5.5 * 2 == 11. or 1/2 != .5) and (3 % 2 == 0)
Vérifier les réponses dans un interpréteur.
Exercice 3.9 Écrire des expressions booléennes traduisant les conditions suivantes. Les nombres mentionnés sont tous des flottants.
• Le point de coordonnées (x, y) est à l’intérieur du cercle de centre (z, t) et de rayon r.
• Les points de coordonnées (x, y) et (z, t) sont situés sur une même droite parallèle à l’un des axes du
repère.
• Les points de coordonnées (x, y) et (z, t) sont les sommets opposés d’un carré dont les côtés sont
parallèles aux axes du repère.
• Il existe un triangle dont les côtés mesurent respectivement a, b et c.
Exercice 3.10 Écrire des expressions booléennes traduisant les conditions suivantes. Les nombres mentionnés sont tous des entiers.
• L’entier n est divisible par 5.
• Les entiers m et n sont tels que l’un est multiple de l’autre.
• Les entiers m et n sont de même signe.
• Les trois entiers m, n et p sont de même signe.
• n est le plus petit multiple de 7 supérieur à 10 100 .
• Les trois entiers m, n et p sont distincts deux à deux.
Précédent

- 80/402

Suivant