En Python, la manipulation des entiers peut sembler simple, mais elle cache des nuances fascinantes. Que vous soyez novice ou programmeur aguerri, comprendre comment les entiers sont représentés et convertis entre différents types de données est crucial. Plongeons ensemble dans les mécanismes de stockage et de conversion des entiers en utilisant les types str et int, et découvrons comment jongler avec les systèmes de numération pour optimiser votre code Python. Préparez-vous à enrichir vos compétences et à explorer les subtilités des entiers en Python de manière ludique et instructive !
Représentation des entiers en Python
Un entier peut être stocké en utilisant différents types. Deux types de données Python possibles pour représenter un entier sont :
strint
Par exemple, vous pouvez représenter un entier en utilisant un littéral de chaîne :
Ici, Python comprend que vous voulez stocker l'entier 110 en tant que chaîne. Vous pouvez faire de même avec le type de données entier :
Il est important de considérer ce que vous entendez spécifiquement par
"110" et
110 dans les exemples ci-dessus. En tant qu'humain ayant utilisé le système de numération décimale toute votre vie, il peut être évident que vous entendez le nombre
cent dix. Cependant, il existe plusieurs autres systèmes de numération, tels que le
binaire et l'
hexadécimal, qui utilisent différentes
bases) pour représenter un entier.
Par exemple, vous pouvez représenter le nombre cent dix en binaire et en hexadécimal comme 1101110 et 6e respectivement.
Vous pouvez également représenter vos entiers avec d'autres systèmes de numération en Python en utilisant les types de données str et int :
Notez que binary et hexadecimal utilisent des préfixes pour identifier le système de numération. Tous les préfixes d'entier sont sous la forme 0?, où vous remplacez ? par un caractère se référant au système de numération :
- b : binaire (base 2)
- o : octal (base 8)
- d : décimal (base 10)
- x : hexadécimal (base 16)
Détail technique : Le préfixe n'est pas requis dans une représentation entière ou chaîne lorsqu'il peut être déduit.
int suppose que l'entier littéral est décimal :
La représentation en chaîne d'un entier est plus flexible car une chaîne contient des données textuelles arbitraires :
Chacune de ces chaînes représente le même entier.
Maintenant que vous avez quelques connaissances fondamentales sur la façon de représenter les entiers en utilisant str et int, vous allez apprendre comment convertir une chaîne Python en int.
Conversion d'une chaîne de caractère en int
Si vous avez un entier décimal représenté sous forme de chaîne et que vous souhaitez convertir cette chaîne Python en int, vous pouvez simplement passer la chaîne à int(), ce qui renvoie un entier décimal :
Par défaut, int() suppose que l'argument de la chaîne représente un entier décimal. Cependant, si vous passez une chaîne hexadécimale à int(), vous verrez une ValueError :
Le message d'erreur indique que la chaîne n'est pas un entier décimal valide.
Note :
Il est important de reconnaître la différence entre deux types de résultats échoués lors du passage d'une chaîne à int() :
- Erreur de syntaxe : Une
ValueError se produira lorsque int() ne sait pas comment analyser la chaîne en utilisant la base fournie (10 par défaut). - Erreur logique :
int() sait comment analyser la chaîne, mais pas de la manière que vous attendiez.
Voici un exemple d'erreur logique :
Dans cet exemple, vous vouliez que le résultat soit 210, qui est la représentation décimale de la chaîne binaire. Malheureusement, parce que vous n'avez pas spécifié ce comportement, int() suppose que la chaîne est un entier décimal.
Une bonne précaution pour ce comportement est de toujours définir vos représentations de chaîne en utilisant des bases explicites :
Ici, vous obtenez une ValueError car int() ne sait pas comment analyser la chaîne binaire en tant qu'entier décimal.
Lorsque vous passez une chaîne à int(), vous pouvez spécifier le système de numération que vous utilisez pour représenter l'entier. La façon de spécifier le système de numération consiste à utiliser base :
Maintenant, int() comprend que vous passez une chaîne hexadécimale et que vous attendez un entier décimal.
Détail technique : L'argument que vous passez à base n'est pas limité à 2, 8, 10 et 16 :
Super ! Maintenant que vous êtes à l'aise avec les tenants et aboutissants de la conversion d'une chaîne Python en int, vous allez apprendre à faire l'opération inverse.
Conversion d'un int en chaîne de caractère
En Python, vous pouvez convertir un int en chaîne en utilisant str() :
Par défaut, str() se comporte comme int() en ce qu'il donne lieu à une représentation décimale :
Dans cet exemple, str() est assez intelligent pour interpréter le littéral binaire et le convertir en chaîne décimale.
Si vous voulez qu'une chaîne représente un entier dans un autre système de numération, vous utilisez une chaîne formatée, comme une f-string (en Python 3.6+), et une option qui spécifie la base :
str est un moyen flexible de représenter un entier dans divers systèmes de numération différents.
Conclusion
Félicitations ! Vous avez appris tant de choses sur les entiers et comment les représenter et les convertir entre les types de données chaînes et int en Python.
Dans ce tutoriel, vous avez appris :
- Comment utiliser
str et int pour stocker des entiers - Comment spécifier un système de numération explicite pour une représentation d'entier
- Comment convertir une chaîne Python en
int - Comment convertir un
int Python en chaîne
Maintenant que vous en savez tant sur
str et
int, vous pouvez en apprendre davantage sur la représentation des types numériques en utilisant
float(),
hex(),
oct(), et
bin() !