HOWTO · Python

Diviser un entier en chiffres en Python

Ce tutoriel montre comment diviser un entier en chiffres en python

Sur cette page

Pour obtenir la liste des chiffres d’un entier, convertissez-le en chaîne, puis convertissez chaque caractère en entier avec int(). Les chiffres apparaissent ainsi de gauche à droite. Pour un entier négatif, traitez le signe séparément et décomposez la valeur absolue ; représentez zéro par [0]. Choisissez l’arithmétique entière si la conversion en chaîne ne convient pas, ou utilisez map() et str.split() lorsque l’entrée est déjà une chaîne de chiffres séparés par des espaces.

Utiliser une compréhension de liste pour séparer un entier en chiffres en Python

Une compréhension de liste est la méthode la plus directe lorsque l’entrée est un entier et que le résultat souhaité est une liste de chiffres dans leur ordre habituel, de gauche à droite. str() fournit un caractère par chiffre décimal, et int() convertit chaque caractère en entier.

num = 13579
digits = [int(character) for character in str(num)]
print(digits)

Le code produit les chiffres de 13579 sous forme d’éléments entiers. Pour zéro, la même expression renvoie [0]. Pour une entrée négative, décomposez abs(num) et conservez le signe dans une variable distincte si l’application en a besoin. Un entier ne conserve pas les zéros initiaux ; utilisez donc le texte d’origine si ces zéros sont importants.

Utiliser l’arithmétique entière pour séparer un entier en chiffres en Python

Pour éviter de convertir la valeur en texte, appliquez divmod() avec 10 de façon répétée. Chaque reste correspond au chiffre suivant en partant de la droite : inversez donc la liste des chiffres recueillis à la fin. Traitez zéro explicitement, car sinon la boucle ne recueille aucun chiffre ; pour les entrées négatives, utilisez la valeur absolue et suivez le signe séparément.

num = -13579
sign = -1 if num < 0 else 1
remaining = abs(num)
digits = []

if remaining == 0:
    digits.append(0)
else:
    while remaining:
        remaining, digit = divmod(remaining, 10)
        digits.append(digit)

digits.reverse()
print(sign, digits)

Cette méthode arithmétique est utile lorsque la conversion doit rester numérique. La liste est tout de même ordonnée du chiffre le plus significatif au moins significatif ; le signe est distinct des valeurs des chiffres.

Utiliser map() et str.split() pour convertir en entiers des chiffres séparés par des espaces en Python

Utilisez cette méthode lorsqu’une chaîne contient déjà des chiffres sous forme de jetons distincts, par exemple une entrée lue sur une ligne. Par défaut, str.split() sépare la chaîne aux espaces, et map() applique int() à chaque jeton. Cette méthode ne sépare pas un entier ordinaire en chiffres individuels.

text = "1 3 5 7 9"
digits = list(map(int, text.split()))
print(digits)

Cette forme convient aux valeurs séparées par des espaces. Si la source utilise des virgules ou un autre séparateur, transmettez ce séparateur à split() et vérifiez que chaque jeton obtenu représente un entier valide.

Utiliser une boucle for pour séparer une chaîne de chiffres en entiers en Python

Lorsque la source est une chaîne de chiffres et qu’une boucle explicite est plus facile à adapter, extrayez un caractère à la fois et convertissez chaque tranche avec int(). Le pas et la largeur de la tranche valent tous deux 1 ; chaque itération traite donc un chiffre décimal.

digit_text = "13579"
digits = []

for index in range(0, len(digit_text), 1):
    digits.append(int(digit_text[index:index + 1]))

print(digits)

La boucle produit la même liste, ordonnée de gauche à droite, que la compréhension de liste, tout en rendant visible l’étape de conversion. Utilisez la compréhension de liste pour convertir un entier en chiffres de façon concise, l’arithmétique entière pour éviter la conversion en texte, map() avec str.split() pour des jetons déjà séparés, et une boucle si vous devez personnaliser le traitement de chaque caractère. Si le texte peut contenir un signe ou des séparateurs, traitez ces caractères avant de convertir les tranches contenant les chiffres.