Recherche de site Web

Comment convertir les types de données en Python 3


Introduction

En Python, les types de données sont utilisés pour classer un type particulier de données, déterminant les valeurs que vous pouvez attribuer au type et les opérations que vous pouvez effectuer dessus. Lorsque vous programmez, il y a des fois où nous devons convertir des valeurs entre les types afin de manipuler les valeurs d'une manière différente. Par exemple, nous pouvons avoir besoin de concaténer des valeurs numériques avec des chaînes de caractères, ou de représenter des décimales dans des nombres qui ont été initialisés en tant que valeurs entières.

Ce tutoriel vous guidera à travers la conversion de nombres, de chaînes de caractères, de tuples et de listes, ainsi que vous proposera des exemples pour vous aider à vous familiariser avec différents cas d'utilisation.

Conditions préalables

Vous devez avoir Python 3 installé et un environnement de programmation configuré sur votre ordinateur ou serveur. Si vous n'avez pas d'environnement de programmation configuré, vous pouvez consulter les guides d'installation et de configuration pour un environnement de programmation local ou pour un environnement de programmation sur votre serveur, approprié à votre système d'exploitation (Ubuntu, CentOS, Debian, etc.).

Conversion des types de nombres

En Python, il existe deux types de données numériques : les entiers et les nombres à virgule flottante ou flottants. Parfois, vous travaillez sur le code de quelqu'un d'autre et vous aurez besoin de convertir un entier en flottant ou vice versa, ou vous pouvez vous rendre compte que vous utilisez un entier alors que ce dont vous avez vraiment besoin est un flottant. Python dispose de méthodes intégrées qui vous permettent de convertir facilement les entiers en flottants et les flottants en entiers.

Conversion des entiers en flottants

La méthode float() de Python convertit les entiers en flottants. Pour utiliser cette fonction, ajoutez un entier à l'intérieur des parenthèses :

Info : Pour suivre l'exemple de code dans ce tutoriel, ouvrez une interface Python interactive sur votre système local en exécutant la commande python3. Ensuite, vous pouvez copier, coller ou modifier les exemples en les ajoutant après l'invite >>>.

float(57)

Dans ce cas, 57 sera converti en 57.0.

Vous pouvez également utiliser cela avec une variable. Déclarons f comme étant égal à 57, puis affichons le nouveau flottant :

f = 57
print(float(f))
57.0

En utilisant la fonction float(), nous pouvons convertir des entiers en nombres à virgule flottante.

Conversion des flottants en entiers

Python a également une fonction intégrée pour convertir des flottants en entiers : int().

La fonction int() fonctionne de manière similaire à la fonction float() : vous pouvez ajouter un nombre à virgule flottante à l'intérieur des parenthèses pour le convertir en entier :

int(390.8)

Dans ce cas, 390.8 sera converti en 390.

Vous pouvez également utiliser cela avec des variables. Déclarons b égal à 125.0 et c égal à 390.8, puis imprimons les nouveaux nombres à virgule flottante :

b = 125.0
c = 390.8

print(int(b))
print(int(c))
125
390

Lors de la conversion de nombres à virgule flottante en entiers avec la fonction int(), Python coupe la partie décimale et les chiffres restants d'un float pour créer un entier. Même si nous souhaitons arrondir 390,8 à 391, Python ne le fera pas avec la fonction int().

Nombres convertis par division

En Python 3, les quotients pertinents sont convertis des entiers en nombres à virgule flottante lors de la division, bien qu'ils ne le soient pas en Python 2. C'est-à-dire que lorsque vous divisez 5 par 2, en Python 3, vous obtiendrez un nombre à virgule flottante comme réponse (2.5) :

a = 5 / 2
print(a)
2.5

Dans Python 2, puisque vous traitiez avec deux entiers, vous receviez un entier en retour comme réponse, à la place : 5/2=2. Lisez « Python 2 vs Python 3 : Considérations pratiques » pour plus d'informations sur les différences entre Python 2 et Python 3.

Conversion avec des chaînes

Une chaîne est une séquence d'un ou plusieurs caractères (lettres, chiffres, symboles). Les chaînes sont une forme de données courante dans les programmes informatiques, et nous avons souvent besoin de convertir des chaînes en chiffres ou des chiffres en chaînes, en particulier lorsque nous traitons des données générées par l'utilisateur.

Conversion des nombres en chaînes de caractères

Nous pouvons convertir des nombres en chaînes en utilisant la méthode str(). Nous allons passer soit un nombre, soit une variable dans les parenthèses de la méthode, et cette valeur numérique sera alors convertie en valeur de chaîne.

Commençons par regarder la conversion des entiers. Pour convertir l'entier 12 en valeur chaîne, vous pouvez passer 12 dans la méthode str() :

str(12)

Lorsque vous exécutez str(12) dans le shell interactif Python avec la commande python dans une fenêtre de terminal, vous recevrez la sortie suivante :

'12'

Les guillemets autour du nombre 12 signifient que le nombre n'est plus un entier mais est maintenant une valeur de chaîne.

Avec des variables, nous pouvons commencer à voir à quel point il peut être pratique de convertir des entiers en chaînes. Supposons que nous voulons suivre les progrès quotidiens d'un utilisateur en programmation et que nous enregistrions combien de lignes de code il écrit à la fois. Nous aimerions montrer ce retour à l'utilisateur et nous afficherons des valeurs de chaînes 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 recevons l'erreur suivante :

TypeError: can only concatenate str (not "int") to str

Nous ne pouvons pas concaténer des chaînes et des entiers en Python, nous devrons donc convertir la variable lines en une valeur de chaîne :

user = "Sammy"
lines = 50

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

