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 ) 3-4%resto, stesso segno del divisore 11**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 / 2vale-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 e : .
Usi tipici di // e %:
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)
intopint→int(tranne/→float).- Se un operando è
float, il risultato èfloat:2 * 3.0 == 6.0.int ** intnegativo →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)
**(associativo a destra:2 ** 3 ** 2 == 2 ** 9)+x,-xunari (-2 ** 2 == -4)*,/,//,%+,-- confronti
<,<=,==,!=,>,>=,in,isnotandor
Esempio. 2 ** 3 ** 2 vale 512 (associativo a destra) e -2 ** 2 vale -4.
Nel dubbio, parentesi.
Conversioni
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 pariModulo math
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 predefiniteErrori tipici
- Usare
/quando serve un indice intero:lista[n / 2]→TypeErrorperché l'indice è float. Serven // 2. int(input())su un input non numerico →ValueError(gestione in Eccezioni in PythonEccezioni e traceback, eccezioni predefinite più comuni, try/except/else/finally, raise per segnalare errori, propagazione lungo le chiamate.Eccezioni in Python →).- Confrontare float con
==. - Scrivere
x^2per il quadrato:^è lo XOR bit a bit, il quadrato èx ** 2.
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 ) | 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 int (tranne / float); operando float float; int ** int negativo 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)3(tronca verso zero),int("42")42,float("3.5")3.5,str(42)'42'.round(2.675, 2)2.67,round(2.5)2,round(3.5)4(arrotondamento al pari).- Modulo
math:floor(-2.5)= -3,ceil(-2.5)= -2,trunc(-2.5)= -2,isclose,gcd.
Errori tipici
- Usare
/per indici interi (lista[n / 2]TypeError, serve//). int(input())su input non numericoValueError(Eccezioni in PythonEccezioni e traceback, eccezioni predefinite più comuni, try/except/else/finally, raise per segnalare errori, propagazione lungo le chiamate.Eccezioni in Python →).- Confrontare float con
==. - Usare
^per la potenza anziché**(^è lo XOR bit a bit).