Tester si une chaîne contient uniquement des chiffres avec isdigit() en Python

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.

Sortie :

Si la chaîne contient une lettre, isdigit() retourne False.

Sortie :

La présence d'un espace provoque également le retour de False, car l'espace n'est pas un chiffre.

Sortie :

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.

Sortie :

Une chaîne contenant plusieurs chiffres retourne également True.

Sortie :

En revanche, une chaîne vide ne contient aucun chiffre. isdigit() retourne donc False.

Sortie :

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.

Sortie :

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.

Sortie :

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().

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

Certains caractères Unicode représentant des chiffres, comme le caractère exposant "²", sont également reconnus par isdigit().

Sortie :

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.

Sortie :

Si la chaîne contient des lettres, la condition devient fausse.

Sortie :

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.

Sortie :

Après un contrôle approprié, une chaîne composée de chiffres décimaux ordinaires peut être convertie en entier avec int().

Sortie :

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().

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

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.

Sortie :

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().

Sortie :

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.

Sortie :

 




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/


loader-image
Le prix initial était : € 11,00.Le prix actuel est : € 10,00.
Le prix initial était : € 6,00.Le prix actuel est : € 5,00.



Leave a Reply

Your email address will not be published. Required fields are marked *