Maintenant, lorsque nous exécutons le code, nous obtenons la sortie suivante qui félicite notre utilisateur pour ses progrès :

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

Si nous cherchons à convertir un nombre à virgule flottante en chaîne de caractères plutôt qu'un entier en chaîne de caractères, nous suivons les mêmes étapes et le même format. Lorsque nous passons un flottant dans la méthode str(), une valeur de chaîne de caractères du flottant sera renvoyée. Nous pouvons utiliser soit la valeur flottante elle-même, soit une variable :

print(str(421.034))

f = 5524.53
print(str(f))
421.034
5524.53

Nous pouvons tester pour nous assurer que c'est correct en concaténant avec une chaîne :

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

Nous pouvons être sûrs que notre flottant a été correctement converti en chaîne car la concaténation a été effectuée sans erreur.

Conversion de chaînes en nombres

Les chaînes peuvent être converties en nombres en utilisant les méthodes int() et float().

Si votre chaîne n'a pas de décimales, vous voudrez probablement la convertir en entier en utilisant la méthode int().

Prenons l'exemple de l'utilisateur Sammy qui suit le nombre de lignes de code écrites chaque jour. Nous pourrions vouloir manipuler ces valeurs avec des mathématiques pour fournir un retour plus intéressant à l'utilisateur, mais ces valeurs sont actuellement stockées sous forme de chaînes :

lines_yesterday = "50"
lines_today = "108"

lines_more = lines_today - lines_yesterday

print(lines_more)
TypeError: unsupported operand type(s) for -: 'str' and 'str'

Parce que les deux valeurs numériques étaient stockées sous forme de chaînes, nous avons reçu une erreur. L'opérande - pour la soustraction n'est pas un opérande valide pour deux valeurs de chaîne.

Modifions le code pour inclure la méthode int() qui convertira les chaînes de caractères en entiers, et nous permettra de faire des calculs avec ces valeurs qui étaient à l'origine des chaînes.

lines_yesterday = "50"
lines_today = "108"

lines_more = int(lines_today) - int(lines_yesterday)

print(lines_more)
58

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

Nous pouvons également convertir les chiffres de l'exemple ci-dessus en valeurs flottantes en utilisant la méthode float() à la place de la méthode int(). Au lieu de recevoir la sortie de 58, nous recevrons la sortie de 58.0, un flottant.

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)
5524.5345.30

Dans ce cas, l'utilisation de l'opérande + avec deux chaînes de caractères est une opération valide, mais elle concatène deux chaînes plutôt qu'à ajouter deux valeurs numériques ensemble. Ainsi, notre sortie semble inhabituelle car elle place simplement les deux valeurs côte à côte.

Nous devrons convertir ces chaînes en nombres à virgule flottante avant d'effectuer des calculs 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)
5569.83

Maintenant que nous avons converti les deux chaînes en flottants, nous obtenons le résultat attendu qui ajoute 45,30 à 5524,53.

Si nous essayons de convertir une valeur de chaîne avec des décimales en un entier, nous recevrons une erreur :

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

Si nous passons une valeur décimale sous forme de chaîne à la méthode int(), nous obtiendrons une erreur car elle ne peut pas être convertie en entier.

Convertir des chaînes en nombres nous permet de modifier rapidement le type de données avec lequel nous travaillons afin de pouvoir effectuer des opérations sur des valeurs numériques qui étaient à l'origine castées en chaînes.

Conversion en tuples et en listes

Vous pouvez utiliser les méthodes list() et tuple() pour convertir les valeurs qui leur sont passées en types de données liste et tuple respectivement. En Python :

  • une liste est une séquence ordonnée modifiable d'éléments qui est contenue dans des crochets [ ].
  • un tuple est une séquence ordonnée immuable d'éléments contenus dans des parenthèses ( ).

Conversion en tuples

Commençons par convertir une liste en un tuple. La conversion d'une liste en un tuple, car c'est un type de données immuable, peut permettre une optimisation substantielle des programmes que nous créons. Lorsque nous utilisons la méthode tuple(), elle renvoie la version tuple de la valeur qui lui est passée.

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

Nous voyons qu'un tuple est imprimé dans la sortie, car les éléments sont maintenant contenus dans des parenthèses plutôt que dans des crochets.

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

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

Encore une fois, nous voyons que la valeur de la liste est changée en une valeur de tuple, indiquée par les parenthèses. Nous pouvons convertir n'importe quel type iterable en un tuple, y compris les chaînes :

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

Parce que nous pouvons itérer à travers les chaînes, nous pouvons les convertir en tuples avec la méthode tuple(). Cependant, avec des types de données qui ne sont pas itérables, comme les entiers et les flottants, nous recevrons une erreur de type :

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

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

Conversion en listes

Convertir des valeurs, en particulier des tuples, en listes peut être utile lorsque vous avez besoin d'une version mutable de cette valeur.

Nous allons utiliser la méthode list() pour convertir le tuple suivant en une liste. Puisque la syntaxe pour créer une liste utilise des parenthèses, veillez à inclure les parenthèses de la méthode list(), et dans ce cas, celles de la méthode print() également :

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

Les crochets signalent qu'une liste a été renvoyée à partir de la valeur de tuple originale qui a été transmise par la méthode list().

Pour rendre le code plus lisible, nous pouvons supprimer 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 ci-dessus.

Tout comme les tuples, les chaînes de caractères peuvent être converties en listes :

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

Ici, la chaîne 'shark' a été convertie en liste, fournissant une version mutable de la valeur originale.

Conclusion

Ce tutoriel Python a démontré comment convertir plusieurs des types de données natifs importants en d'autres types de données, principalement par le biais de méthodes intégrées. Être capable de convertir des types de données en Python vous offre une flexibilité supplémentaire lors de l'écriture de vos programmes.