1. À propos de isdigit() en Python
En Python, la méthode isdigit() permet de vérifier si une chaîne de caractères non vide contient uniquement des caractères numériques considérés comme des chiffres par Python. Elle retourne une valeur booléenne : True si tous les caractères sont des chiffres et False dans le cas contraire.
Dans l'exemple suivant, la chaîne contient uniquement des chiffres. isdigit() retourne donc True.
1 2 3 | texte = "2026" resultat = texte.isdigit() print(resultat) |
Sortie :
1 | True |
Si la chaîne contient une lettre, isdigit() retourne False.
1 2 3 | texte = "2026Python" resultat = texte.isdigit() print(resultat) |
Sortie :
1 | False |
La présence d'un espace provoque également le retour de False, car l'espace n'est pas un chiffre.
1 2 | texte = "20 26" print(texte.isdigit()) |
Sortie :
1 | False |
2. Tester une chaîne avec isdigit()
La méthode isdigit() examine tous les caractères de la chaîne. Pour retourner True, la chaîne doit contenir au moins un caractère et chacun de ses caractères doit être reconnu comme un chiffre.
Une chaîne contenant un seul chiffre satisfait donc cette condition.
1 2 | texte = "7" print(texte.isdigit()) |
Sortie :
1 | True |
Une chaîne contenant plusieurs chiffres retourne également True.
1 2 | texte = "123456789" print(texte.isdigit()) |
Sortie :
1 | True |
En revanche, une chaîne vide ne contient aucun chiffre. isdigit() retourne donc False.
1 2 | texte = "" print(texte.isdigit()) |
Sortie :
1 | False |
Un signe placé devant un nombre n'est pas considéré comme un chiffre. Une chaîne représentant un entier négatif retourne donc False.
1 2 | texte = "-25" print(texte.isdigit()) |
Sortie :
1 | False |
Le point décimal n'est pas non plus un chiffre. Une chaîne représentant un nombre décimal avec un point retourne donc False.
1 2 | texte = "12.5" print(texte.isdigit()) |
Sortie :
1 | False |
3. Comprendre les caractères reconnus par isdigit()
Il est important de comprendre que isdigit() ne teste pas simplement si une chaîne peut être convertie en entier avec int(). Elle vérifie la nature des caractères Unicode qui composent la chaîne.
Les chiffres de 0 à 9
Les chiffres décimaux classiques de 0 à 9 sont naturellement reconnus par isdigit().
1 2 3 | print("0".isdigit()) print("123".isdigit()) print("987654".isdigit()) |
Sortie :
1 2 3 | True True True |
Les espaces et signes de ponctuation
Les espaces et les signes de ponctuation ne sont pas des chiffres. Leur présence entraîne donc le retour de False.
1 2 3 | print("123 456".isdigit()) print("123,456".isdigit()) print("123.456".isdigit()) |
Sortie :
1 2 3 | False False False |
Les signes plus et moins
Les caractères "+" et "-" ne sont pas considérés comme des chiffres. isdigit() retourne donc False pour les chaînes qui représentent des nombres signés.
1 2 3 | print("-123".isdigit()) print("+123".isdigit()) print("123".isdigit()) |
Sortie :
1 2 3 | False False True |
Les chiffres Unicode
La méthode isdigit() prend également en charge certains caractères numériques Unicode. Par exemple, les chiffres arabes orientaux sont reconnus comme des chiffres.
1 2 | texte = "١٢٣" print(texte.isdigit()) |
Sortie :
1 | True |
Certains caractères Unicode représentant des chiffres, comme le caractère exposant "²", sont également reconnus par isdigit().
1 2 | print("²".isdigit()) print("2".isdigit()) |
Sortie :
1 2 | True True |
4. Utiliser isdigit() dans une condition
Comme isdigit() retourne True ou False, elle peut être utilisée directement dans une instruction if. Elle est notamment utile pour effectuer des contrôles simples sur les données saisies sous forme de chaînes.
Dans l'exemple suivant, le programme vérifie si une chaîne contient uniquement des chiffres avant d'afficher un message.
1 2 3 4 5 | age = "25" if age.isdigit(): print("La valeur contient uniquement des chiffres") else: print("La valeur contient d'autres caractères") |
Sortie :
1 | La valeur contient uniquement des chiffres |
Si la chaîne contient des lettres, la condition devient fausse.
1 2 3 4 5 | age = "25ans" if age.isdigit(): print("Valeur valide") else: print("Valeur invalide") |
Sortie :
1 | Valeur invalide |
Lorsque des espaces peuvent apparaître au début ou à la fin de la saisie, strip() peut être utilisée avant isdigit() pour les supprimer.
1 2 3 | texte = " 2026 " resultat = texte.strip().isdigit() print(resultat) |
Sortie :
1 | True |
Après un contrôle approprié, une chaîne composée de chiffres décimaux ordinaires peut être convertie en entier avec int().
1 2 3 4 | texte = "125" if texte.isdigit(): nombre = int(texte) print(nombre + 5) |
Sortie :
1 | 130 |
Attention cependant : isdigit() et int() ne reconnaissent pas exactement les mêmes chaînes. Certains caractères Unicode, comme "²", satisfont isdigit() mais ne peuvent pas être convertis directement avec int().
1 2 3 4 5 6 | texte = "²" print("isdigit() :", texte.isdigit()) try: print(int(texte)) except ValueError: print("Conversion avec int() impossible") |
Sortie :
1 2 | isdigit() : True Conversion avec int() impossible |
5. Exemples pratiques avec isdigit()
Vérifier un âge
Pour une chaîne représentant un âge avec des chiffres décimaux ordinaires, isdigit() permet d'effectuer un premier contrôle avant la conversion en entier.
1 2 3 4 5 | age = "24" if age.isdigit(): print("Âge saisi :", int(age)) else: print("Âge invalide") |
Sortie :
1 | Âge saisi : 24 |
Filtrer une liste de chaînes
La méthode isdigit() peut être utilisée dans une boucle afin de sélectionner uniquement les chaînes composées de chiffres.
1 2 3 4 | valeurs = ["125", "Python", "2026", "12.5", "42"] for valeur in valeurs: if valeur.isdigit(): print(valeur) |
Sortie :
1 2 3 | 125 2026 42 |
Extraire les chaînes numériques d'une liste
Une compréhension de liste permet de créer rapidement une nouvelle liste contenant uniquement les éléments pour lesquels isdigit() retourne True.
1 2 3 | valeurs = ["10", "Java", "25", "Python3", "100"] nombres = [valeur for valeur in valeurs if valeur.isdigit()] print(nombres) |
Sortie :
1 | ['10', '25', '100'] |
Tester chaque caractère d'une chaîne
isdigit() peut aussi être appliquée caractère par caractère afin d'identifier les chiffres présents dans une chaîne contenant différents types de caractères.
1 2 3 4 | texte = "Python2026" for caractere in texte: if caractere.isdigit(): print(caractere) |
Sortie :
1 2 3 4 | 2 0 2 6 |
Extraire les chiffres d'une chaîne
En combinant isdigit() avec join(), il est possible de conserver uniquement les caractères reconnus comme des chiffres.
1 2 3 | texte = "Référence A-2026-B15" chiffres = "".join(caractere for caractere in texte if caractere.isdigit()) print(chiffres) |
Sortie :
1 | 202615 |
Comparer isdigit() et isalpha()
isdigit() vérifie si tous les caractères sont des chiffres, tandis que isalpha() vérifie s'ils sont tous alphabétiques.
1 2 3 | valeurs = ["Python", "2026", "Python2026"] for valeur in valeurs: print(valeur, "isdigit() =", valeur.isdigit(), "isalpha() =", valeur.isalpha()) |
Sortie :
1 2 3 | Python isdigit() = False isalpha() = True 2026 isdigit() = True isalpha() = False Python2026 isdigit() = False isalpha() = False |
Comparer isdigit() et isdecimal()
Les méthodes isdigit() et isdecimal() sont proches, mais isdigit() reconnaît certains caractères numériques supplémentaires. Le caractère "²", par exemple, est reconnu par isdigit() mais pas par isdecimal().
1 2 | print("2".isdigit(), "2".isdecimal()) print("²".isdigit(), "²".isdecimal()) |
Sortie :
1 2 | True True True False |
6. À retenir !
La méthode isdigit() permet de vérifier si une chaîne non vide est constituée exclusivement de caractères reconnus comme des chiffres par Python.
- isdigit() retourne True lorsque tous les caractères de la chaîne sont des chiffres et que la chaîne n'est pas vide.
- Elle retourne False si la chaîne contient une lettre.
- Elle retourne False si la chaîne contient un espace.
- Elle retourne False pour une chaîne vide.
- Les signes "+" et "-" ne sont pas des chiffres.
- Le point et la virgule utilisés dans les nombres décimaux ne sont pas des chiffres.
- isdigit() reconnaît également certains chiffres Unicode.
- Certains caractères comme "²" retournent True avec isdigit().
- isdigit() ne signifie donc pas nécessairement que la chaîne peut être convertie directement avec int().
- Pour contrôler une saisie destinée à une conversion numérique, il faut choisir la méthode de validation en fonction du format numérique réellement attendu.
Le programme suivant résume le comportement de isdigit() avec plusieurs types de chaînes.
1 2 3 4 5 6 | print("2026".isdigit()) print("20 26".isdigit()) print("-25".isdigit()) print("12.5".isdigit()) print("Python".isdigit()) print("".isdigit()) |
Sortie :
1 2 3 4 5 6 | True False False False False False |
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/



