Lezioni del modulo (3/4)
Numeri e modulo math
Python distingue due tipi numerici fondamentali: int (interi a precisione
arbitraria — niente overflow) e float (virgola mobile a 64 bit, doppia
precisione).
type(42) # <class 'int'>
type(3.14) # <class 'float'>
type(10 ** 100) # <class 'int'> — interi grandi a piacereOperatori aritmetici
| Op | Significato | Esempio | Risultato |
|---|---|---|---|
+ | somma | 2 + 3 | 5 |
- | sottrazione | 5 - 2 | 3 |
* | prodotto | 4 * 3 | 12 |
/ | divisione vera | 10 / 4 | 2.5 |
// | divisione intera | 10 // 4 | 2 |
% | modulo (resto) | 10 % 3 | 1 |
** | potenza | 2 ** 10 | 1024 |
Attenzione: / ritorna sempre float, anche con due interi (10 / 2
restituisce 5.0, non 5). Per la divisione intera serve //.
10 / 4 # 2.5
10 // 4 # 2
-7 // 2 # -4 (arrotonda verso il basso, non verso lo zero)Built-in numerici
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]) # 6Il modulo 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) # 6Pitfall del float
I float sono approssimazioni binarie: 0.1 + 0.2 non fa esattamente
0.3.
0.1 + 0.2 # 0.30000000000000004
0.1 + 0.2 == 0.3 # False !Per confronti sicuri usa math.isclose(a, b) o, in ambito finanziario, il
modulo decimal.
Precisione float ed il modulo decimal
I float in Python sono implementati come numeri a virgola mobile a doppia precisione (standard IEEE 754). Per questo motivo, calcoli come 0.1 + 0.2 non restituiscono esattamente 0.3, ma 0.30000000000000004. Se hai bisogno di precisione assoluta (es. per calcoli finanziari), usa il modulo decimal della libreria standard.
Prova tu
Dato `seconds = 3725`, calcola `hours`, `minutes`, `remaining_seconds` usando // e %. Valuta la tuple `(hours, minutes, remaining_seconds)`.
Mostra suggerimento
// fa la divisione intera, % il resto.
Soluzione disponibile dopo 3 tentativi
Esercizio di ripasso
Dato `radius = 5`, calcola l'area del cerchio in `area` usando math.pi. Valuta `area` arrotondata a 2 decimali con round.
Mostra suggerimento
math.pi * radius ** 2
Soluzione disponibile dopo 3 tentativi
Sfida aggiuntiva
Importa il modulo `math`. Calcola la radice quadrata del numero `16` usando `math.sqrt`, somma il risultato al valore arrotondato di `3.74` (usa `round`) e salva la somma finale in `total_val`. Valuta infine la variabile.
Mostra suggerimento
math.sqrt(16) restituisce 4.0. round(3.74) restituisce 4. Somma ed assegna a total_val.
Soluzione disponibile dopo 3 tentativi