Convertir des types de données
Tip
Pour plus d’informations, consultez l’onglet Texte et images !
Lorsque vous acceptez des données d’un utilisateur à l’aide de la input() fonction, Python la capture toujours en tant que texte (chaîne) même si l’utilisateur tape un nombre. Pour utiliser cette valeur dans les calculs mathématiques, vous devez d’abord convertir explicitement (ou « cast ») son type de données.
Fonctions de conversion de type
Python fournit des fonctions intégrées pour transformer des données d’un type à un autre. Pour convertir une valeur, vous l’encapsulez dans la fonction de conversion souhaitée :
| Function | Convertit en | Example | Result |
|---|---|---|---|
int() |
Nombre entier | int("42") |
42 |
float() |
Nombre décimal | float("3.14") |
3.14 |
str() |
Texte | str(100) |
"100" |
Conversion d’une entrée utilisateur
Voici les étapes à suivre pour convertir l’entrée utilisateur du texte en nombre :
raw_input = input("Enter your score: ") # Captured as text, e.g. "95"
score = float(raw_input) # Convert to a decimal number, e.g. 95.0
print(score + 5) # Math is now possible. Output: 100.0
Vous pouvez essayer d’exécuter ce code vous-même dans un interpréteur Python en ligne à l’adresse https://aka.ms/python-coder.
Raccourci d’une ligne
Vous pouvez combiner ces étapes en une seule ligne de code. Lorsque vous imbriquez la input() fonction à l'intérieur d'une fonction de conversion, Python capture d'abord l'entrée de l'utilisateur en tant que texte, puis la convertit immédiatement en type souhaité :
score = float(input("Enter your score: "))
- Python exécute d’abord la fonction intérieure :
input("Enter your score: ")pour saisir le texte. - Il transmet immédiatement ce texte à la fonction extérieure :
float() - Le nombre converti est ensuite affecté à la variable
score.
Que se passe-t-il avec les valeurs incompatibles ?
Si vous essayez de convertir une valeur qui ne peut pas être interprétée comme un nombre, Python arrête d'exécuter votre programme et déclenche un ValueError:
user_age = int("hello")
Output:
ValueError: invalid literal for int() with base 10: 'hello'
Vous pouvez également obtenir une ValueError valeur si vous essayez de convertir un nombre décimal en entier, car Python ne pouvez pas l'arrondir pour vous :
user_age = int("3.14") # Pythoncan't drop the decimal for you
Si vous pensez qu’un utilisateur peut taper un nombre décimal, utilisez float() plutôt que int() pour éviter cette erreur. Les floats peuvent être convertis en entiers, mais Python arrondit toujours la partie décimale (par exemple, int(3.99) devient 3).
Vérification du type d’une valeur
Vous pouvez vérifier le type de données de n’importe quelle variable à type() l’aide de la fonction intégrée :
score = "95"
print(type(score)) # Output: <class 'str'>
score = float(score)
print(type(score)) # Output: <class 'float'>