Question 1Que va afficher ce code ?
print(type(10 / 2))
Nombres et flottants (float)
Apprends les types numériques int et float en Python pour calculer avec précision et choisir la bonne division.
Python a deux types numériques
Python dispose de deux types numériques principaux pour manipuler les nombres : int pour les entiers et float (virgule flottante) pour les décimaux.
Les deux sont des nombres, donc tu peux effectuer toutes les opérations arithmétiques de base — addition, soustraction, multiplication, division et modulo — avec l'un ou l'autre.
Mais leur syntaxe et leur précision diffèrent, et tu choisis donc le bon pour chaque situation.
Écris-le sans . et tu obtiens un int.
Écris-le avec . et tu obtiens un float.
Dans les deux cas, type() te dit lequel tu as.
Même si la valeur ressemble à un nombre entier, ajouter .0 comme 3.0 en fait un float. À l'inverse, écrire simplement 175 en fait un int.
Les nombres négatifs fonctionnent de la même manière — -5 est un int, -5.5 est un float.
# int (nombre entier)
age = 25
print(type(age)) # <class 'int'>
# float (virgule flottante)
weight = 175.5
print(type(weight)) # <class 'float'>
# Même "3", types différents selon l'écriture
print(type(3)) # <class 'int'>
print(type(3.0)) # <class 'float'>
# Les négatifs fonctionnent pareil
print(type(-10)) # <class 'int'>
print(type(-10.5)) # <class 'float'>
Tour rapide des opérateurs
Il y a 7 opérateurs que tu utilises pour les calculs numériques. Les quatre opérations de base + - * / fonctionnent comme dans d'autres langages, mais // (division entière), % (modulo) et ** (exponentiation) reviennent souvent en Python, donc autant les bien maîtriser.
| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
| + | Addition | 10 + 3 | 13 |
| - | Soustraction | 10 - 3 | 7 |
| * | Multiplication | 10 * 3 | 30 |
| / | Division (toujours float) | 10 / 3 | 3.3333... |
| // | Division entière (tronque les décimales) | 10 // 3 | 3 |
| % | Modulo (reste de la division) | 10 % 3 | 1 |
| ** | Exponentiation | 2 ** 10 | 1024 |
/ retourne un float même entre ints
10 / 2 vaut 5.0 (float), pas 5.
Le / de Python est conçu pour toujours retourner un float, donc le résultat est un float même quand les deux opérandes sont des ints.
Si tu veux un résultat entier, utilise plutôt //.
# Arithmétique de base
print(10 + 3) # 13
print(10 - 3) # 7
print(10 * 3) # 30
# La division retourne toujours un float
print(10 / 3) # 3.3333333333333335
print(10 / 2) # 5.0 (toujours un float même si la division tombe juste)
# Division entière (tronque) et modulo
print(10 // 3) # 3
print(10 % 3) # 1
# Exponentiation : a ** b signifie « a à la puissance b »
print(2 ** 10) # 1024
print(3 ** 2) # 9
print(2 ** 0.5) # 1.4142135623730951 (utilisable comme racine carrée)
Opérateurs d'affectation combinée (+= / -= etc.)
Les schémas du genre « x = x + 1 » — où tu fais quelque chose à une variable et réécris le résultat dans elle-même — reviennent tout le temps.
Tu peux les raccourcir en « x += 1 », et ces formes raccourcies s'appellent les opérateurs d'affectation combinée.
Chacun de `+ - / // % * a une forme combinée.
La forme courte est une façon en une ligne de dire « fais quelque chose à moi-même et réécris-le ».
En interne, elle se comporte exactement comme la forme étendue à droite.
Par exemple, voici ce que chaque opérateur fait quand x = 10.
score = 10
score += 5 # 10 + 5 -> 15
print(score) # 15
score *= 2 # 15 * 2 -> 30
print(score) # 30
score -= 7 # 30 - 7 -> 23
print(score) # 23
# Fonctionne pareil avec float
weight = 60.0
weight += 1.5
print(weight) # 61.5
Mélange d'int et de float dans les opérations
Quand tu mélanges int et float, le résultat est toujours un float. C'est parce que Python promeut automatiquement vers le type le plus précis.
Comme mentionné ci-dessus, / (division) retourne un float même entre ints, alors que // (division entière) retourne un int quand les deux opérandes sont des ints.
int + int = int.
Mais / retourne toujours un float.
Si un côté est float, le résultat est float.
# int avec int reste int
print(10 + 3) # 13 -> int
print(type(10 + 3)) # <class 'int'>
# Si un côté est float, le résultat est un float
print(10 + 3.0) # 13.0
print(type(10 + 3.0)) # <class 'float'>
# / retourne un float même entre ints
print(10 / 2) # 5.0
print(type(10 / 2)) # <class 'float'>
# // reste int quand les deux sont des ints
print(10 // 3) # 3
print(type(10 // 3)) # <class 'int'>
# // devient float si un côté est float
print(10 // 3.0) # 3.0
print(type(10 // 3.0)) # <class 'float'>
Les float ont une précision limitée
Les ordinateurs stockent les float sous forme d'approximation binaire. C'est pourquoi même des calculs d'apparence simple peuvent produire une petite erreur.
L'exemple ci-dessous est un classique « piège des float » — chaque débutant tombe dessus à un moment donné.
Utilise Decimal quand tu as besoin de calculs exacts
Dans les situations où même une petite erreur est inacceptable — comme les calculs d'argent — tu peux faire des calculs décimaux exacts avec le type Decimal de la bibliothèque standard. On ne le couvrira pas dans cet article, mais retiens juste : « float est une approximation » et « il existe un autre outil pour les calculs exacts ».
Changer de type avec int() et float()
Pour convertir entre types numériques, utilise les fonctions intégrées int() et float().
Attention à une chose : int() tronque la partie décimale — il n'arrondit pas. Donc passer 3.9 à int() te donne 3, pas 4. Pour les valeurs négatives, il arrondit vers zéro, donc -3.9 devient -3, pas -4.
# float -> int c'est « tronquer » (PAS arrondir !)
print(int(3.9)) # 3
print(int(3.1)) # 3
print(int(-3.9)) # -3 (arrondi vers zéro)
# int -> float ajoute juste .0
print(float(5)) # 5.0
print(float(-2)) # -2.0
# Utiliser la conversion via une variable
a = 3.9
a = int(a)
print(a, type(a)) # 3 <class 'int'>
b = 5
b = float(b)
print(b, type(b)) # 5.0 <class 'float'>
Dans cet article, tu as appris :
- La différence entre int et float
- L'exponentiation avec « ** » et l'affectation combinée (+= et compagnie)
- La différence de type de retour entre « / » (division) et « // » (division entière)
- Les problèmes de précision des float
- La conversion de type avec int() / float()
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Que va afficher ce code ?
x = 10
x **= 3
print(x)`
Question 3Que va afficher ce code ?print(int(-3.9))