Comment convertir des types de données sous Python 3

Introduction

Sous Python, les data types servent à classer un type de données particulier. Ils permettent également de déterminer les valeurs que vous pouvez attribuer au type en question et les opérations que vous pouvez effectuer sur celui-ci. Au moment de la programmation, vous aurez parfois besoin de convertir des valeurs d'un type à l'autre pour pouvoir manipuler les valeurs différemment. Par exemple, il vous arrivera parfois de devoir concaténer des valeurs numériques avec des chaînes de caractères ou d'ajouter une décimale à des chiffres initialisés comme des valeurs entières.

Ce tutoriel vous guidera à travers le processus de conversion de types de données, notamment les chiffres, les chaines, les tuples et les listes et vous proposera des exemples qui vous permettront de vous familiariser avec différents cas d'utilisation.

Conversion des types de chiffres

Sous Python, il existe deux types de données de chiffre : les entiers et les chiffres à virgule ou décimaux. Lorsque vous travaillez sur le code d'une autre personne, il arrive parfois que vous ayez besoin de convertir un chiffre entier en décimal ou vice versa, ou que vous constatiez que vous avez utilisé un entier alors qu'en réalité vous avez besoin d'un décimal. Python intègre des méthodes qui vous permettent de facilement convertir les entiers en décimaux et les décimaux en entiers.

Conversion des entiers en décimaux

La méthode float() de Python vous permettra de convertir les entiers en décimaux. Pour utiliser cette fonction, ajoutez un chiffre entier à l'intérieur des parenthèses :

float(57) 

Dans ce cas, nous allons convertir 57 en 57.0.

Vous pouvez également l'utiliser avec une variable. Disons que f est égal à 57, puis imprimons le nouveau décimal :

f = 57 print(float(f)) 
Output57.0 

En utilisant la fonction float(), nous pouvons convertir les entiers en décimaux.

Conversion des décimaux en entiers

Python intègre également une fonction pour convertir les décimaux en entiers : int ().

La fonction int() fonctionne de la même manière que la fonction float() : vous pouvez ajouter un chiffre à virgule à l'intérieur des parenthèses pour le convertir en entier :

int(390.8) 

Dans ce cas, nous allons convertir 390,8 en 390.

Vous pouvez également l'utiliser avec des variables. Disons que b est égal à 125,0, et que c est égal à 390,8, puis imprimons les nouveaux décimaux :

b = 125.0 c = 390.8  print(int(b)) print(int(c)) 
Output125 390 

Lorsque vous convertissez des décimaux en entiers avec la fonction int(), Python supprime la décimale et les chiffres restants après la virgule pour créer un entier. Même si nous voulions arrondir 390,8 à 391, Python ne pourrait pas le faire avec la fonction int().

Numéros convertis par division

Dans Python 3, les quotients correspondants sont convertis d'entiers en décimaux lorsque vous exécuter division bien que cela ne soit pas possible sous Python 2. Autrement dit, dans Python 3, lorsque vous divisez 5 par 2, vous obtenez un chiffre décimal (2,5) :

a = 5 / 2 print(a) 
Output2.5 

Sous Python 2, étant donné que vous avez à faire à deux entiers, vous obtiendrez un entier à la place : 5 / 2 = 2. Consultez notre tutoriel « Python 2 vs Python 3 : considérations pratiques » pour avoir de plus amples informations sur les différences qui existent entre Python 2 et Python 3.

Conversion avec des chaînes de caractères

Une chaine de caractères est une séquence d'un ou plusieurs caractères (lettres, chiffres, symboles). Les chaines de caractères sont une forme de données que l'on trouve couramment dans les programmes informatiques. Il nous arrivera parfois de devoir convertir des chaines de caractères en chiffres ou des chiffres en chaines de caractères, spécialement lorsque nous intégrons des données générées par les utilisateurs.

Conversion de chiffres en chaînes de caractères

Nous pouvons convertir des chiffres en chaines de caractères en utilisant la méthode str(). Nous allons transmettre un chiffre ou une variable dans les parenthèses de la méthode. Ensuite, cette valeur numérique sera convertie en une valeur de chaine de caractères.

Concentrons-nous tout d'abord sur la conversion des entiers. Pour convertir l'entier 12 en une valeur de chaine de caractères, vous pouvez placer 12 dans la méthode str() :

str(12) 

En exécutant str(12) dans le shell interactif de Python avec la commande python dans la fenêtre du terminal, vous obtiendrez le résultat suivant :

Output'12' 

