
Conversion de types (casting)
Maîtrisez la conversion de types (casting) en Python. Convertissez des entiers, des flottants, des chaînes de caractères et des booléens. Gérez les erreurs de conversion.
Pourquoi convertir des types ? Nécessité et cas d'utilisation
En Python, les données sont typées, même si ce typage est dynamique. Il arrive souvent que l'on ait besoin de convertir une donnée d'un type à un autre. Par exemple, vous pouvez avoir une chaîne de caractères représentant un nombre, et vous souhaitez effectuer des opérations arithmétiques sur ce nombre. Vous devez alors convertir la chaîne de caractères en un entier ou un flottant.
La conversion de types est également nécessaire lorsque vous lisez des données à partir d'un fichier ou d'une entrée utilisateur. Ces données sont souvent lues sous forme de chaînes de caractères, et vous devez les convertir dans le type approprié pour les manipuler.
La conversion de type est appelée "casting" en anglais. C'est une opération courante et essentielle en programmation.
Convertir en entier (int) : fonctions int() et exceptions
La fonction `int()` permet de convertir une valeur en un entier. Vous pouvez convertir un nombre à virgule flottante, une chaîne de caractères représentant un entier, ou un booléen.
Exemples :
x = int(3.14) # Convertit le float 3.14 en entier 3
print(x) # Affiche 3
y = int("10") # Convertit la chaîne "10" en entier 10
print(y) # Affiche 10
z = int(True) # Convertit le booléen True en entier 1 (False serait converti en 0)
print(z) # Affiche 1Si la valeur ne peut pas être convertie en entier, une exception `ValueError` est levée. Par exemple :
a = int("Bonjour") # Lève une ValueError car "Bonjour" n'est pas un entierVous pouvez spécifier la base pour la conversion d'une chaîne. Par exemple, pour convertir une chaîne représentant un nombre hexadécimal (base 16) :
b = int("1A", 16) # Convertit "1A" (hexadécimal) en entier 26
print(b) # Affiche 26Convertir en nombre à virgule flottante (float) : fonction float()
La fonction `float()` permet de convertir une valeur en un nombre à virgule flottante. Vous pouvez convertir un entier, une chaîne de caractères représentant un nombre décimal, ou un booléen.
Exemples :
x = float(10) # Convertit l'entier 10 en flottant 10.0
print(x) # Affiche 10.0
y = float("3.14") # Convertit la chaîne "3.14" en flottant 3.14
print(y) # Affiche 3.14
z = float(True) # Convertit le booléen True en flottant 1.0 (False serait converti en 0.0)
print(z) # Affiche 1.0Si la valeur ne peut pas être convertie en flottant, une exception `ValueError` est levée. Par exemple :
a = float("Bonjour") # Lève une ValueError car "Bonjour" n'est pas un nombreConvertir en chaîne de caractères (str) : fonction str()
La fonction `str()` permet de convertir n'importe quelle valeur en une chaîne de caractères. C'est utile pour afficher des données, les concaténer avec d'autres chaînes, ou les écrire dans un fichier.
Exemples :
x = str(10) # Convertit l'entier 10 en chaîne "10"
print(x) # Affiche 10
print(type(x)) # Affiche
y = str(3.14) # Convertit le flottant 3.14 en chaîne "3.14"
print(y) # Affiche 3.14
z = str(True) # Convertit le booléen True en chaîne "True"
print(z) # Affiche True
message = "Le résultat est : " + str(42) # Concaténation avec une chaîne
print(message) # Affiche Le résultat est : 42 La fonction `str()` appelle la méthode `__str__()` de l'objet, si elle existe. Cette méthode est censée retourner une représentation "informelle" ou "joliment imprimable" de l'objet.
Convertir en booléen (bool) : fonction bool() et valeurs "fausses"
La fonction `bool()` permet de convertir une valeur en un booléen. En Python, certaines valeurs sont considérées comme "fausses" dans un contexte booléen, et toutes les autres sont considérées comme "vraies".
Les valeurs "fausses" sont : `False`, `None`, `0` (entier), `0.0` (flottant), `""` (chaîne vide), `[]` (liste vide), `()` (tuple vide), `{}` (dictionnaire vide).
Exemples :
print(bool(False)) # Affiche False
print(bool(None)) # Affiche False
print(bool(0)) # Affiche False
print(bool(0.0)) # Affiche False
print(bool("")) # Affiche False
print(bool([])) # Affiche False
print(bool(())) # Affiche False
print(bool({})) # Affiche False
print(bool(True)) # Affiche True
print(bool(1)) # Affiche True
print(bool(3.14)) # Affiche True
print(bool("abc")) # Affiche True
print(bool([1, 2])) # Affiche TrueLa fonction `bool()` est utile pour tester si une variable est "vide" ou "non nulle" dans une condition `if`.
Gérer les erreurs de conversion : try...except
Comme nous l'avons vu précédemment, des erreurs peuvent survenir lors d'une conversion si la donnée n'est pas compatible avec le type cible. Il est possible de gérer ces erreurs.
Lorsque vous effectuez une conversion de type, il est possible que la valeur à convertir ne soit pas compatible avec le type cible. Dans ce cas, Python lève une exception (généralement une `ValueError`).
Pour gérer ces erreurs de manière élégante, vous pouvez utiliser une structure `try...except` :
chaine = "abc"
try:
nombre = int(chaine)
print("La conversion a réussi :", nombre)
except ValueError:
print("La conversion a échoué : la chaîne ne représente pas un entier.")Dans cet exemple, le code à l'intérieur du bloc `try` est exécuté. Si une exception `ValueError` se produit (parce que la chaîne "abc" ne peut pas être convertie en entier), le code à l'intérieur du bloc `except ValueError` est exécuté. Si aucune exception ne se produit, le bloc `except` est ignoré.
La structure `try...except` permet d'éviter que votre programme ne s'arrête brutalement en cas d'erreur de conversion, et vous donne la possibilité de traiter l'erreur de manière appropriée (par exemple, en affichant un message d'erreur à l'utilisateur ou en essayant une autre conversion).