Python possiede tutti i classici tipi di dati, comuni al linguaggio C (dal quale è nato) e a molti altri linguaggi. Per chiarezza riassumo i tipi di dati
nella seguente tabella:
Tipo di dato
Rappresentazione interna
Esempi
Intero
32 bit (tipo long del C)
1200, -56, 0
Intero lungo
oltre 32 bit con crescita in base alle esigenze
999999999L, -3232323L
Reale
32 bit (tipo double del C)
1.23 3.14e-10, 4.0E210
Booleano
intero con 1=VERO e 0=FALSO (come in C)
0, 1
Complesso
coppia di numeri reali
3+4j, 5.0+4.1j, 3j
Stringhe
lista di caratteri
'stefano', "l'acqua"
È interessante notare come non ci sia limite ad un numero intero, purchè sia seguito
da un carattere "L" o "l", in base al valore python alloca la memoria necessaria.
Quando si usa una stringa è possibile racchiudere il suo valore indifferentemente con il carattere «"» oppure «'».
Questo permette di superare facilmente il problema dell'utilizzo dei suddetti caratteri nel valore stesso della stringa. Ricordo comunque che è possibile
forzare l'inserimento di ognuno dei due apici semplicemente raddopiandoli.
Oltre a questi semplici tipi di dati, python offre anche strutture dati complesse implementate in modo nativo ("built-in types" come si dice ufficialmente),
questo offre al programmatore strumenti potenti senza cercare librerie da terze parti.
In particolare mi riferisco a liste, dizionari, tuple e files; tutte strutture di cui vi parlero' nei prossimi capitoli.
Numerosi sono anche gli operatori che riassumo brevemente nelle tabelle seguenti:
Operatori sul tipo intero:
Operatore
Descrizione
Esempi
+, -
somma e sottrazione di interi
10+12, 5-1
*, /
moltiplicazione e divisione
10*12, 10/2
%
resto della divisione
10%3=1, 5.3%2.5=0.3
<<, >>
shift bit a bit a sinistra e destra
24<<1=48, 10>>1=5
Operatori booleani:
Operatore
Descrizione
Esempi
or, and
or e and logici
x or y, z and k
not
negazione logica
(not 0)=1
<, <=, >, >=, ==, <>, !=
operatori di confronto
(10==10)=1, ('a'!='a')=0
¦
or bit a bit
x ¦ y
&
and bit a bit
x & y
^
or esclusivo bit a bit
x ^ y
Operatori per le stringhe:
Operatore
Descrizione
+
concatenamento
('a'+'b')='ab'
*
ripetizione
('a'*3)='aaa'
s[i]
indicizzazione dei caratteri
s='abc' s[0]='a'
s[i:j]
slicing
s='abc' s[1:2]='b'
len(s)
lunghezza
s='abc' len(s)=3
%
formattazione di stringhe
('ciao %s' % 'stefano')='ciao stefano'
Nell'ultima tabella ho introdotto qualche concetto che merita un chiarimento.
Le stringhe in python sono delle liste di caratteri (più precisamente si tratta del tipo "lista" di cui parlero'
nei prossimi capitoli). Per questo è possibile prelevare i caratteri attraverso il loro indice, tenendo presente che si parte sempre da 0.
Ancora più interessante è la possibilità di prelevare sottostringhe utilizzando la tecnica di "slicing" (affettare).
Tale tecnica permette di tagliare una parte della lista indicando l'indice di partenza e l'indice finale.
È necessario specificare che verra' prelevata la stringa partendo dal carattere indicato dall'indice iniziale incluso,
fino all'indice finale escluso.
Inoltre omettendo uno dei due indici è possibile indicare a python di andare fino in fondo alla stringa.
Infine, è possibile indicare nell' indice finale un numero negativo,
in questo caso python conterà i caratteri a ritroso.
Vediamo qualche esempio:
L'operatore % permette di sostituire in una stringa dei parametri prefissati con il valore contenuto dentro a delle variabili, esattamente come
avviene nella istruzione printf del C. Facciamo subito qualche esempio complesso per capire il funzionamento:
>>> nome = 'stefano'
>>> eta = 29
>>> risultato = "%s ha %d anni" % (nome, eta)
>>> print risultato
'stefano ha 29 anni'
Nelle prime due righe ho creato una variabile stringa e una numerica.
Nella stringa "%s ha %d anni" ho inserito due parametri:
%s : parametro di tipo stringa
%d : parametro di tipo numerico
Ora voglio sostituire questi due parametri con i valori delle variabili "nome" ed "eta".
Questo si può realizzare con una sola istruzione mediante l'operatore %.
Fate attenzione alle parentesi che racchiudono nome ed eta, esse sono necessarie poiché l'operatore %
utilizza una tupla (struttura dati che vedremo in seguito), quindi io ho creato una tupla composta dal nome e l'eta'.
Esistono anche altri tipi di parametri, i principali dei quali sono riassunti in questa tabella (per chi conosce il C rimando al comando printf):
Operatori per le stringhe:
Parametro
Descrizione
%s
stringa
%c
singolo carattere
%d
numero decimale
%u
intero senza segno
%o
numero in notazione ottale
%x
numero in notazione esadecimale
%g
numero reale in notazione normale
%e
numero reale in notazione scientifica
Python offre altre funzioni per gestire le stringhe, esse sono tutte raggruppate nel modulo denominato " string ".
Non avendo ancora parlato di moduli, introdurro' queste funzioni in seguito.