Les guillemets qui entourent le chiffre 12 signifient que le nombre n'est plus un entier mais qu'il est maintenant une valeur de chaine de caractères.

En combinaison avec des variables, nous pouvons commencer à voir à quel point il peut être intéressant de convertir des entiers en chaines de caractères. Supposons que nous voulions faire un suivi du progrès de la programmation quotidienne d'un utilisateur et que nous saisissions le nombre de lignes de code qu'ils écrivent à la fois. Nous voudrions montrer ce feedback à l'utilisateur et imprimerions les valeurs de chaines de caractères et d'entiers en même temps :

user = "Sammy" lines = 50  print("Congratulations, " + user + "! You just wrote " + lines + " lines of code.") 

Lorsque nous exécutons ce code, nous obtenons l'erreur suivante :

OutputTypeError: Can't convert 'int' object to str implicitly 

Nous ne sommes pas en mesure de concaténer des chaines de caractères et des entiers dans Python. Nous devrons donc convertir les lines de variables en chaines de caractères :

user = "Sammy" lines = 50  print("Congratulations, " + user + "! You just wrote " + str(lines) + " lines of code.") 

Maintenant, lorsque nous exécutons le code, nous obtenons le résultat suivant qui félicite notre utilisateur du progrès qu'il a réalisé :

OutputCongratulations, Sammy! You just wrote 50 lines of code. 

Si nous cherchons à convertir un décimal en une chaine de caractères plutôt qu'un entier en chaine de caractères, nous devons suivre les mêmes étapes et le même format. Lorsque nous saisissons un décimal dans la méthode de str(), la valeur de chaine de caractères du décimal sera renvoyée. Nous pouvons utiliser soit la valeur du décimal en elle-même ou une variable :

print(str(421.034))  f = 5524.53 print(str(f)) 
Output421.034 5524.53 

Nous pouvons tester si elle est correcte en la concaténant avec une chaine de caractères :

f = 5524.53 print("Sammy has " + str(f) + " points.") 
OutputSammy has 5524.53 points. 

Nous pouvons avoir la certitude que notre décimal a été correctement converti en une chaine de caractères car la concaténation a été effectuée sans erreur.

Conversion de chaines de caractères en chiffres

Vous pouvez convertir des chaines de caractères en chiffres en utilisant les méthodes int() et float().

Si votre chaine de caractères ne dispose pas de décimal, vous voudrez très probablement la convertir en un entier en utilisant la méthode int().

Utilisons l'exemple de l'utilisateur Sammy qui garde un suivi des lignes de code écrites quotidiennement. Nous souhaiterions éventuellement manipuler ces valeurs avec des calculs afin de fournir des commentaires plus intéressants à l'utilisateur. Cependant, ces valeurs sont actuellement stockées dans des chaines de caractères :

lines_yesterday = "50" lines_today = "108"  lines_more = lines_today - lines_yesterday  print(lines_more) 
OutputTypeError: unsupported operand type(s) for -: 'str' and 'str' 

Étant donné que les deux valeurs numériques ont été stockées dans des chaines de caractères, une erreur nous a été renvoyée. L'opérande - pour les soustractions n'est un opérande valable pour deux valeurs de chaines de caractères.

Modifions le code pour inclure la méthode int() qui convertira les chaines de caractères en entiers et faisons quelques calculs avec les valeurs qui étaient initialement des chaines de caractères.

lines_yesterday = "50" lines_today = "108"  lines_more = int(lines_today) - int(lines_yesterday)  print(lines_more) 
Output58 

La variable lines_more est automatiquement un entier et égale à la valeur numérique 58 dans cet exemple.

Nous pouvons également convertir les chiffres dans l'exemple ci-dessus en valeurs décimales en utilisant la méthode float() à la place de la méthode int(). Au lieu de recevoir le résultat de 58, nous obtiendrons le résultat de 58.0, un chiffre décimal.

L'utilisateur Sammy gagne des points en valeurs décimales

total_points = "5524.53" new_points = "45.30"  new_total_points = total_points + new_points  print(new_total_points) 
Output5524.5345.30 

Dans ce cas, il est possible d'utiliser l'opérande + avec deux chaines de caractères, mais il concatène deux chaines de caractères au lieu d'additionner deux valeurs numériques. Notre résultat est donc inhabituel car il se contente juste de placer les deux valeurs l'une à côté de l'autre.

Nous allons devoir convertir ces chaines de caractères en décimaux avant d'effectuer un calcul avec la méthode float() :

