Prendiamo come esempio iniziale il calcolo dell'area di un triangolo la cui base è 4 e l'altezza è 3. È a tutti noto che in questo caso la formula cercata e` 4*3/2. Un semplice programma Python (usato da calcolatrice è quindi
>>> print 4*3/2 # stampa il risultato 6il cui ovvio risultato è 6. Possiamo notare che quando utilizziamo il simbolo # tutto ciò che segue fino al termine della riga viene ignorato da Python. Questo permette di introdurre commenti che possono aumentare la leggibilità del nostro codice, e che è ottima norma usare con profusione! Possiamo utilizzare l'ambiente come calcolatrice, utilizzando addizione +, sottrazione -, moltiplicazione * e divisione /, anche se bisogna che facciamo attenzione al tipo di dati che stiamo utilizzando. Nell'esempio precedente abbiamo usato numeri interi, per cui se la base e l'altezza sono entrambe 1 abbiamo
>>> print 1*1/2 0che non è ciò che probabilmente ci aspettavamo. Essendo l'area un numero reale, dovremmo utilizzare numeri reali, oppure convertirli utilizzando espicitamente il termine float (floating point = numeri con la virgola). Da cui sono equivalenti le seguenti forme
>>> print float(1)*1/2 0.5 >>> print 1*1/float(2) 0.5 >>> print 1*1/2.0 0.5 >>> print 1.0*1/2 0.5ma non
>>> print float(1*1/2) 0.0in quanto la conversione a numero float è stata fatta dopo il calcolo.
Adesso che abbiamo fatto un po' di confusione, cerchiamo di riordinare le idee. In python ci sono quattro tipi numerici distinti definiti:
In Python esistono già definiti i numeri complessi, che come noto possiedono una parte reale ed una parte immaginaria, ciascuna simile ad un numero in virgola mobile. Per estrarre queste parti da un numero complesso z, si usa z.real e z.imag.
Python supporta pienamente gli aritmetici misti: quando un operatore binario aritmetico ha operandi di differente tipo numerico, l'operando con il tipo ``narrower'' (con meno possibilità) è convertito a quello dell'altro, e l'ordine è il seguente intero semplice intero long virgola mobile complesso. Le funzioni (costruttori) int(), long(), float() e complex() possono essere utilizzate per produrre numeri di un tipo specifico, o trasformarli in un tipospecifico.
Di particolare importanza è anche la priorità degli operatori, ossia l'ordine nel quale vengono eseguite le operazioni scritte in Python. Tutti i tipi numerici (eccetto i complessi) supportano le seguenti operazioni ordinate per priorità ascendente
In generale, non ci basterà un linguaggio che può soltanto gestire costanti (altrimenti sarebbe sufficiente la calcolatrice vinta nell'uovo di Pasqua), ma vorremo avere la possibilità di gestire delle variabili. Tornando al caso precedente, ossia se siamo ancora interesati a calcolare l'area di un qualsiasi triangolo probabilmente ci converrà utilizzare dei nomi che contengono valori (le variabili appunto) al posto di numeri precisi. In altri termini servono per associare il contenuto (che può variare), ad una etichetta (nome) che serve per ricordare che cosa contiene. Per esempio se vogliamo utilizzare sequenze di DNA, un modo possibile è quello di utilizzare la variabile dna
>>> dna='gatatttgtaaa' >>> print dna gatatttgtaaa >>> dna='aaaatttgggggggggg' >>> print dna aaaatttggggggggggSe quindi vogliamo calcolare l'area di un triangolo generico, possiamo scrivere in file triangle.py, che contiene
''' file triangle.py ''' # comment base=input('base= ') # input altezza=input('altezza= ') # input area=base*altezza/2.0 # computation print "area = ",area # outputed eseguirlo da linea di comando con python triangle.py, oppure dall'interprete con »> execfile('triangle.py'). Il semplice programma precedente, mette in evidenza come adesso possiamo calcolare l'area di un qualsiasi triangolo, senza ogni volta digitare la formula, inoltre ovviamente non avrebbe senso invertire il calcolo dell'area con quello dell'inizializzazione delle variabili. L'ordine delle operazioni identifica quindi quello che indichiamo come flusso dell'algoritmo o del programma.