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.
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.
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.
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()
.
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.
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.
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.
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.
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 :
[ ]
.( )
.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.
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.
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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!