total_points = "5524.53" new_points = "45.30"  new_total_points = float(total_points) + float(new_points)  print(new_total_points) 
Output5569.83 

Maintenant que nous avons converti les deux chaines de caractères en décimaux, nous obtenons le résultat anticipé qui additionne 45.30 et 5524.53.

Si nous essayons de convertir une valeur de chaines de caractères avec des décimaux en un entier, nous obtiendrons une erreur :

f = "54.23" print(int(f)) 
OutputValueError: invalid literal for int() with base 10: '54.23' 

Si nous plaçons une valeur décimale dans une chaîne de caractères dans la méthode int(), nous obtiendrons une erreur car elle ne se convertira pas en un entier.

En effet, en convertissant des chaines de caractères en chiffres, nous pouvons rapidement modifier le type de données avec lequel nous travaillons et effectuer des calculs sur des valeurs numériques qui ont été initialement saisies en tant que chaines de caractères.

Conversion des tuples en listes

Vous pouvez utiliser les méthodes list() et tuple() pour convertir les valeurs qui leur ont été transmises en type de données de liste et tuple respectivement. Sous Python :

  • une list est une séquence d'éléments ordonnés et altérables entre crochets [ ].
  • un tuple est une séquence d'éléments immuables et ordonnés entre parenthèses ( ).

Conversion des tuples

Commençons par convertir une liste en un tuple. Étant donné qu'il s'agit d'un type de données immuable, la conversion d'une liste en tuple peut permettre une optimisation substantielle aux programmes que nous créons. Lorsque nous utilisons la méthode tuple(), le système renverra la version tuple de la valeur qui lui a été soumise.

print(tuple(['pull request', 'open source', 'repository', 'branch'])) 
Output('pull request', 'open source', 'repository', 'branch') 

Nous voyons qu'un tuple est imprimé dans le résultat car les éléments sont maintenant entre parenthèses et non entre crochets.

Utilisons tuple() avec une variable qui représente une liste :

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'] print(tuple(sea_creatures)) 
Output('shark', 'cuttlefish', 'squid', 'mantis shrimp') 

À nouveau, nous voyons que la valeur de liste est modifiée en une valeur de tuple, indiquée par les parenthèses. Nous pouvons convertir tout type itérable en tuple, notamment des chaines de caractères :

print(tuple('Sammy')) 
Output('S', 'a', 'm', 'm', 'y') 

Étant donné que nous pouvons itérer des chaines de caractères, nous pouvons les convertir en tuples en utilisant la méthode tuple(). Cependant, en utilisant des types de données qui ne sont pas itérables, comme des entiers et des décimaux, nous obtiendrons une erreur de type :

print(tuple(5000)) 
OutputTypeError: 'int' object is not iterable 

Bien qu'il soit possible de convertir l'entier en une chaîne de caractères et de le convertir ensuite en tuple, comme dans tuple(str(5000)), il est préférable d'opter pour un code lisible plutôt que des conversions compliquées.

Conversion en listes

Il est possible de convertir des valeurs, en particulier des tuples, en listes si vous avez besoin d'une version altérable de cette valeur.

Nous allons utiliser la méthode list() pour convertir le tuple suivant en une liste. Étant donné que la syntaxe de création d'une liste utilise des parenthèses, veillez à bien inclure les parenthèses de la méthode list(), et dans le cas présent de la méthode print() également :

print(list(('blue coral', 'staghorn coral', 'pillar coral'))) 
Output['blue coral', 'staghorn coral', 'pillar coral'] 

Les crochets signalent qu'une liste a été renvoyée à partir de la valeur du tuple initialement transmise en utilisant la méthode list().

Pour rendre le code plus lisible, nous pouvons supprimer l'une des paires de parenthèses en utilisant une variable :

coral = ('blue coral', 'staghorn coral', 'pillar coral') list(coral) 

Si nous imprimons list(coral), nous obtiendrons le même résultat que celui ci-dessus.

Tout comme les tuples, vous pouvez convertir des chaines de caractères en listes :

print(list('shark')) 
Output['s', 'h', 'a', 'r', 'k'] 

Ici, la chaine de caractères 'shark' a été convertie en une liste, donnant une version altérable de la valeur d'origine.

Conclusion

Au cours de ce tutoriel sur Python, vous avez vu comment convertir plusieurs des importants types de données natives en d'autres types de données, en utilisant principalement des méthodes intégrées. Maintenant que vous savez convertir des types de données sous Python, vous disposez d'une plus grande flexibilité pour écrire vos programmes.