Leçons du module (3/4)
Nombres et module math
Python distingue deux types numériques fondamentaux : int (entiers de précision
arbitraires — pas de dépassement) et float (nombre à virgule flottante 64 bits, double
précision).
type(42) # <class 'int'>
type(3.14) # <class 'float'>
type(10 ** 100) # <class 'int'> — interi grandi a piacereOpérateurs arithmétiques
| Op | Signplication | Exemple | Résultat |
|---|---|---|---|
+ | addition | 2 + 3 | 5 |
- | soustraction | 5 - 2 | 3 |
* | produit | 4 * 3 | 12 |
/ | division réelle | 10 / 4 | 2.5 |
// | division entière | 10 // 4 | 2 |
% | modulo (reste) | 10 % 3 | 1 |
** | puissance | 2 ** 10 | 1024 |
Attention : / renvoie toujours un float, même avec deux entiers (10 / 2
renvoie 5.0, pas 5). Pour la division entière, utilisez //.
10 / 4 # 2.5
10 // 4 # 2
-7 // 2 # -4 (arrotonda verso il basso, non verso lo zero)Fonctions numériques intégrées
abs(-5) # 5
min(3, 1, 2) # 1
max([3, 1, 2]) # 3 (su iterabile)
round(3.7) # 4
round(3.14159, 2) # 3.14
sum([1, 2, 3]) # 6Le module math
import math
math.pi # 3.141592653589793
math.sqrt(16) # 4.0
math.floor(3.9) # 3 (verso meno infinito)
math.ceil(3.1) # 4 (verso più infinito)
math.log(math.e) # 1.0
math.gcd(12, 18) # 6Le piège du float
Les floats sont des approximations binaires : 0.1 + 0.2 n'est pas exactement égal à
0.3.
0.1 + 0.2 # 0.30000000000000004
0.1 + 0.2 == 0.3 # False !Pour des comparaisons sûres, utilisez math.isclose(a, b) ou, dans des contextes financiers, le
module decimal.
Précision du float et module decimal
Les floats en Python sont implémentés comme des nombres à virgule flottante double précision (norme IEEE 754). Par conséquent, des calculs comme 0.1 + 0.2 ne donnent pas exactement 0.3, mais plutôt 0.30000000000000004. Si vous avez besoin d'une précision mathématique absolue (par exemple pour des applications financières), utilisez le module decimal de la bibliothèque standard.
À vous de jouer
Étant donné `seconds = 3725`, calculez `hours`, `minutes`, `remaining_seconds` en utilisant // et %. Évaluez le tuple `(hours, minutes, remaining_seconds)`.
Afficher l'indice
// fait la division entière, % donne le reste.
Solution disponible après 3 tentatives
Exercice de révision
Étant donné `radius = 5`, calculez l'aire du cercle dans `area` en utilisant math.pi. Évaluez `area` arrondie à 2 décimales avec round.
Afficher l'indice
math.pi * radius ** 2
Solution disponible après 3 tentatives
Défi supplémentaire
Importez le module `math`. Calculez la racine carrée de `16` à l'aide de `math.sqrt`, ajoutez le résultat à la valeur arrondie de `3.74` (en utilisant `round()`), et stockez la somme finale dans `total_val`. Enfin, évaluez la variable.
Afficher l'indice
math.sqrt(16) renvoie 4.0. round(3.74) renvoie 4. Additionnez-les et assignez le résultat à total_val.
Solution disponible après 3 tentatives