Come abbiamo visto nella lezione precedente, in Python ci sono 4 tipi di dati numerici: interi (int
), razionali (float
), complessi (complex
), e booleani (bool
).
Abbiamo anche visto che è possibile usare l'interprete interattivo come una calcolatrice, e come convertire diversi tipi di dato. È inoltre possibile definire numeri interi usando la notazione binaria, ottale, ed esadecimale:
>>> 6 + 4*3
18
>>> 9 / 2 # la divisione tra due numeri interi restituisce un float
4.5
>>> 2j * 2j # moltiplicazione tra numeri complessi
(-4+0j)
>>> int(10.6) # conversione esplicita dal tipo float al tipo int
10
>>> float(20) # conversione esplicita dal tipo int al tipo float
20.0
>>> 0b11111111 # intero in notazione binaria (prefisso 0b)
255
>>> 0o377 # intero in notazione ottale (prefisso 0o)
255
>>> 0xFF # intero in notazione esadecimale (prefisso 0x)
255
Nota: In Python 2 esistevano due tipi di intero: int
e long
. In Python 3 questi due tipi sono stati unificati e il tipo int
di Python 3 è in grado di rappresentare numeri interi a grandezza arbitraria (così come il tipo long
di Python 2).
Operatori Aritmetici
Le operazioni sui tipi numerici sono le più classiche:
Operatore | Descrizione | Esempi |
---|---|---|
+ |
addizione | 10 + 12 → 22 |
– |
sottrazione | 5 - 1 → 4 |
* |
moltiplicazione | 10 * 12 → 120 |
/ |
divisione | 9 / 4 → 2.25 |
// |
divisione intera | 9 // 4 → 2 |
% |
modulo (resto della divisione) | 9 % 4 → 1 |
Nota: In Python 2 la divisione tra due int
ritornava un int
, in Python 3 ritorna un float
. In Python 2 è possibile ottenere lo stesso comportamento di Python 3 aggiungendo all'inizio del programma la riga from __future__ import division
.
Operatori di Confronto
Python supporta anche operatori di confronto, che restituiscono True
o False
:
Operatore | Descrizione | Esempi |
---|---|---|
== |
uguale a | 8 == 8 → True 3 == 5 → False |
!= |
diverso da | 3 != 5 → True 8 != 8 → False |
< |
minore di | 3 < 5 → True 5 < 3 → False |
<= |
minore o uguale a | 3 <= 5 → True 8 <= 8 → True |
> |
maggiore di | 5 > 3 → True 3 > 5 → False |
>= |
maggiore o uguale a | 5 >= 3 → True 8 >= 8 → True |
Operatori Booleani
In Python esistono anche gli operatori booleani and
, or
, e not
:
Operatore | Descrizione |
---|---|
and |
Ritorna True se entrambi gli operandi sono veri, altrimenti False |
or |
Ritorna True se almeno uno degli operandi è vero, altrimenti False |
not |
Ritorna False se l'operando è vero, True se l'operando è falso |
In Python ogni oggetto è o vero (numeri diversi da 0
, la costante True
, o contenitori che contengono almeno un elemento) o falso (ovvero il numero 0
, le costanti False
e None
, contenitori vuoti). È possibile verificare se un oggetto è vero o falso usando bool(oggetto)
.
Così come avviene in altri linguaggi di programmazione, anche in Python gli operatori and
e or
funzionano in modo che, se il primo operando è sufficiente a determinare il risultato, il secondo non viene valutato. Inoltre, entrambi gli operatori ritornano sempre uno dei due operandi.
Operatori Binari
Esistono poi gli operatori binari (o bitwise) che permettono di lavorare al livello dei singoli bit e sono utili in particolari circostanze:
Operatore | Descrizione |
---|---|
x << n |
esegue uno shift a sinistra di n posizioni dei bit di x |
x >> n |
esegue uno shift a destra di n posizioni dei bit di x |
x & y |
esegue un and tra i bit di x e di y |
x | y |
esegue un or tra i bit di x e di y |
x ^ y |
esegue un or esclusivo tra i bit di x e di y |
~x |
inverte i bit di x |