Vai al contenuto
eLearner.app
Modulo 4 · Lezione 3 di 415/36 nel corso~10 min
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).

Python
type(42)       # <class 'int'>
type(3.14)     # <class 'float'>
type(10 ** 100)  # <class 'int'>   — interi grandi a piacere

Operatori aritmetici

OpSignificatoEsempioRisultato
+somma2 + 35
-sottrazione5 - 23
*prodotto4 * 312
/divisione vera10 / 42.5
//divisione intera10 // 42
%modulo (resto)10 % 31
**potenza2 ** 101024

Attenzione: / ritorna sempre float, anche con due interi (10 / 2 restituisce 5.0, non 5). Per la divisione intera serve //.

Python
10 / 4    # 2.5
10 // 4   # 2
-7 // 2   # -4   (arrotonda verso il basso, non verso lo zero)

Built-in numerici

Python
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])        # 6

Il modulo math

Python
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)      # 6

Pitfall del float

I float sono approssimazioni binarie: 0.1 + 0.2 non fa esattamente 0.3.

Python
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

Esercizio#python.m4.l3.e1
Tentativi: 0Caricamento…

Dato `seconds = 3725`, calcola `hours`, `minutes`, `remaining_seconds` usando // e %. Valuta la tuple `(hours, minutes, remaining_seconds)`.

Caricamento editor…
Mostra suggerimento

// fa la divisione intera, % il resto.

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#python.m4.l3.e2
Tentativi: 0Caricamento…

Dato `radius = 5`, calcola l'area del cerchio in `area` usando math.pi. Valuta `area` arrotondata a 2 decimali con round.

Caricamento editor…
Mostra suggerimento

math.pi * radius ** 2

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#python.m4.l3.e3
Tentativi: 0Caricamento…

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.

Caricamento editor…
Mostra suggerimento

math.sqrt(16) restituisce 4.0. round(3.74) restituisce 4. Somma ed assegna a total_val.

Soluzione disponibile dopo 3 tentativi