Comment vérifier si une chaîne de caractères est un nombre en Python

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à déterminer si une chaîne de caractères en Python représente un nombre. Nous commencerons par définir diverses chaînes de caractères, certaines ressemblant à des nombres, dans un script Python nommé numeric_strings.py. Ce script affichera ces chaînes de caractères dans la console, préparant le terrain pour l'analyse ultérieure.

Ensuite, nous explorerons la méthode isdigit() pour identifier les chaînes de caractères ne contenant que des chiffres, indiquant des entiers non négatifs. Cette méthode est cruciale pour valider les données et garantir des conversions sûres en types numériques.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") subgraph Lab Skills python/strings -.-> lab-559573{{"Comment vérifier si une chaîne de caractères est un nombre en Python"}} python/type_conversion -.-> lab-559573{{"Comment vérifier si une chaîne de caractères est un nombre en Python"}} python/build_in_functions -.-> lab-559573{{"Comment vérifier si une chaîne de caractères est un nombre en Python"}} python/catching_exceptions -.-> lab-559573{{"Comment vérifier si une chaîne de caractères est un nombre en Python"}} end

Définir des chaînes de caractères numériques

Dans cette étape, nous explorerons comment Python gère les chaînes de caractères qui représentent des nombres. Ces chaînes sont appelées "chaînes de caractères numériques" (numeric strings). Comprendre comment les identifier et les manipuler est crucial pour la validation et la manipulation des données.

Une chaîne de caractères numérique est simplement une chaîne qui ne contient que des caractères pouvant être interprétés comme un nombre. Il peut s'agir d'un entier, d'un nombre à virgule flottante (floating-point number), ou même d'un nombre en notation scientifique.

Commençons par créer un script Python pour examiner quelques exemples.

  1. Dans l'éditeur VS Code, créez un nouveau fichier nommé numeric_strings.py dans votre répertoire ~/project.

  2. Ajoutez le code suivant au fichier numeric_strings.py :

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Print the strings
print(f"String 1: {string1}")
print(f"String 2: {string2}")
print(f"String 3: {string3}")
print(f"String 4: {string4}")
print(f"String 5: {string5}")
print(f"String 6: {string6}")
print(f"String 7: {string7}")
print(f"String 8: {string8}")
  1. Enregistrez le fichier numeric_strings.py.

  2. Maintenant, exécutez le script depuis le terminal :

python numeric_strings.py

Vous devriez voir la sortie suivante :

String 1: 123
String 2: 3.14
String 3: -42
String 4: 0
String 5:   56
String 6: abc
String 7: 123.45.67
String 8: 1e10

Comme vous pouvez le voir, nous avons défini plusieurs chaînes de caractères, certaines ressemblant à des nombres. Dans les étapes suivantes, nous apprendrons à déterminer lesquelles de ces chaînes peuvent être converties en toute sécurité en types numériques.

Utiliser isdigit() pour les entiers

Dans cette étape, nous apprendrons à utiliser la méthode isdigit() pour vérifier si une chaîne de caractères ne contient que des chiffres et représente un entier non négatif. Cette méthode est particulièrement utile pour valider les entrées utilisateur ou les données lues à partir de fichiers.

La méthode isdigit() est une méthode intégrée (built-in) pour les chaînes de caractères en Python. Elle retourne True si tous les caractères de la chaîne sont des chiffres et qu'il y a au moins un caractère, et False dans le cas contraire.

Modifions notre script précédent pour utiliser isdigit() :

  1. Ouvrez le fichier numeric_strings.py dans l'éditeur VS Code.

  2. Modifiez le code pour inclure la méthode isdigit() comme suit :

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Check if the strings are digits
print(f"String 1 '{string1}' isdigit(): {string1.isdigit()}")
print(f"String 2 '{string2}' isdigit(): {string2.isdigit()}")
print(f"String 3 '{string3}' isdigit(): {string3.isdigit()}")
print(f"String 4 '{string4}' isdigit(): {string4.isdigit()}")
print(f"String 5 '{string5}' isdigit(): {string5.isdigit()}")
print(f"String 6 '{string6}' isdigit(): {string6.isdigit()}")
print(f"String 7 '{string7}' isdigit(): {string7.isdigit()}")
print(f"String 8 '{string8}' isdigit(): {string8.isdigit()}")
  1. Enregistrez le fichier numeric_strings.py.

  2. Exécutez le script depuis le terminal :

