Question 1Étant donné age = 30, que se passe-t-il quand tu exécutes "I am " + age + " years old" ?
Conversion entre nombres et chaînes
Apprends à convertir entre nombres et chaînes en Python pour éviter les erreurs de type et combiner les valeurs.
Pourquoi la conversion de type compte
En Python, tu ne peux pas additionner ou comparer directement des valeurs de types différents.
Le cas classique, c'est le mélange de nombres (int / float) et de chaînes (str). Par exemple, "25" ressemble au nombre 25 au premier coup d'œil, mais pour Python ce sont juste deux caractères alignés — impossible de les utiliser dans un calcul.
C'est là qu'intervient la conversion de type (casting) pour aligner les types. Une fois que tu es à l'aise avec str() / int() / float(), tu peux convertir librement entre nombres et chaînes.
Nombre → Chaîne (str())
Quand tu passes un nombre à str(), tu récupères une chaîne qui représente ce nombre.
Qu'il s'agisse d'un int, d'un float ou d'un bool, str() transforme presque n'importe quoi en forme de chaîne lisible par un humain.
Tu passes du nombre lui-même à sa représentation en chaîne.
Vois ça comme une préparation avant de joindre (+) des valeurs dans une phrase.
age = 25
temp = -20.5
# Nombre -> Chaîne
print(str(age)) # '25'
print(type(str(age))) # <class 'str'>
# Une fois en chaîne, + peut concaténer
print("Âge : " + str(age) + " ans") # Âge : 25 ans
print("Température actuelle : " + str(temp) + " deg") # Température actuelle : -20.5 deg
Quand utiliser les f-strings à la place
Dans une f-string (f"Âge : {age} ans"), les valeurs sont automatiquement converties en str, donc tu n'as pas besoin d'appeler str() toi-même. str() brille quand tu construis des chaînes avec + ou .join(), ou quand tu veux figer quelque chose en tant que chaîne — noms de fichiers, lignes de log, clés JSON, et autres.
Chaîne → Nombre (int() / float())
Pour l'autre sens, utilise int() et float(). Même si une valeur ressemble à une chaîne, tant que son contenu est un nombre, tu peux la convertir et l'utiliser dans des calculs.
Les entrées utilisateur, les colonnes CSV et les réponses d'API arrivent souvent sous forme de str, donc les convertir en nombres est quelque chose que tu feras souvent.
Utilise int() quand tu veux un entier, et float() quand tu veux autoriser les décimales.
int("3.14") échouera — cette conversion est impossible.
quantity = "12"
price = "198.5"
# Chaîne -> int
q = int(quantity)
print(q + 3) # 15 (fonctionne comme un nombre)
# Chaîne -> float
p = float(price)
print(p * q) # 2382.0 (float, donc avec .0)
print(type(q), type(p)) # <class 'int'> <class 'float'>
Les chaînes non numériques lèvent ValueError
Passer quelque chose qui n'est pas lisible comme un nombre, comme int("abc") ou float("hello"), lève ValueError et arrête ton programme. Pour convertir directement une entrée utilisateur, les schémas habituels sont de vérifier d'abord avec isdigit() ou de l'attraper avec try / except (couvert dans un chapitre ultérieur).
Schémas de conversion courants
Pour finir, voici trois schémas de conversion qui piègent les gens en pratique.
| Objectif | Comment l'écrire | Résultat |
|---|---|---|
| Convertir "3.14" en entier | int(float("3.14")) | 3 (décimales tronquées) |
| Compter les chiffres d'un int | len(str(1234)) | 4 |
| Arrondir un float en entier | round(3.7) — pas int(), utilise round() | 4 |
int("3.14") lève ValueError. C'est parce que int() n'accepte que les chaînes qui ressemblent à des entiers, donc une chaîne avec un point décimal doit passer par float() d'abord, puis être passée à int() — en deux étapes.
Note aussi que int() tronque (supprime la partie décimale). Si tu veux arrondir, utilise round().
Une chaîne avec un point décimal ne peut pas être passée directement à int().
Convertis-la avec float() d'abord, puis passe le résultat à int() — un cast en deux étapes pour obtenir un entier.
Dans cet article, on a parcouru la conversion de type avec str() / int() / float(). Un moyen facile de s'en souvenir : nombre → chaîne sert à construire l'affichage, et chaîne → nombre sert à traiter les entrées et les données.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Quel est le résultat correct de l'exécution de int("3.14") ?
Question 3Que retourne len(str(1234)) ?