Apprenez en lisant dans l'ordre

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.

Des types incompatibles ne se combinent pas
25int+"ans"strTypeErrortypes différentstypes différents

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.

D'abord, regardons ce qui se passe si tu n'alignes pas les types — observe le message d'erreur. Exécute le code tel quel.

Éditeur Python

Exécuter le code pour voir le résultat

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.

Ce que fait str()
25intstr()"25"str-20.5floatstr()"-20.5"strpasservers strpasservers str

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.

Avec user = "Alice" et score = 95, construis un rapport d'une ligne.

① En utilisant uniquement str() et +, affiche "Le score d'Alice est 95".

② Écris la même chose avec une f-string, sans appeler str().

Éditeur Python

Exécuter le code pour voir le résultat

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.

Choisir entre int() et float()
"100"strint()100int"3.14"strfloat()3.14floatpasservers intpasservers float

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).

Calculons le total d'un panier. Toutes les valeurs arrivent sous forme de chaînes.

Tu disposes de unit_price_str = "198", count_str = "5", et d'un taux de taxe TAX_RATE = 0.1.

① Convertis la quantité et le prix unitaire en nombres avec int().

② Multiplie le total (prix unitaire × quantité) par le taux de taxe et print() le prix TTC.

Éditeur Python

Exécuter le code pour voir le résultat

Schémas de conversion courants

Pour finir, voici trois schémas de conversion qui piègent les gens en pratique.

ObjectifComment l'écrireRésultat
Convertir "3.14" en entierint(float("3.14"))3 (décimales tronquées)
Compter les chiffres d'un intlen(str(1234))4
Arrondir un float en entierround(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().

Chaînes décimales vers entiers via float()
"3.14"strfloat()3.14floatint()3intpasservers floatpasservers int

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.

Tu veux utiliser la chaîne de prix price_str = "1980.6" en tant qu'entier.

① Exécute int(price_str) tel quel et confirme l'erreur, puis commente-le.

② Convertis-le en entier via float() et print() le résultat.

Éditeur Python

Exécuter le code pour voir le résultat

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.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Étant donné age = 30, que se passe-t-il quand tu exécutes "I am " + age + " years old" ?

Question 2Quel est le résultat correct de l'exécution de int("3.14") ?

Question 3Que retourne len(str(1234)) ?