Opérateurs et expressions
Calculer avec Python : division entière, modulo, priorités, et la logique booléenne
§1.Une expression, c'est un calcul qui a une valeur
2 + 3 est une EXPRESSION : Python l'évalue et obtient la valeur 5. prix * 1.2 en est une aussi, tout comme age >= 18 — sauf que celle-ci vaut True ou False.
Tout ce chapitre consiste à enrichir ta boîte à outils d'expressions. Ce sont les briques de tous les programmes que tu écriras.
§2.Les opérateurs arithmétiques
| Opérateur | Nom | Exemple | Résultat |
|---|---|---|---|
| + | addition | 7 + 2 | 9 |
| - | soustraction | 7 - 2 | 5 |
| * | multiplication | 7 * 2 | 14 |
| / | division | 7 / 2 | 3.5 (toujours un float) |
| // | division entière | 7 // 2 | 3 (on jette la partie décimale) |
| % | modulo (le reste) | 7 % 2 | 1 |
| ** | puissance | 7 ** 2 | 49 |
On n'écrit jamais 2x ni xy : la multiplication s'écrit toujours explicitement, 2 * x et x * y.
§3.// et % : le couple le plus utile de tout Python
Ces deux-là paraissent anecdotiques et se révèlent partout. Ils viennent de la division posée que tu faisais à l'école primaire : 17 divisé par 5, ça fait 3 et il reste 2.
Le // te donne le QUOTIENT (3), le % te donne le RESTE (2). Ensemble, ils décomposent un nombre.
Le modulo répond aussi à une question qu'on se pose sans arrêt : « est-ce divisible ? ». Si n % k vaut 0, alors n est divisible par k. C'est comme ça qu'on teste la parité, qu'on trouve les nombres premiers, qu'on détecte les années bissextiles.
total = 3725 # un nombre de secondes print(total // 3600) # heuresprint(total % 3600 // 60) # minutesprint(total % 60) # secondes print(10 % 2) # 0 : 10 est pairprint(7 % 2) # 1 : 7 est impair3725 secondes font 1 heure, 2 minutes et 5 secondes. Le % 3600 enlève les heures déjà comptées, le // 60 convertit le reste en minutes. Ce schéma sert pour les durées, la monnaie, les conversions d'unités.
§7.Les priorités
Python applique les mêmes règles qu'en mathématiques. La puissance d'abord, puis la multiplication et les divisions, puis l'addition et la soustraction. À priorité égale, on évalue de gauche à droite.
Et comme en maths, les parenthèses passent avant tout. Dans le doute, mets-en : personne ne t'a jamais reproché un code trop lisible.
print(2 + 3 * 4) # la multiplication d'abordprint((2 + 3) * 4) # les parenthèses d'abord moyenne_fausse = 10 + 12 + 14 / 3moyenne_juste = (10 + 12 + 14) / 3print(moyenne_fausse)print(moyenne_juste)L'oubli de parenthèses dans un calcul de moyenne est une erreur classique — et silencieuse : le programme ne plante pas, il donne juste un résultat faux. C'est le pire type de bug.
§9.Les raccourcis d'affectation
- x += 5
- Raccourci pour x = x + 5. Il existe aussi -=, *=, /=, //=, %= et **=.
- Exemple. compteur += 1 est la façon standard d'incrémenter.
- Pas de x++ en Python
- D'autres langages ont un x++ pour ajouter 1. Python ne l'a pas : on écrit toujours x += 1. Si tu écris x++, tu obtiens une SyntaxError.
§10.Comparer : les expressions booléennes
Comparer deux valeurs produit un booléen, c'est-à-dire True ou False. Ces expressions sont le carburant des conditions du prochain chapitre.
Attention à la distinction la plus importante du langage : un seul = AFFECTE une valeur, deux == COMPARENT. Les confondre est l'erreur de syntaxe la plus fréquente chez les débutants.
§11.Les opérateurs de comparaison
| Opérateur | Signification | Exemple | Valeur |
|---|---|---|---|
| == | est égal à | 5 == 5 | True |
| != | est différent de | 5 != 3 | True |
| < | est inférieur à | 3 < 5 | True |
| > | est supérieur à | 3 > 5 | False |
| <= | inférieur ou égal | 5 <= 5 | True |
| >= | supérieur ou égal | 3 >= 5 | False |
§12.Combiner des conditions
- and
- Vrai seulement si les DEUX côtés sont vrais.
- Exemple. age >= 16 and age <= 18 — être entre 16 et 18 ans.
- or
- Vrai si AU MOINS UN des deux côtés est vrai.
- Exemple. jour == "samedi" or jour == "dimanche" — c'est le week-end.
- not
- Inverse la valeur : not True vaut False.
- Exemple. not (age >= 18) est équivalent à age < 18.
age = 17 print(age >= 16 and age <= 18)print(16 <= age <= 18) # écriture enchaînée, propre à Python print(age % 2 == 0) # est-il pair ?print(not (age % 2 == 0)) # est-il impair ?L'écriture 16 <= age <= 18 se lit exactement comme en mathématiques. Très peu de langages l'autorisent — profite-en, c'est bien plus lisible que la version avec and.
Un booléen est une valeur comme une autre : on peut l'afficher, le stocker dans une variable.
À retenir
- // donne le quotient entier, % donne le reste — le couple qui décompose durées, monnaie et divisibilité.
- n % k == 0 signifie « n est divisible par k » : c'est le test de base de la parité et de la primalité.
- Les priorités sont celles des maths ; une parenthèse oubliée donne un résultat faux SANS erreur.
- = affecte, == compare. C'est la confusion la plus fréquente du débutant.
- and, or et not combinent les conditions ; Python autorise aussi 16 <= age <= 18.
- x += 1 pour incrémenter — x++ n'existe pas en Python.
- Ne teste jamais l'égalité stricte entre deux nombres à virgule.