Les opérateurs sont les outils de calcul de Python. Ce chapitre couvre les trois grandes familles : arithmétiques (pour les nombres), de comparaison (pour tester), logiques (pour combiner des conditions). On termine par les opérateurs d'affectation combinée, très courants au TOSA.
Les opérateurs arithmétiques
Python dispose des opérateurs mathématiques classiques, plus quelques ajouts utiles :
| Opérateur | Nom | Exemple | Résultat |
|---|---|---|---|
+ |
Addition | 3 + 2 |
5 |
- |
Soustraction | 5 - 2 |
3 |
* |
Multiplication | 3 * 4 |
12 |
/ |
Division réelle | 7 / 2 |
3.5 |
// |
Division entière | 7 // 2 |
3 |
% |
Modulo (reste) | 7 % 2 |
1 |
** |
Puissance | 2 ** 10 |
1024 |
Démonstrations :
print("Addition :", 3 + 2)
print("Soustraction :", 10 - 3)
print("Multiplication :", 4 * 5)
print("Division :", 7 / 2)
print("Division entière:", 7 // 2)
print("Modulo :", 7 % 2)
print("Puissance :", 2 ** 10)Le cas négatif de //
La division entière // tronque vers le bas (vers moins l'infini), pas vers zéro :
print(7 // 2) # 3
print(-7 // 2) # -4, PAS -3 !L'opérateur modulo %
Le modulo renvoie le reste de la division entière. Très utile pour :
- Tester la parité :
n % 2 == 0→nest pair. - Cycler :
i % 7→ donne toujours un nombre entre 0 et 6. - Repérer un multiple :
n % 5 == 0→nest multiple de 5.
print(10 % 2) # 0 : 10 est pair
print(7 % 2) # 1 : 7 est impair
print(7 % 2 == 0) # False : le test de parité
print(15 % 5 == 0) # True : 15 est un multiple de 5Priorité des opérateurs
Les règles sont celles des mathématiques :
- Parenthèses
() - Puissance
** *,/,//,%+,-
En cas de doute, mettez des parenthèses.
# Sans parenthèses
print(2 + 3 * 4) # 14, pas 20
# Avec parenthèses
print((2 + 3) * 4) # 20Les opérateurs d'affectation combinée
Quand on veut modifier la valeur d'une variable par rapport à sa valeur actuelle, on peut utiliser des raccourcis :
| Opérateur | Équivalent | Exemple |
|---|---|---|
+= |
x = x + v |
x += 5 |
-= |
x = x - v |
x -= 3 |
*= |
x = x * v |
x *= 2 |
/= |
x = x / v |
x /= 4 |
//= |
x = x // v |
x //= 3 |
%= |
x = x % v |
x %= 10 |
**= |
x = x ** v |
x **= 2 |
Exemple d'utilisation :
compteur = 0
compteur += 1 # compteur vaut maintenant 1
compteur += 1 # compteur vaut maintenant 2
compteur += 5 # compteur vaut maintenant 7
print(compteur)prix = 100
prix *= 1.20 # applique une majoration de 20%
print(prix)Les opérateurs de comparaison
Ces opérateurs renvoient toujours un booléen (True ou False).
| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
== |
Égal à | 3 == 3 |
True |
!= |
Différent de | 3 != 4 |
True |
< |
Strictement inférieur | 3 < 5 |
True |
> |
Strictement supérieur | 5 > 3 |
True |
<= |
Inférieur ou égal | 3 <= 3 |
True |
>= |
Supérieur ou égal | 3 >= 4 |
False |
age = 18
print("Majeur ?", age >= 18)
print("Mineur ?", age < 18)
print("Pile 18 ?", age == 18)Comparaisons chaînées
Python permet d'écrire des comparaisons à la façon mathématique :
age = 25
# Python autorise 18 <= age < 65 (plus lisible)
if 18 <= age < 65:
print("Adulte actif")C'est équivalent à age >= 18 and age < 65 mais bien plus lisible. Cette syntaxe est spécifique à Python — elle n'existe pas dans la plupart des autres langages.
Les opérateurs logiques
Ces opérateurs combinent des booléens :
| Opérateur | Sens | Exemple |
|---|---|---|
and |
ET logique | True and False → False |
or |
OU logique | True or False → True |
not |
NON logique (inverse) | not True → False |
Table de vérité :
print("and :")
print(" T and T =", True and True)
print(" T and F =", True and False)
print(" F and F =", False and False)
print("or :")
print(" T or T =", True or True)
print(" T or F =", True or False)
print(" F or F =", False or False)
print("not :")
print(" not T =", not True)
print(" not F =", not False)Usage typique :
age = 25
permis = True
peut_conduire = age >= 18 and permis
print("Peut conduire :", peut_conduire)Court-circuit (lazy evaluation)
Important pour le TOSA : Python évalue les opérateurs and et or en court-circuit :
A and B: siAestFalse,Bn'est même pas évalué (c'est déjàFalse).A or B: siAestTrue,Bn'est même pas évalué (c'est déjàTrue).
Exemple pratique : éviter une division par zéro.
x = 0
# Si x == 0, la deuxième partie N'EST PAS évaluée, donc pas de ZeroDivisionError
if x != 0 and 10 / x > 2:
print("OK")
else:
print("x vaut zéro ou le quotient est petit")L'opérateur in
in teste si un élément appartient à une collection (liste, tuple, chaîne, ensemble, dictionnaire).
print("a" in "abc") # True
print(3 in [1, 2, 3]) # True
print("nom" in {"nom": "Alice"}) # True (regarde les clés du dict)
print(5 in (1, 2, 3)) # FalseSon contraire : not in.
print("z" not in "abc") # TrueOn reviendra longuement sur in dans les chapitres sur les structures de données.
Exercices
10 / 2 ?
17 % 5 ?
x après ce code ?
x = 10 x **= 2
True and False or True ?
3 < 5 < 10 ?
-7 // 2 ?
x = 5 print(x > 0 and x < 10)
Un produit coûte 150 € HT (prix_ht). Calculez et affichez :
- Le montant de la TVA à 20 % (
taux_tva), rangé dans la variabletva. - Le prix TTC, rangé dans la variable
prix_ttc.
Calculez le booléen est_pair, qui vaut True si l'entier nombre est pair et False sinon.
Indice : un nombre est pair si son reste par 2 vaut 0 — et une comparaison renvoie déjà un booléen.
Une durée duree est donnée en secondes. Écrivez un programme qui la décompose en heures, minutes, secondes, rangées dans les variables heures, minutes et secondes.
Par exemple, pour 3725 secondes, on veut afficher : 1 h 2 min 5 s.
Indice : utilisez // et %.