Opérations arithmétiques en langage Python#
Le calcul numérique est au cœur de tout langage de programmation. Python excelle particulièrement dans ce domaine : il gère nativement des entiers de taille arbitraire sans risque de dépassement de capacité (overflow) et propose des opérateurs dédiés aux calculs scientifiques et financiers.
1. Les 7 opérateurs arithmétiques fondamentaux#
Considérons deux variables a = 17 et b = 5 :
| Opération | Symbole | Syntaxe | Exemple (17 et 5) |
Résultat | Remarques |
|---|---|---|---|---|---|
| Addition | + |
a + b |
17 + 5 |
22 |
Concatène aussi les chaînes et listes |
| Soustraction | - |
a - b |
17 - 5 |
12 |
Utilisé aussi pour les opposés (-x) |
| Multiplication | * |
a * b |
17 * 5 |
85 |
Répète aussi les chaînes ("-" * 10) |
| Division réelle | / |
a / b |
17 / 5 |
3.4 |
Renvoie toujours un float |
| Division entière | // |
a // b |
17 // 5 |
3 |
Partie entière (troncature vers le bas) |
| Modulo | % |
a % b |
17 % 5 |
2 |
Reste de la division euclidienne |
| Exponentiation | ** |
a ** b |
2 ** 8 |
256 |
Élévation à la puissance (\(a^b\)) |
a = 17
b = 5
print("Division reelle :", a / b) # 3.4
print("Division entiere :", a // b) # 3
print("Reste (Modulo) :", a % b) # 2 (car 17 = 3 * 5 + 2)
print("Puissance :", b ** 3) # 125 (5 * 5 * 5)
[!NOTE] La fonction native
divmod()
Si vous avez besoin simultanément du quotient entier et du reste, Python propose la fonctiondivmod(a, b)qui calcule les deux en une seule opération :
2. Précédence et priorité des opérateurs (PEMDAS)#
Lorsque plusieurs opérateurs sont combinés au sein d'une même expression, Python évalue le calcul selon les règles mathématiques de priorité :
- Parenthèses :
( ... )(priorité absolue) - Exposants :
**(évalué de droite à gauche !) - Multiplication, Division, Division entière et Modulo :
*,/,//,% - Addition et Soustraction :
+,-
# Exemple d'ordre d'évaluation
calcul = 10 + 2 * 3 ** 2 # 10 + 2 * 9 -> 10 + 18 -> 28
print(calcul)
# Forcer la priorité avec des parenthèses
calcul_force = ((10 + 2) * 3) ** 2 # (12 * 3) ** 2 -> 36 ** 2 -> 1296
print(calcul_force)
3. Les opérateurs d'affectation augmentée#
Pour mettre à jour la valeur d'une variable en lui appliquant une opération arithmétique, Python propose une syntaxe compacte :
| Opérateur augmenté | Équivalence longue | Description |
|---|---|---|
x += 5 |
x = x + 5 |
Incrémente x de 5 |
x -= 2 |
x = x - 2 |
Décrémente x de 2 |
x *= 3 |
x = x * 3 |
Multiplie x par 3 |
x /= 2 |
x = x / 2 |
Divise x par 2 |
x //= 4 |
x = x // 4 |
Division entière par 4 |
x %= 10 |
x = x % 10 |
Modulo par 10 |
x **= 2 |
x = x ** 2 |
Élève x au carré |
[!WARNING] Contrairement au langage C ou JavaScript, les opérateurs d'auto-incrémentation préfixés ou postfixés
++xetx++n'existent pas en Python ! Utilisez toujoursx += 1.
4. Fonctions mathématiques natives utiles#
Sans même importer de module externe, Python fournit des fonctions intégrées pour les calculs courants :
# 1. Valeur absolue
print(abs(-42.5)) # 42.5
# 2. Arrondi numérique
print(round(3.14159, 2)) # 3.14 (arrondi à 2 décimales)
print(round(127, -1)) # 130 (arrondi à la dizaine la plus proche)
# 3. Minimum et Maximum
notes = [14, 18, 9, 15]
print("Note minimale :", min(notes)) # 9
print("Note maximale :", max(notes)) # 18
# 4. Somme d'une séquence
print("Total :", sum(notes)) # 56
5. Attention critique sur la fonction eval()#
La fonction eval() permet d'interpréter dynamiquement une chaîne de caractères comme du code Python :
[!CAUTION] Avertissement de cybersécurité :
Ne passez jamais une saisie utilisateur non vérifiée à la fonctioneval()! Un utilisateur malveillant pourrait taper__import__('os').system('rmdir /s /q C:\\')et détruire instantanément votre système d'exploitation. Pour évaluer des expressions mathématiques saisies par un utilisateur de manière sécurisée, utilisez plutôt le module standardast.literal_evalou une bibliothèque de parsing dédiée.
6. Défi d'application#
Écrivez un script nommé distributeur_monnaie.py qui prend en entrée un montant entier en euros (par exemple 187) et calcule le nombre optimal de billets de 50 €, 20 €, 10 € et pièces de 2 € et 1 € à rendre, en exploitant uniquement la division entière // et le modulo %.
Commentaires