Python 2.8 : Conversion de la chaine de caractère
Maintenant que nous savons manipuler les variables numériques, le moment est venu de réactiver la saisie utilisateur. Le problème est qu'input() retourne toujours une chaîne de caractères, même si l'utilisateur tape un nombre. Pour pouvoir faire des opérations arithmétiques sur la valeur saisie, nous devons la convertir explicitement en entier.
Convertir avec int()
La fonction int() permet de transformer une chaîne contenant un nombre en valeur entière. Voici un exemple complet où l'on demande l'âge et calcule l'âge de l'an prochain :
age_str = input("Quel est ton âge ? ")
age = int(age_str)
print("L'an prochain vous aurez " + str(age + 1) + " ans")
Sans la conversion int(), l'opération age + 1 lèverait une TypeError car on ne peut pas additionner une chaîne et un entier. À l'inverse, on note qu'il faut ensuite reconvertir le résultat avec str() pour l'afficher dans print, car la concaténation avec + exige des opérandes de même type. Cette danse entre les types peut paraître pénible au début mais elle force à être explicite et évite les bugs subtils.
Attention aux entrées invalides :
- int("30") fonctionne et retourne 30
- int("trente") lève une ValueError
- int("3.5") lève aussi une ValueError
- float() accepte les nombres à virgule
- Si l'utilisateur tape n'importe quoi, le programme plante
Le code actuel fonctionne tant que l'utilisateur tape réellement un nombre. Mais s'il tape « abc », int() lève une ValueError et le programme s'arrête brutalement. C'est exactement le genre de cas qu'il faut anticiper. Dans la suite du programme, nous allons voir comment gérer les exceptions et les erreurs avec try / except, pour proposer une saisie robuste qui ne plante jamais quoi que tape l'utilisateur.
En résumé
Cette leçon aborde la conversion de chaînes de caractères en nombres entiers en Python. Le problème central est que les chaînes de caractères ne peuvent pas être utilisées directement pour des opérations numériques. La solution est d'utiliser la fonction `int()` pour effectuer cette conversion, qui fonctionne uniquement si la chaîne contient un nombre valide.
Points clés
- Les chaînes de caractères ne peuvent pas être additionnées ou utilisées directement dans des opérations numériques
- Utiliser la fonction `int()` pour convertir une chaîne de caractères en nombre entier (exemple : int("20"))
- La conversion échoue si la chaîne contient du texte non-numérique, ce qui génère une erreur
Questions fréquentes
Pourquoi une chaîne de caractères ne peut-elle pas être utilisée directement comme un nombre ?
Parce qu'une chaîne de caractères est un type de donnée différent des nombres. Python distingue ces types et ne permet pas de mélanger directement une chaîne avec des opérations numériques sans conversion explicite.
Comment convertir une chaîne en nombre entier en Python ?
Utilisez la fonction `int()`. Par exemple, `int("20")` convertit la chaîne "20" en nombre entier 20, rendant possible son utilisation dans des opérations arithmétiques.
Que se passe-t-il si je tente de convertir une chaîne contenant du texte ?
La conversion génère une erreur. Par exemple, `int("mai")` provoquera une erreur car "mai" n'est pas un nombre valide. Cela montre l'importance de gérer les exceptions pour les conversions non-numériques.