Comment convertir une chaîne en Int en Python (casting et bases sécurisés)

Apprenez à convertir une chaîne en entier en Python à l'aide de la fonction int(). Gérez les erreurs en toute sécurité et convertissez les nombres binaires, octaux ou hexadécimaux.

Essayez cette solution dans l'éditeur

Aperçu

La conversion d'une représentation sous forme de chaîne d'un nombre en un entier réel est une tâche fréquente dans le développement d'applications. Ce processus, souvent appelé casting, est essentiel lorsqu'il s'agit de traiter les entrées brutes de l'utilisateur, de lire les fichiers de configuration, d'analyser les arguments des interfaces de ligne de commande ou de récupérer des données sur le Web. Étant donné que Python est un langage fortement typé, vous ne pouvez pas effectuer d'opérations mathématiques sur des représentations sous forme de chaîne de nombres sans les convertir au préalable.

Le constructeur `int()` intégré de Python est le principal outil pour cette conversion. Dans sa forme la plus simple, passer une chaîne numérique (comme « 42 » ) à « int() » renvoie son équivalent entier. Cependant, passer une chaîne non numérique (comme `"hello"`) ou une chaîne représentant un nombre à virgule flottante (comme `"3.14"`) déclenchera une `ValueError`. Pour écrire des applications robustes, il est de pratique courante d'envelopper les opérations de conversion dans un bloc « try-sauf » pour gérer avec élégance les entrées inattendues.

Au-delà de la conversion standard en base 10, la fonction `int()` accepte un argument `base` facultatif. Cela vous permet d'analyser facilement des chaînes représentant des nombres dans différents systèmes numériques, tels que binaire (base 2), octal (base 8) ou hexadécimal (base 16). Par exemple, `int("1010", 2)` analyse correctement la chaîne binaire en l'entier décimal `10`, ce qui en fait un outil polyvalent pour la programmation mathématique de niveau inférieur ou spécialisée.

Sortie de code et d'exécution

Ce script montre la conversion d'une chaîne en entier, la gestion des exceptions et la conversion de différentes représentations de base.

# 1. Standard base-10 conversion
num_str = "123"
num = int(num_str)
print(f"Standard conversion: {num} (Type: {type(num).__name__})")

# 2. Handling invalid input gracefully
invalid_str = "abc"
try:
    result = int(invalid_str)
except ValueError:
    print(f"Could not convert '{invalid_str}' to an integer.")

# 3. Converting from different bases (binary and hex)
binary_str = "1011"
hex_str = "ff"
print("Binary '1011' to decimal:", int(binary_str, 2))
print("Hex 'ff' to decimal:", int(hex_str, 16))
Sortie terminale
Standard conversion: 123 (Type: int)
Could not convert 'abc' to an integer.
Binary '1011' to decimal: 11
Hex 'ff' to decimal: 255

Mise en œuvre étape par étape

  • Transmettez la chaîne numérique à la fonction intégrée int().
  • Enveloppez vos opérations de diffusion dans try...sauf les blocs ValueError pour gérer les formats non valides.
  • Fournissez un deuxième argument (par exemple, base=16) pour convertir les valeurs de chaîne écrites dans d'autres bases.

Foire aux questions

Comment puis-je convertir une chaîne flottante telle que « 12,34 » en un entier ?

Vous devez d'abord le convertir en float, puis en int : int(float("12.34")). L’appel de int("12.34") déclenche directement une ValueError.

Comment puis-je vérifier si une chaîne peut être convertie en toute sécurité en un entier ?

Vous pouvez utiliser la méthode de chaîne .isdigit(), mais notez qu'elle renvoie False pour les signes négatifs ou les espaces. Un bloc try-sauf est le moyen le plus robuste.

Sujets connexes

Ressources Python recommandées

Développez vos connaissances avec des didacticiels interactifs, des aide-mémoire et des comparaisons de codes associés.