Salta al contenuto
Note per Studenti Tipi numerici ed espressioni

Tipi numerici ed espressioni

In questa pagina 6
In questa pagina 5

Tipi

Tipo Letterali Note
int 42, -7, 1_000_000, 0xFF, 0b1010 precisione arbitraria
float 3.14, 2.0, 1e-3, float("inf") IEEE 754 doppia precisione, vedi Rappresentazione binaria dei datiBasi 2, 8 e 16; interi senza segno e in complemento a 2 con overflow; virgola mobile IEEE 754 e sue approssimazioni; caratteri ASCII, Unicode e UTF-8.Rappresentazione binaria dei dati →
complex 2+3j, complex(2, 3) .real, .imag, abs(z)
bool True, False sottotipo di int: True + True == 2

Operatori aritmetici

Definizione (operatori aritmetici di Python)

Operatore Significato 7 op 2 -7 op 2
+ - * somma, differenza, prodotto 9, 5, 14
/ divisione reale, sempre float 3.5 -3.5
// divisione intera (arrotonda verso −∞-\infty) 3 -4
% resto, stesso segno del divisore 1 1
** potenza 49

Esempio. -7 // 2 restituisce -4, -7 % 2 restituisce 1 e 7 / 2 restituisce 3.5.

Formula (relazione tra // e %). Vale sempre a == (a // b) * b + a % b. Attenzione: in C la divisione intera tronca verso zero e -7 / 2 vale -3 (vedi Tipi, operatori e controllo del flusso in CTipi interi e reali del C con dimensioni e limiti, conversioni implicite e cast, divisione intera, operatori di incremento, logici e bit a bit; if, switch, while, do-while, for, break e continue.Tipi, operatori e controllo del flusso in C →).

Esempio. Con a=−7a=-7 e b=2b=2: (−4)⋅2+1=−7(-4)\cdot2+1=-7.

Usi tipici di // e %:

python
n = 1234
ultima_cifra = n % 10        # 4
senza_ultima = n // 10       # 123
pari = n % 2 == 0
ore, minuti = divmod(135, 60)  # (2, 15)

Tipo del risultato

Proprietà (tipo del risultato di un'operazione)

  • int op int → int (tranne / → float).
  • Se un operando è float, il risultato è float: 2 * 3.0 == 6.0.
  • int ** int negativo → float: 2 ** -1 == 0.5.

Esempio. 2 * 3.0 restituisce 6.0 e 2 ** -1 restituisce 0.5.

Precedenza (dalla più alta)

Definizione (precedenza degli operatori)

  1. ** (associativo a destra: 2 ** 3 ** 2 == 2 ** 9)
  2. +x, -x unari (-2 ** 2 == -4)
  3. *, /, //, %
  4. +, -
  5. confronti <, <=, ==, !=, >, >=, in, is
  6. not
  7. and
  8. or

Esempio. 2 ** 3 ** 2 vale 512 (associativo a destra) e -2 ** 2 vale -4.

Nel dubbio, parentesi.

Conversioni

python
int(3.99)        # 3: tronca verso zero
int("42")        # 42
int("3.5")       # ValueError: la stringa deve essere un intero
float("3.5")     # 3.5
str(42)          # '42'
round(2.675, 2)  # 2.67 (2.675 non è rappresentabile esattamente)
round(2.5), round(3.5)  # (2, 4): arrotondamento al pari

Modulo math

python
import math
math.sqrt(2), math.pi, math.e
math.floor(-2.5), math.ceil(-2.5)   # (-3, -2)
math.trunc(-2.5)                    # -2
math.isclose(a, b, rel_tol=1e-9)
math.gcd(12, 18)                    # 6
abs(-3), max(1, 5, 2), min(...), sum(lista)   # funzioni predefinite

Errori tipici

Versione ripasso

Tipi

Tipo Letterali Note
int 42, -7, 1_000_000, 0xFF, 0b1010 precisione arbitraria
float 3.14, 2.0, 1e-3, float("inf") IEEE 754 doppia precisione, vedi Rappresentazione binaria dei datiBasi 2, 8 e 16; interi senza segno e in complemento a 2 con overflow; virgola mobile IEEE 754 e sue approssimazioni; caratteri ASCII, Unicode e UTF-8.Rappresentazione binaria dei dati →
complex 2+3j, complex(2, 3) .real, .imag, abs(z)
bool True, False sottotipo di int: True + True == 2

Operatori aritmetici

Operatore Significato 7 op 2 -7 op 2
+ - * somma, differenza, prodotto 9, 5, 14
/ divisione reale, sempre float 3.5 -3.5
// divisione intera (arrotonda verso −∞-\infty) 3 -4
% resto, stesso segno del divisore 1 1
** potenza 49

Vale sempre a == (a // b) * b + a % b.

Usi tipici di // e %:

  • n % 10 (ultima cifra), n // 10 (senza ultima cifra), divmod(135, 60) -> (2, 15).

Tipo del risultato: int op int →\rightarrow int (tranne / →\rightarrow float); operando float →\rightarrow float; int ** int negativo →\rightarrow float.

Precedenza (dalla più alta)

** (associativo a destra: 2 ** 3 ** 2 == 2 ** 9), +x/-x unari (-2 ** 2 == -4), * / // %, + -, confronti, not, and, or. Nel dubbio, parentesi.

Conversioni e funzioni

  • int(3.99) →\rightarrow 3 (tronca verso zero), int("42") →\rightarrow 42, float("3.5") →\rightarrow 3.5, str(42) →\rightarrow '42'.
  • round(2.675, 2) →\rightarrow 2.67, round(2.5) →\rightarrow 2, round(3.5) →\rightarrow 4 (arrotondamento al pari).
  • Modulo math: floor(-2.5) = -3, ceil(-2.5) = -2, trunc(-2.5) = -2, isclose, gcd.

Errori tipici

Esercizi su questo argomento

Teoria collegata