Programmazione.html.it

  Home page

   Guida Base

   Guida al Java

   Guida al C

   Guida al C++

   Guida al Delphi

   Guida a VB .NET

   Guida al Visual Basic

   Guida al Python

   Guida al'UML

  Forum di discussione
  HTML.it




Guida a Python
  LEZIONE 6:  Tipi di dati e operatori


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 datoRappresentazione internaEsempi
Intero32 bit (tipo long del C)1200, -56, 0
Intero lungooltre 32 bit con crescita in base alle esigenze999999999L, -3232323L
Reale32 bit (tipo double del C)1.23 3.14e-10, 4.0E210
Booleanointero con 1=VERO e 0=FALSO (come in C)0, 1
Complessocoppia di numeri reali3+4j, 5.0+4.1j, 3j
Stringhelista 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:

OperatoreDescrizioneEsempi
+, -somma e sottrazione di interi10+12, 5-1
*, /moltiplicazione e divisione10*12, 10/2
%resto della divisione10%3=1, 5.3%2.5=0.3
<<, >>shift bit a bit a sinistra e destra24<<1=48, 10>>1=5

Operatori booleani:

OperatoreDescrizioneEsempi
or, andor e and logicix or y, z and k
notnegazione logica(not 0)=1
<, <=, >, >=, ==, <>, !=operatori di confronto(10==10)=1, ('a'!='a')=0
¦or bit a bitx ¦ y
&and bit a bitx & y
^or esclusivo bit a bitx ^ y
Operatori per le stringhe:

OperatoreDescrizione
+concatenamento('a'+'b')='ab'
*ripetizione('a'*3)='aaa'
s[i]indicizzazione dei caratteris='abc'
s[0]='a'
s[i:j]slicings='abc'
s[1:2]='b'
len(s)lunghezzas='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.

>>> s = 'http://www.html.it'
>>> print s[0]
'h'
>>> print s[4]
':'
>>> print s[17]
't'

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:

>>> s = 'http://www.html.it'
>>> print s[7:10]
'www'
>>> print s[7:]
'www.html.it'
>>> print s[:4]
'http'
>>> print s[11:-3]
'html'

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:

ParametroDescrizione
%sstringa
%csingolo carattere
%dnumero decimale
%uintero senza segno
%onumero in notazione ottale
%xnumero in notazione esadecimale
%gnumero reale in notazione normale
%enumero 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.








Torna a inizio pagina