python numeric_strings.py

Vous devriez voir la sortie suivante :

String 1 '123' isdigit(): True
String 2 '3.14' isdigit(): False
String 3 '-42' isdigit(): False
String 4 '0' isdigit(): True
String 5 '  56  ' isdigit(): False
String 6 'abc' isdigit(): False
String 7 '123.45.67' isdigit(): False
String 8 '1e10' isdigit(): False

Comme vous pouvez le voir, isdigit() ne retourne True que pour les chaînes ne contenant que des chiffres. Elle retourne False pour les chaînes contenant des points décimaux, des signes négatifs, des espaces ou tout caractère non numérique.

Cette méthode est utile pour vérifier si une chaîne peut être convertie en toute sécurité en un entier sans déclencher une erreur. Cependant, il est important de se rappeler que isdigit() ne fonctionne que pour les entiers non négatifs. Pour les autres types numériques, nous devrons utiliser des approches différentes, comme nous le verrons dans l'étape suivante.

Tenter la conversion avec float()

Dans cette étape, nous explorerons comment utiliser la fonction float() pour convertir des chaînes de caractères en nombres à virgule flottante (floating-point numbers). Cela est utile lorsque vous avez besoin de travailler avec des nombres comportant des décimales ou représentés en notation scientifique.

La fonction float() est une fonction intégrée (built-in) en Python qui tente de convertir son argument en un nombre à virgule flottante. Si l'argument est une chaîne de caractères, elle doit être une représentation valide d'un nombre à virgule flottante.

Modifions à nouveau notre script pour utiliser float() et voir comment elle gère différentes chaînes de caractères :

  1. Ouvrez le fichier numeric_strings.py dans l'éditeur VS Code.

  2. Modifiez le code pour inclure la fonction float() et gérer les erreurs potentielles :

## Define some strings
string1 = "123"
string2 = "3.14"
string3 = "-42"
string4 = "0"
string5 = "  56  "
string6 = "abc"
string7 = "123.45.67"
string8 = "1e10"

## Try converting the strings to floats
strings = [string1, string2, string3, string4, string5, string6, string7, string8]

for s in strings:
    try:
        float_value = float(s)
        print(f"String '{s}' can be converted to float: {float_value}")
    except ValueError:
        print(f"String '{s}' cannot be converted to float")
  1. Enregistrez le fichier numeric_strings.py.

  2. Exécutez le script depuis le terminal :

python numeric_strings.py

Vous devriez voir la sortie suivante :

String '123' can be converted to float: 123.0
String '3.14' can be converted to float: 3.14
String '-42' can be converted to float: -42.0
String '0' can be converted to float: 0.0
String '  56  ' can be converted to float: 56.0
String 'abc' cannot be converted to float
String '123.45.67' cannot be converted to float
String '1e10' can be converted to float: 10000000000.0

Comme vous pouvez le voir, float() peut convertir avec succès les chaînes de caractères représentant des entiers, des nombres décimaux et des nombres en notation scientifique. Elle supprime également automatiquement les espaces blancs (whitespace) au début et à la fin de la chaîne (comme le montre string5). Cependant, elle lève une erreur ValueError si la chaîne ne peut pas être interprétée comme un nombre à virgule flottante valide (comme le montrent string6 et string7).

L'utilisation de blocs try-except nous permet de gérer ces erreurs potentielles de manière élégante et d'empêcher notre programme de planter. C'est une pratique courante et importante lorsque vous travaillez avec des entrées utilisateur ou des données provenant de sources externes.

Résumé

Dans ce laboratoire (lab), nous avons commencé par définir les chaînes numériques (numeric strings) en Python, qui sont des chaînes de caractères contenant des caractères pouvant être interprétés comme des nombres (entiers, nombres à virgule flottante, etc.). Nous avons créé un script numeric_strings.py pour définir et afficher diverses chaînes, y compris des entiers, des nombres décimaux et des chaînes avec des caractères non numériques, afin d'illustrer différents formats de chaînes.

Ensuite, nous avons commencé à explorer la méthode isdigit() pour vérifier si une chaîne ne contient que des chiffres, ce qui indique un entier non négatif. Le laboratoire est prévu pour continuer à démontrer comment utiliser cette méthode pour valider les chaînes.