2.4. Conversion de type

Il est parfois utile de pouvoir convertir le type d’une valeur. Considérons l’exemple d’Alice qui a 18 ans et dont on souhaite afficher l’âge dans la console.

>>> print("Alice a 18 ans")
Alice a 18 ans

Malheureusement, l’âge d’Alice change chaque année. On doit donc trouver un moyen de modifier son âge. Pour ce faire, on utilisera la variable age qui pourra être mise à jour par le programme. Dans l’exemple ci-dessous, nous allons essayer de compléter la phrase "Alice a ... ans".

>>> age = 18
>>> print("Alice a " + age + " ans")
Traceback (most recent call last):
  File "<input>", line...
TypeError: can only concatenate str (not "int") to str

Puisque l’âge d’Alice est un entier, il est impossible de le combiner avec une chaîne de caractères, comme nous l’indique le message d’erreur. La raison est que l’opérateur + n’a pas la même signification pour les entiers et pour les chaînes de caractères. Entre deux entiers il correspond à une addition, alors qu’entre deux chaînes il sert à la concaténation. C’est pourquoi il nous faut convertir la variable age en chaîne de caractères au moyen de la fonction str().

>>> print("Alice a " + str(age) + " ans")
Alice a 18 ans

Note

N’oubliez pas d’ajouter un espace après "a" et avant "ans", sinon vous obtiendrez "Alice a18ans".

Voyons à présent quelques exemples de conversion.

>>> x = 5
>>> float(x)
5.0
>>> i = 5 / 2
>>> i
2.5
>>> int(i)
2
>>> y = 4.56
>>> str(y)
'4.56'

Notez bien la différence entre 4.56 qui est de type float (nombre décimal) et possède donc les propriétés des valeurs numériques (addition, soustraction, etc.), et "4.56" qui est de type str (chaîne de caractères) et aura donc les fonctionnalités associées (concaténation, etc.).

>>> a = 9
>>> b = 5
>>> a + b
14
>>> a = "9"
>>> b = "5"
>>> a + b
'95'

Note

La commande help() fonctionne aussi avec les types de données ! Essayez par exemple help(int).