Besoin d'aller plus loin qu'une simple addition ou multiplication ? Même si vous êtes comme moi et que les mathématiques vous donnent mal à la tête, vous allez voir que math vous simplifie la vie. Comme vous l'entendrez souvent, nul besoin de réinventer la roue, et même pour des calcules complexes.
Dans ce guide nous parlerons des fonctions principales de ce module.
Comment arrondir et tronquer des nombres avec Python ?
En Python, il existe plusieurs façons de réduire un nombre à virgule à un entier.
La fonction native round()
Sans parler du module math, la fonction native round() permet d'arrondir à l'entier le plus proche.
Attention
round() arrondit les valeurs finissant par .5 vers l'entier pair le plus proche (on parle alors d'arrondi bancaire).
print(round(2.4)) # Affiche : 2 print(round(2.6)) # Affiche : 3 print(round(2.5)) # Affiche : 2 (arrondi à l'entier pair) print(round(3.5)) # Affiche : 4 (arrondi à l'entier pair)
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
Arrondir vers le bas avec math.floor()
La fonction math.floor() renvoie le plus grand entier inférieur ou égal à la valeur de donnée.
import math print(math.floor(3.9)) # Affiche : 3 print(math.floor(3.1)) # Affiche : 3
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
Arrondir vers le haut avec math.ceil()
Vous l'avez deviné, c'est l'inverse de la fonction précédente.
import math print(math.ceil(3.1)) # Affiche : 4 print(math.ceil(3.9)) # Affiche : 4
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
Tronquer les décimales avec math.trunc()
Avec math.trunc() on ne parle plus d'arrondi, la fonction s'occupe de couper tout ce qui se trouve après la virgule.
import math print(math.trunc(3.9)) # Affiche : 3
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
Attention
Ne vous faites pas avoir par les nombres négatifs. C'est logique, mais je préfère revenir sur ce point :
-
math.floor()arrondi vers l'entier inférieur, donc plus loin de 0 -
math.ceil()arrondi vers l'entier supérieur, donc plus proche de 0
import math # Le plancher de -3.2 est l'entier en dessous print(math.floor(-3.2)) # Affiche : -4 # Le plafond de -3.2 est l'entier au-dessus print(math.ceil(-3.2)) # Affiche : -3
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
Calculer la valeur absolue en Python : abs() et math.fabs()
Pour obtenir la valeur positive d'un nombre, on utilise la valeur absolue. En Python, on peut utiliser abs(), une fonction native.
import math print(abs(-5)) # Affiche : 5 (entier) print(abs(-5.5)) # Affiche : 5.5 (flottant)
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
À noter
Vous remarquerez que abs() va conserver le type d'origine du nombre convertit.
math.fabs() convertir toujours le résultat en nombre à virgule.
import math print(math.fabs(-5)) # Affiche : 5.0 (toujours un flottant !)
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
Calculer des racines carrées et des puissances
Vous connaissez certainement l'opérateur ** pour les puissances ? Le module math offre des fonctions dédiées.
La racine carré avec math.sqrt()
Pour calculer la racine carrée d'un nombre, vous pouvez utiliser math.sqrt().
import math print(math.sqrt(16)) # Affiche : 4.0
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
La puissance d'un nombre avec math.pow()
La fonction math.pow(x, y) calcule x élevé à la puissance y. Contrairement à l'opérateur **, math.pow() renverra un nombre à virgule.
import math print(2 ** 3) # Affiche : 8 print(math.pow(2, 3)) # Affiche : 8.0
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
Les constantes mathématiques
À noter que le module math contient quelques constantes.
import math print(math.pi) # Affiche : 3.141592653589793 print(math.e) # Affiche : 2.718281828459045 (Constante d'Euler) print(math.tau) # Affiche : 6.283185307179586 (Équivalent à 2 * Pi)
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
L'infni avec math.inf
Si vous aimez faire des petits défis/exercices de code, math.inf peut s'avérer utile. Il représente l'infini.
import math # Un défi classique : trouver le prix le plus bas manuellement # dans une liste avec des grands écarts de valeurs prix = [450, 1205, 99, 15, 2300, 8, 42, 10500, 350] # On initialise avec l'infini positif prix_minimum = math.inf for p in prix: if p < prix_minimum: prix_minimum = p print(f"Le prix le plus bas est : {prix_minimum}") # Affiche : 8
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
Une astuce pour ne pas initialiser une variable avec une valeur arbitraire comme 99999999999999 😅.
On pourrait très bien faire l'inverse :
import math # Un cas d'usage beaucoup plus logique pour l'infini négatif : # Trouver la température maximale en plein hiver temperatures = [-5, -12, -2, -18, -1, -7] # On initialise avec l'infini négatif temperature_max = -math.inf for t in temperatures: if t > temperature_max: temperature_max = t print(f"La température la plus élevée est : {temperature_max}") # Affiche : -1
Inscrivez-vous gratuitement pour modifier et exécuter du code Python directement dans votre navigateur.
À noter
Avez-vous déjà remarqué que les calculs avec des nombres à virgule flottante en Python peuvent donner des résultats... étranges ?
print(0.1 + 0.1 + 0.1) # Affiche : 0.30000000000000004
Que se passe t-il ? 🫣 Les ordinateurs stockent les nombres en binaire, et certains décimaux ne peuvent pas être représentés de manière exacte en binaire.
Avec plusieurs nombres à virgule, l'ordinateur va accumuler de petites imprécisions.