Le module math

Apprenez à utiliser le module math de Python.

Publié le par Gabriel Trouvé (mis à jour le )
37 minutes

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)
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON
Un instant

Créez un compte pour exécuter ce code

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)
PYTHON
Un instant

Créez un compte pour exécuter ce code

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 !)
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON
Un instant

Créez un compte pour exécuter ce code

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)
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON
Un instant

Créez un compte pour exécuter ce code

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
PYTHON

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.

Bravo, tu es prêt à passer à la suite

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.