MANUALE DEL LINGUAGGIO DI
PROGRAMMAZIONE IN PYTHON
Realizzato da NiktorTheNat
Iniziato il giorno 8 febbraio 2010 - aggiornato al giorno 27 marzo 2010 (ancora
in aggiornamento)
email autore: [email protected]
sito internet: http://sites.google.com/site/niktorthenat
canale youtube: http://www.youtube.com/user/NiktorTheNat
sito nuovo (al momento sperimentale): http://www.tanadelpitone.tk/
forum: http://tanadelpitone.forumup.it/
PREMESSA
I linguaggi di programmazione, sono la lingua con la quale noi umani comunichiamo ai
computer. Se parliamo ad un cittadino di Berlino in italiano, questi non ci capirà, così
dovremo parlare a lui in tedesco per farci capire. Allo stesso modo, se scriviamo nel
computer frasi in italiano per dire alla macchina di eseguire certi compiti, la macchina
non farà nulla, ecco che dovremo parlare il suo linguaggio. Un computer è in grado di
interpretare numerosi linguaggi di programmazione; possiamo parlargli in C++, in Ruby,
in Python, in Basic, in Pascal, e così via per altre decine di linguaggi.
E' chiaro che per capire il linguaggio di programmazione che noi decidiamo di usare, il
computer deve essere fornito dell'interprete, ovvero di un software che gli permette di
interpretare le nostre istruzioni. Solo in questo modo sarà in grado di capire ed eseguire
le istruzioni che gli vogliamo impartire.
Inoltre, bisogna precisare, che un computer, nonostante sia utile ad agevolarci numerosi
compiti nella vita di tutti i giorni, di fatto, è una scatola vuota, priva di intelligenza,
dentro la quale c'è solo molto spazio per immagazzinare istruzioni.
Conoscere un linguaggio di programmazione, pur senza mettere in pratica tale
insegnamento, ci permette di intuire come funzioni un dato programma o perchè si sia
verificato un determinato evento al computer. Questo perchè la conoscenza della base su
cui si fonda un programma, ci illumina sulle possibili cause di un malfunzionamento o di
un evento inaspettato del computer. Un profano, aprendo una pagina WEB, e vedendo
apparire un errore invece della pagina richiesta, potrebbe pensare che il computer non
funziona bene, che ha problemi di collegamento di rete o che il sito non è più online;
mentre un programmatore, in relazione all'errore che sarà apparso a video, spesso, sarà
in grado di intuire i motivi del malfunzionamento, provvedendo pertanto a ripristinare la
macchina o a prendere coscienza che la pagina non si aprirà comunque per quel
determinato motivo che ha interpretato dall'errore segnalato.
Praticare invece la programmazione, cioè istruire un computer mediante uno dei tanti
linguaggi di programmazione esistenti, ci permette di creare da soli e per le nostre
esigenze un determinato programma. Prendiamo ad esempio un programma di
videoscrittura, quando lo comprate, avrete un programma che oltre a scrivere testi,
permette di disegnare tabelle, di inserire immagini, di correggere l'ortografia, di dividere
la pagina in colonne, e chissà quante altre migliaia di funzioni sarà in grado di eseguire.
Essere in grado di programmare permette di crearsi un proprio programma di
videoscrittura che, in base alle nostre esigenze, magari sarà solo in grado di scrivere un
testo e correggere l'ortografia, perchè tutto il resto delle funzioni non ci serve. Questo è
straordinario, sia perchè avremo un programma più snello, inteso in termini di
occupazione di spazio sul disco, inoltre perchè sarà privo di tutte quelle funzioni che a
noi non servono e che peraltro non abbiamo mai utilizzato.
Il linguaggio di programmazione che prenderemo in esame in questo libro, sarà il
Python, che tra tutti i linguaggi esistenti è uno di quelli più semplici da apprendere ed
allo stesso tempo tra i più potenti per creare davvero applicazioni di ogni tipo.
Il linguaggio Python è nato alla fine degli anni 80, ideato e realizzato dall'olandese Guido
Van Rossum.
Questo testo non ha la pretesa di insegnare a programmare in Python, ma sicuramente
vuole, e può essere, da ausilio a chiunque, soprattutto profano della materia, intenda
voler provare a programmare un computer, ricevendo semplici e dettagliate indicazioni,
che lo porteranno dall'installazione dell'interprete Python (cioè all'installazione di quel
programma che permetterà al vostro computer di capire le istruzioni in Python che gli
darete), fino all'apprendimento delle istruzioni e comandi di base di questo linguaggio,
che gli permetteranno di realizzare semplici ma affascinanti programmi.
Al termine della lettura di questo manuale, chi vorrà continuare lo studio, si troverà
decisamente avvantaggiato nello studiare ulteriori manuali o testi che trattano questo
meraviglioso linguaggio di programmazione.
NOTE SULL'AUTORE
C'è poco da dire sul sottoscritto, che da semplice utente di personal computer fin dagli
anni '80, ha sempre "curiosato" nell'affascinante mondo della programmazione dei
computer. Lo studio, autodidatta, di tutti questi anni, iniziato quando gli unici testi,
pressochè introvabili, erano prettamente in lingua inglese, lo ha portato ad un faticoso
apprendimento della programmazione dei computer, e tutt'oggi, nonostante la larga
diffusione di testi anche in lingua italiana, nonchè il proliferare di programmatori di ogni
genere di linguaggio, ha evidenziato la mancanza di testi e manuali per chi, ignaro di
nozioni matematiche e ragionamenti logici, voglia comunque provare ad imparare a
programmare un computer.
CAPITOLO I
Cosa ci serve e dove trovarlo.
Per poter programmare in Python, prima di tutto dobbiamo procurarci l'interprete, cioè
quel programma che installato sul proprio computer, permetterà al PC di capire le
istruzioni nel linguaggio Python che gli daremo.
L'interprete Python è distribuito su licenza libera, questo significa che è possibile
prelevarlo gratuitamente ed è altresì possibile utilizzarlo per creare programmi
gratuitamente. (Maggiori dettagli si possono trovare sul sito ufficiale www.python.org, in
inglese, nonchè sul sito della comunità italiana Python all'indirizzo www.python.it,
ovviamente in italiano)
Per utenti Windows:
Per fare il download (cioè per scaricare e memorizzare sul computer) il Python,
dobbiamo collegarci al sito http://www.python.org/download/releases/
Qui troveremo l'elenco delle versioni Python che sono state create. Chiaramente l'ultima
avrà un numero progressivo maggiore, quindi la versione Python 3.1.1 (che al momento
della scrittura di questo libro è l'ultima rilasciata) sarà più aggiornata della versione
Python 2.6.4, tuttavia, quella che dobbiamo scaricare è proprio la versione 2.6.4, in
quanto ho avuto modo di testarla maggiormente ed è sicuramente stabile, senza che
avvengano errori inaspettati.
Quindi premete il tasto sinistro del mouse sul link Python 2.6.4 (october 25, 2009)
Si aprirà una nuova pagina Internet.
Scorretela verso il basso fino a trovare il seguente link: Windows x86 MSI Installer
(2.6.4) (sig)
Premete il tasto sinistro del mouse su quel link. (Il file che scaricheremo sarà di 14 mb
circa)
In base al browser che state utilizzando, verrà aperta una finestra o verrà comunque
indicato che è possibile scaricare il file. Voi date l'OK o comunque accettate. Così
facendo, l'interprete del Python verrà scaricato sul vostro computer nella cartella da voi
scelta.
Ora installiamo Python.
Andate nella cartella (o directory) dove avete salvato il file appena scaricato da Internet.
Fate doppio click sul file, con il tasto sinistro del mouse, per avviare il suo processo di
installazione.
Si aprirà la seguente finestra:
Qui premete il tasto sinistro del mouse sul pulsante Esegui
Si aprirà la seguente finestra:
In automatico, viene selezionata l'opzione Install for all user, che significa "installa per
tutti gli utenti".
Come sapete, Windows permette la creazione di più utenti su uno stesso computer. Se è
il caso vostro, e volete installare Python sono per voi, allora selezionate l'opzione Install
just for me, mentre se volete installare Python in modo da essere utilizzato da qualsiasi
utente del computer, allora lasciate l'opzione Install for all user.
Ora premete il tasto sinistro del mouse sul pulsante Next che significa "prossimo", cioè
ci permette di andare avanti nell'installazione.
Ora verrà visualizzata questa finestra:
Qui viene deciso in quale cartella installare Python. Io consiglio di lasciare invariata
l'impostazione decisa dal programma, ma se volete, potete variare la cartella di
installazione.
Al termine, premete il tasto sinistro del mouse sul pulsante Next.
Apparirà la seguente finestra:
Qui vi vengono mostrati i file aggiuntivi che verranno installati con Python. Sono tutti
necessari per poter programmare, quindi consiglio di lasciarli invariati, ma nulla vieta di
noln far installare una o più di questi file aggiuntivi.
Al termine, premete il tasto sinistro del mouse sul pulsante Next.
Apparirà la seguente finestra:
Ora Python si sta installando sul computer. I trattini di colore verde indicano l'avanzare
dell'installazione.
Aspettate che termini l'installazione, quindi apparirà la seguente finestra:
Qui viene mostrato un messaggio in inglese di ringraziamenti, quindi potete premere il
tasto sinistro del mouse sul pulsante Finish (che singnifica "fine") per completare
l'installazione.
Ora troverete l'interprete Python installato sul vostro computer.
Per avviare Python, premete il tasto sinistro del mouse su IDLE (Python GUI).
Si aprirà l'interprete Python che apparirà così:
Questa è la finestra dell'interprete Python. I tre segni >>> indicano che lì potranno
essere scritte le istruzioni del linguaggio di programmazione Python.
Il significato del termine "interprete Python" lo capite meglio ora. Qui in questa finestra
scriverete le istruzioni nel linguaggio di programmazione Python, lui le interpreterà,
ovvero le convertirà in linguaggio macchina, in modo da farle capire al computer, ed
infine eseguirà quello che voi gli avete indicato di fare.
Ora che abbiamo avviato l'interprete di Python , possiamo già dargli delle semplici
istruzioni per eseguire facilmente dei calcoli.
Proviamo a scrivere un'operazione matematica, ovvero la somma di 2 più 2
Per scriverla nell'interprete di Python, si scrive:
2+2
sembra una stupidaggine, eppure è tutto qui, si scrive esattamente l'operazione che si
vuol far eseguire.
Ecco come vi apparirà sul vostro video:
Come potete notare, abbiamo scritto, dopo i tre segni >>> l'operazione 2+2. Questa
operazione, a noi, darebbe 4 come risultato. Vediamo se anche Python è in grado di
eseguire i calcoli aritmetici.
Premetto che vi potrò sembrare molto ripetitivo, nella spiegazione delle
istruzioni da scrivere, ma all'inizio è meglio che lo sia, soprattutto per chi non
ha mai programmato un personal computer (PC equivale a Personal Computer),
poi, man mano che andrete avanti a leggere questo documento, vedrete che
darò per scontato che avete capito alcuni passaggi e/o alcune istruzioni.
Torniamo al nostro problema. Abbiamo scritto nell'interprete Python l'operazione 2+2,
ora premiamo sulla tastiera il tasto INVIO (su alcune tastiere potrebbe esserci il tasto
ENTER al posto del tasto INVIO).
Cosa succede adesso?
La scritta 2+2 viene letta da Python, che la interpreta, cioè la traduce nella sua lingua, e
capisce che c'è una somma da fare, ovvero 2 + 2.
Python a questo punto esegue la somma, ottiene il risultato 4 e ce lo mostra sul video.
Difatti, quando avete premuto il tasto INVIO (o ENTER) sulla tastiera, avrete avuto
questo risultato:
Il risultato della somma, cioè il 4, viene visualizzato nella riga sotto l'operazione 2+2.
Da questo capiamo che dove ci sono i tre segni >>> siamo noi che diciamo a Python
cosa fare, mentre dove non ci sono i segni >>> è Python che ci risponde.
Nell'esempio sopra, infatti, la somma 2+2 l'abbiamo scritta noi, il risultato 4, lo ha
scritto Python, quindi appaiono nuovamente i tre segni >>> ad indicarci che Python è
pronto per eseguire un nuovo compito, una nuova istruzione.
Quindi Python è una calcolatrice? Si, è anche una calcolatrice.
Vediamo, prima di tutto, quali sono gli operatori matematici di base che noi utilizziamo
per eseguire i calcoli, così come ci hanno insegnato a scuola.
Qui sotto elencherò i quattro principali operatori matematici con un'operazione di
esempio:
CALCOLO
SEGNO
CALCOLO
SEGNO
MATEMATICO
USATO COME MATEMATICO USATO COME
TIPO DI
COME LO
OPERATORE
COME LO
OPERATORE
NOTE
OPERAZIONE
ESEGUIREMMO
MATEMATICO
VUOLE
MATEMATICO
NOI
DA NOI
PYTHON
DA PYTHON
2+2
12 - 2
12 x 2
12 : 2
SOMMA
SOTTRAZIONE
+
-
MOLTIPLICAZIONE x
DIVISIONE
:
2+2
12 - 2
12 * 2
12 / 2
+
La somma che
sappiamo scrivere noi
è la stessa che
possiamo scrive con
Python
-
La sottrazione che
sappiamo scrivere noi
è la stessa che
possiamo scrivere
con Python
*
Per le moltiplicazioni,
noi di solito usiamo il
segno x (per). In
Python questo segno
non si può utilizzare,
ma va utilizzato
l'asterisco, cioè *
(L'asterisco si ottiene
premendo sulla
tastiera il tasto delle
maiuscole e
contemporaneamente
il tasto + che si trova
a fianco del tasto
INVIO)
/
Per le divisioni, noi di
solito usiamo il segno
: (due punti). Il
Python questo segno
non si può utilizzare,
ma va utilizzata la
sbarra, cioè / (La
sbarra si ottiene
premendo sulla
tastiera il tasto per le
maiuscole e
contemporaneamente
il tasto 7 che si trova
in alto al centro della
tastiera)
3
2
ELEVAMENTO A
POTENZA
3 alla
seconda
3**2
**
Questo esempio
matematico prevede
l'elevamento a
potenza del numero
3 alla seconda. In
Python si scrive il
numero da elevare a
potenza, quindi si
mettono due
asterischi ed infine si
mettere quanto va
elevato a potenza
Vediamo, in pratica, come eseguire esempi di operazioni aritmetiche scritte per Python.
Abbiamo già visto come sommare due numeri, ora vediamo una SOTTRAZIONE.
Facciamo eseguire a Python l'operazione 12-2.
Scrivetela nell'interprete Python:
La sottrazione, come abbiamo già visto, va scritta così come la conosciamo noi. Ora
premiamo il tasto INVIO sulla tastiera per far eseguire il calcolo a Python.
Ecco il risultato:
Come potete notare, il risultato dell'operazione è 10. Anche questa volta Python ha
eseguito correttamente l'operazione.
Ora proviamo a scrivere una MOLTIPLICAZIONE. Facciamo eseguire a Python 12x2.
Scrivetela nell'interprete Python:
Come avrete notato, non abbiamo scritto 12x2 ma abbiamo scritto 12*2, infatti, come
già scpiegato prima, al posto del segno x si mette l'asterisco, per eseguire una
moltiplicazione.
Ora premete il tasto INVIO sulla tatstiera per far eseguire l'operazione a Python. Ecco il
risultato:
Anche qui, Python ha eseguito l'operazione correttamente. Ora andiamo avanti a vedere
come eseguire una DIVISIONE.
Facciamo eseguire a Python 12:2
Scrivetela nell'interprete Python:
Come avrete notato, non abbiamo scritto 12:2 ma abbiamo scritto 12/2, infatti, come
già spiegato prima, al posto del segno : si mette / per eseguire una divisione.
Ora premete il tasto INVIO sulla tastiera per far eseguire l'operazione a Python. Ecco il
risultato:
Python non sbaglia un colpo, ha eseguito correttamente anche questa operazione. Ora
vediamo l'ELEVAMENTO A POTENZA.
3
Facciamo eseguire a Python 5
Scrivetela nell'interprete Python:
Come avrete notato, per scrivere 5 elevato a potenza 3, abbiamo scritto 5**3
Ora premete il tasto INVIO sulla tastiera per avere il risultato. Ecco il risultato:
Perfetto! Anche con l'elevamento a potenza, Python ha eseguito correttamente
l'operazione.
Ma possiamo far eseguire più calcoli su una stessa riga e usare le parentesi?
La risposta è si. Possiamo eseguire calcoli di questo tipo, ad esempio:
((10+5)+5)*2-10
Come in aritmetica, anche Python esegue prima le operazioni tra parentesi, quindi prima
calcolerà 10+5, che dà come risultato 15, poi somma il 15 al 5, che fa 20. Poi fa 20
per 2, che fà 40 ed infine sottrae 10, ottenendo come risultato dell'espressione 30.
Premete il tasto INVIO sulla tastiera per vedere il risultato:
Come avevamo previsto, il risultato dell'espressione è 30.
Ma ora addentriamoci nella programmazione vera e propria, in quanto, fino ad ora,
abbiamo solo visto Python funzionare come una calcolatrice. E' ora di iniziare a capire
come funziona la programmazione e quali sono le sue regole ed istruzioni.
Scrivete nell'interprete Python a=10, così:
Quello che abbiamo appena fatto, è stato quello di creare ed utilizzare una variabile. La
variabile che abbiamo appena creato si chiama a. Ma che cos'è una variabile?
Come si intuisce dalla parola, variabile significa qualcosa che non è mai la stessa, ma
può variare.
Mi piace utilizzare come esempio quello delle scatole, cioè considerare una variabile
come una scatola.
Prendendo il nostro esempio, potremmo dire che abbiamo creato una scatola (appunto
una variabile) e l'abbiamo chiamata a.
Dentro questa scatola, gli abbiamo messo il numero 10, infatti avevamo scritto a=10.
Ecco rappresentato in grafica cosa intendo:
Ora premete in tasto INVIO sulla tastiera per eseguire l'istruzione.
Come avrete notato, non è successo nulla. Python non ha dato alcun risultato, alcun
messaggio, ma ha mostrato i tre segni >>> pronto a ricevere una nuova istruzione.
Noi sappiamo che Python ha assegnato alla variabile a il numero 10. Allora vediamo
come verificare che questo sia avvenuto. Scriviamo semplicemente a.
Ora premete sulla tastiera in tasto INVIO. Ecco cosa succede:
Python ci risponde 10, cioè scrive il contenuto della variabile a.
E ora scopriamo perchè viene chiamata variabile. Perchè possiamo variare il suo
contenuto.
Scriviamo a=20 e poi premiamo il tasto INVIO sulla tastiera. Ecco cosa succede:
Apparentemente non è successo nulla, in realtà alla variabile a è stato assegnato un
nuovo valore, cioè un nuovo numero, ovvero il numero 20. Questo significa che ora la
scatola a (cioè la variabile a) non contiene più il numero 10, ma questo numero è stato
sostituito dal numero 20.
Ora scrivete a e premete il tasto INVIO sulla tastiera.
Ecco che Python ci risponde 20, cioè ci mostra il contenuto della variabile a, che ora è
appunto 20.
Quindi il contenuto è variato, ecco perchè si chiama variabile.
Le variabili possono essere di diversi tipi. Quella del nostro esempio è una variabile
numerica e in Python viene chiamata variabile di tipo integer, e può contenere solo
numeri.
Ci sono anche le variabili alfanumeriche, che in Python vengono chiamate di tipo string.
Una variabile string, come detto, è di tipo alfanumerico. Se ci avete fatto caso, la parola
alfanumerico è composta da due parole, ovvero "alfa" e "numerico". "Alfa" va intesa
come abbreviazione di "alfabetico", quindi una variabile string può contenere sia lettere
dell'alfabeto che numeri.
Le variabile di tipo string vanno scritte tra virgolette o doppie virgolette.
Se ad esempio vogliamo creare la variabile a di tipo string, assegnandogli la parola ciao,
dovremo scrivere a="ciao"
Ora premete il tasto INVIO sulla tastiera.
Come al solito, apparentemente non è successo nulla, ma in realtà nella scatola a (cioè
nella variabile a) è stata inserita la parola ciao.
Provate a scrivere a e poi premete il tasto INVIO sulla tastiera.
Python risponderà così:
Quindi Python ha risposto scrivendo ciao, cioè scrivendo il contenuto della variabile a.
Riepilogando:
a=23
in questo caso a è una variabile integer (cioè una variabile numerica) e
contiene il numero 23
a="ciao"
in questo caso a è una variabile string (cioè una variabile alfanumerica) e
contiene la parola ciao
Ma vediamo un'altro tipo di variabile. Vediamo la variabile di tipo float.
Abbiamo visto prima, che a=10, ad esempio, assegna alla variabile a il numero 10 e
questa variabile viene interpretata da Python come integer, cioè come numero, ma la
definizione esatta è che Python la interpreta, cioè la riconosce, come numero intero.
Se assegniamo ad una variabile un numero con la virgola, in Python la virgola la
dobbiamo scrivere con il punto.
Quindi per scrivere 10,5 dobbiamo scrivere 10.5
Una variabile che contiene un numero con la virgola, non sarà più considerata da Python
come integer, ma come float. Quindi le variabili float contengono numeri con i
decimali.
Facciamo un esempio. Scriviamo a=10.5 e poi premiamo il tasto INVIO sulla tastiera.
Python avrà così memorizzato nella variabile a il numero 10.5 e quindi la variabile a
sarà di tipo float.
Ora scriviamo a e premiamo il tasto INVIO sulla tastiera.
Python ci risponde con 10.5 ovvero con il contenuto della variabile a.
Quindi, riepilogando, se scriviamo:
a=27
viene dichiarata una variabile numerica di tipo integer
a=27.5
viene dichiarata una variabile numerica di tipo float
a="ciao" viene dichiarata una variabile alfanumerica di tipo string
Per conoscere il tipo di una variabile, possiamo usare la seguente istruzione:
type(nome variabile)
Se scriviamo l'istruzione type(a) e premiamo il tasto INVIO sulla tastiera, avremo
questo risultato:
Python ha risposto <type 'float'> informandoci che la variabile a è di tipo float.
Proviamo a scrivere a="ciao" quindi premiamo il tasto INVIO sulla tastiera:
Ora se scriviamo l'istruzione type(a) avremo com risultato:
La risposta data da Python è stata <type 'str'> dove 'str' significa 'string'; infatti la
variabile a contiene un dato alfanumerico.
Per completezza, se scriviamo l'istruzione a=15 e premiamo il tasto INVIO sulla
tastiera, poi scriviamo l'istruzione type(a) allora avremo come risultato <type 'int'>
dove 'int' significa 'integer'.
All'inizio di questo manuale, abbiamo visto che Python funziona anche come una
calcolatrice, permettendo operazioni tra numeri. Ora vedremo che le variabili,
soprattutto quelle numeriche integer e float, possono essere utilizzate per eseguire
delle operazioni.
Abbiamo già visto che se scriviamo in Python 12+2 ci verrà dato il risultato 14.
Allo stesso modo, possiamo assegnare il numero 12 alla variabile a e il numero 2 alla
variabile b, quindi possiamo sommare a+b.
Ecco l'esempio qui sotto:
Quando abbiamo scritto a+b è come se avessimo scritto 12+2 in quanto a contiene il
numero 12 e b il numero 2.
Quindi Python è in grado di eseguire tutte le operazioni già viste per i numeri, anche con
le variabili numeriche.
Ecco un'altro esempio di operazioni che comprende numeri e variabili insieme:
Nell'esempio sopra abbiamo assegnato alla variabile a il numero 5. Alla variabile b
abbiamo assegnato il numero 10. Poi abbiamo scritto un'espressione. La prima
operazione che verrà compiuta sarà quella tra parentesi, cioè (a*2). Dato che a
contiene il numero 5, allora (a*2) è come se avessimo scritto (5*2). Il risultato è 10.
Ora questo risultato va sommato a b, che si trova fuori dalle parentesi. Dato che b
contiene il numero 10 allora la somma da fare è 10+10. Ecco che il risultato è 20.
Per concludere questa lunga, ma spero, dettagliata ed esaustiva spiegazione sui numeri
e sulle variabili, non ci rimane che sapere che possiamo chiamare le variabili con
qualsiasi nome ci venga in mente. Chiaramente il nome di una variabile deve essere
composta da una parola sola, ma può contenere anche numeri e qualche carattere
speciale. Sotto elenco alcuni esempi di nomi di variabili:
a=10
alfa=10
numero=10
scala1=10
nome="marco"
mio_nome="marco"
mio-nome="marco"
b=5.3
costo=1223.48
Una delle prime e basilari istruzioni di Python è l'istruzione print. La parola, che tradotta
dall'inglese significa stampa, serve appunto a stampare un qualcosa sul video.
(Giusto per fare un po' di storia, i primi computer non avevano monito, ma solo
stampanti, e i risultati dei calcoli li davano su fogli stampati, perchè appunto non
esistevano i monitor, o meglio, non erano ancora utilizzati. L'uso di questo termine
deriva quindi da lì, quando esisteva già la programmazione dei computer ma non l'uso
del monitor)
Quindi dicevamo che l'istruzione print serve a "stampare", o per meglio dire, a far
visualizzare qualcosa sul monitor.
Quello che abbiamo fatto fino ad ora con le variabili, è giusto, ma quando
programmiamo, dobbiamo usare l'istruzione print per mostrare un risultato sul monitor.
Facendo l'esempio di una variabile a che contiene il numero 15, per mostrare il
contenuto della variabile a sul video, usavamo scrivere solo a, così come mostrato
nell'esempio:
Questo perchè abbiamo usato l'interprete Python in modalità diretta, cioè noi scriviamo
un'istruzione e lui ci dà subito il risultato. Quando però creiamo un programma, noi
scriviamo decine o centinaia di istruzioni di fila e poi avviamo il programma. In quel caso
non possiamo scrivere solo il nome della variabile, da sola, per mostrare il suo risultato,
ma dobbiamo usare l'istruzione print.
Riprendendo l'esempio sopra, dovremmo quindi scrivere:
L'istruzione print possiamo utilizzarla per mostrare a video il contenuto di una variabile,
sia numerica che alfanumerica, oppure per far scrivere direttamente un numero o una
parola o frase. Inoltre la possiamo usare per mostrare a video il risultato di un calcolo.
Ecco alcuni esempi per definire l'utilizzo di questa istruzione:
print a
scriverà il contenuto della variabile a
print 10
scriverà il numero 10
print 12+4
scriverà 16 che è il risultato di 12+4
print "ciao"
scriverà ciao
print "ciao"+"ciao" scriverà ciaociao
Vediamo ora alcune cose che possiamo fare con le stringhe, cioè con i valori
alfanumerici.
Già nell'ultima istruzione qui sopra, abbiamo visto che è possibile sommare due stringhe.
Infatti l'istruzione:
print "ciao"+"amico"
scriverà sullo schermo "ciaoamico"
Pertanto il segno + serve a concatenare, cioè a unire due o più stringhe.
Anche se avessimo una variabile a che contiene la parola "ciao" e la variabile b che
contiene la parola "amico", se le sommiamo, avremo lo stesso risultato dell'esempio
sopra:
Volendo, possiamo utilizzare anche il segno della moltiplicazione, che sappiamo è
rappresentato dall'asterisco.
Se scriviamo l'istruzione:
print "ciao" * 3
avremo come risultato
ciaociaociao
cioè avremo la parola ciao moltiplicata 3 volte.
E' chiaro che al posto della parola ciao, possiamo mettere una variabile stringa.
Altra cosa importante da sapere sulle stringhe, è che queste sono più complesse e
complete di quello che sembrano.
La parola "ciao", ad esempio, non è considerata da Python solo una parola, ma anche
una serie di lettere, cioè c-i-a-o che insieme formano la parola ciao.
Detta così, capisco che non è una spiegazione chiara, quindi facciamo subito un esempio
pratico.
Prima di tutto utilizziamo una nuova istruzione che ci permette di conoscere di quante
lettere è composta una parola.
L'istruzione in questione è len(). Questa parola, cioè len, è il diminutivo di length, che
tradotta dall'inglese, significa, lunghezza. Questa istruzione infatti ci permette di
conoscere la lunghezza di una parola o frase.
Prendiamo ad esempio la parola "ciao". Per sapere di quante lettere è composta, si
scrive: print len("ciao")
E' importante mettere la parola o frase da verificare, tra le parentesi tonde.
L'istruzione print mostrerà a video l'esito dell'istruzione len("ciao") che conterà,
appunto, la lunghezza della parola "ciao".
Come possiamo notare, Python ci risponde con il numero 4, che è il numero di lettere
che compongono la parola "ciao".
Se volete, potete provare con altre parole o frasi più complesse. Ad esempio, di quante
lettere è composta la parola "supercalifragilistichespiralidoso"?
Chiediamolo a Python:
Ecco che Python ci risponde che è composta da 33 lettere.
Mettiamo nella variabile a la frase "oggi è una bella giornata" e poi usiamo l'istruzione
len() per conoscere di quante lettere è composta questa frase.
Quello che dobbiamo scrivere sarà:
Ecco che Python risponde che la frase "oggi è una bella giornata" è composta da 25
lettere, spazi compresi.
Con l'istruzione sopra, abbiamo potuto anche imparare che l'istruzione len() può fornire
anche la lunghezza delle variabili stringa.
Le stringhe, per Python, sono un'insieme di lettere, come abbiamo già detto, e con
l'istruzione qui sotto, ne capiremo il perchè.
Inseriamo nella variabile a la stringa "scrivania", quindi scriviamo la seguente istruzione:
Con a="scrivania" abbiamo inserito nella variabile a la parola "scrivania".
Con l'istruzione a[2] abbiamo detto a Python di scrivere la lettera, alla posizione 2, della
parola "scrivania".
Se ora premiamo il tasto INVIO sulla tastiera, avremo questo risultato:
Python ci ha risposto con la lettera r. Ma, se contiamo le lettere della parola "scrivania",
vediamo che la lettera r si trova alla posizione 3.
Per il nostro modo di contare è così, ma Python conta partendo da 0, quindi se contiamo
come lui, avremo la lettera r alla posizione 2.
Qui sotto vi mostro come Python conta le lettere:
S C R I V A N I A
0 1 2 3 4 5 6 7 8
Ora che abbiamo capito questo, sappiamo che se chiediamo a Python di mostrarci la
lettera, al 7° posto, nella parola "scrivania", lui dovrà mostrarci la lettera i. Proviamo.
Perfetto. Abbiamo capito come funziona. Dobbiamo ricordarci che Python conta partendo
da 0 e non partendo da 1.
Ma abbiamo imparato prima, che programmando, cioè realizzando programmi, per
mostrare un risultato a video, dobbiamo usare l'istruzione print, quindi facciamo lo
stesso con questa istruzione, così ci abituiamo.
Facciamoci dire da Python quale lettera si trova al 4° posto della parola "scrivania".
Come al solito, Python non sbaglia. Ma prendendo sempre l'esempio di questa parola,
continuiamo a vedere come funziona questo modo di manipolare le stringhe.
Possiamo, ad esempio, farci mostrare una parola dal suo inizio fino ad un certo punto. Se
vogliamo farci mostrare la parola "scrivania" partendo dalla lettera iniziale s fino alla
lettera r, dobbiamo usare i due punti e scrivere così:
L'istruzione dell'esempio sopra è: print a[:3]
In questa istruzione abbiamo aggiunto i due punti, prima del numero 3, e questi due
punti stanno a significare: "Python, conta dall'inizio della parola fino alla 3^ lettera,
esclusa". Infatti la terza lettera della parola "scrivania" (seguendo il modo di contare di
Python, cioè partendo da 0) sarebbe la lettera i, ma lui la esclude.
Allo stesso modo, se scriviamo l'istruzione print a[:7] non scriverà la parola "scrivani",
perchè la 7^ lettera non la conta, quindi scriverà solo "scrivan", ecco l'esempio qui
sotto:
Il segno dei due punti, possiamo usarlo anche inserendolo dopo il numero. Ad esempio,
l'istruzione print a[3:] significa "Python, conta dalla 3^ lettera fino alla fine della
parola". Ecco l'esempio:
Avrete notato, che in questo caso, Python ha seguito alla lettera il nostro comando, cioè
ha scritto la parola partendo dalla 3^ lettera, senza escluderla dal conteggio, quindi si è
comportato regolarmente e ha scritto "ivania", dove la prima i è la 3^ lettera della
parola "scrivania" (sempre tenendo conto che Python conta partendo da 0)
Ora vediamo un'altra possibile combinazione da utilizzare con questa istruzione. Provate
a scrivere print a[::2] in questo modo:
Se ora premete il tasto INVIO sulla tastiera, avrete questo risultato:
Cos'è successo? Cosa significa quella parola "srvna"? E' la parola "scrivania" saltando
una lettera per volta.
ScRiVaNiA
Vi ho scritto la parola qui sopra, alternando le maiuscole alle minuscole, per farvi vedere
che Python ha scritto solo quelle maiuscole, saltandone una alla volta.
Ma come si interpreta quell'istruzione? Noi abbiamo detto a Python: print a[::2]
Questo significa: "Python, scrivi la parola inserita nella variabile a, saltando di 2 caratteri
alla volta, ma non contare il 2° carattere", quindi significa "salta di un carattere", visto
che il secondo non lo deve contare. E' come se gli avessimo detto print a[::1], ma dato
che Python ragiona a modo suo, dobbiamo scrivere print a[::2] per dirgli di saltare un
carattere, mentre se vogliamo fargli saltare due caratteri, dovremo scrivere print
a[::3].
Vediamo cosa succede facendogli saltare due caratteri, scrivendo però print a[::3]
Python ha scritto solo "sin", vediamo qui sotto, in modo schematico cosa ha fatto:
ScrIvaNia
In effetti Python ha scritto la S poi ha saltato due lettere quindi ha scritto I poi ha saltato
altre due lettere e ha scritto N infine ha saltato altre due lettere, ma la parola è
terminata, quindi si è fermato.
Infine possiamo utilizzare il segno "meno" per far scrivere le ultime lettere di una parola.
Se la variabile a contiene ancora "scrivania", se scriviamo:
print a[-1]
verrà scritto:
ascrivan
cioè l'ultima lettera della parola "scrivania".
Se scriviamo:
print a[-2]
verrà scritto:
i
cioè la penultima lettera della parola "scrivania".
Se invece usiamo anche il segno dei duepunti alla fine, così:
print a[-2:]
verrà scritto:
ia
cioè le ultime due lettere della parola "scrivania".
Se invece usiamo anche il segno dei duepunti, all'inizio, così:
print a[:-2]
verrà scritto:
scrivan
cioè tutta la parola "scrivania" senza le ultime due lettere.
All'interno delle stringhe, possiamo anche inserire caratteri speciali per eseguire alcune
azioni. Ad esempio se vogliamo che in una stringa, delle parole vengano messe a capo,
ovvero su una nuova riga, utilizzeremo il carattere \n
\n significa "new line", cioè "nuova riga".
Provate ad assegnare alla variabile a la stringa "esempio di scrittura su due righe"
Se scriviamo l'istruzione print a Python scriverà a video "esempio di scrittura su due
righe" tutto sulla stessa riga.
Ora proviamo ad assegnare alla variabile a questo testo "esempio di scrittura \n su
due righe"
Ora provate a riscrivere print a. Ecco cosa succede:
La frase "esempio di scrittura su due righe" viene scritta su due righe.
\n non viene scritto, ma serve a dire a Python di andare su una nuova riga.
Un'altro carattere speciale da poter utilizzare con le stringhe è \t che significa
"tabulatore". Fare una tabulazione significa spostarsi verso destra di uno spazio
predefinito. La tabulazione è utile per elencare del testo.
Facciamo un esempio. Se devo scrivere un elenco di nomi con i relativi numeri di
telefono, devo scrivere:
nomi
telefoni
marco 331112233
francesco 333122112
giovanni 341213421
Come potete notare anche voi, i dati ci sono tutti, ma sono brutti da vedersi, così. Allora
dovremmo scriverli mettendo degli spazi giusti tra il nome e il numero di telefono, così:
nomi
marco
francesco
giovanni
telefoni
331112233
333122112
341213421
Si nota subito la differenza, e cioè che ordinati, i dati, si leggono meglio. Per non stare a
scrivere tanti spazi tra un nome ed un numero di telefono, useremo i tabulatori, che
sposteranno il cursore di un tot di spazi predefinito, e sempre uguale, in modo da
permetterci di elencare meglio i nostri dati.
Facciamo l'esempio scrivendo con Python il modo sbagliato e poi il modo con i tabulatori.
Il modo sbagliato:
Notate che abbiamo messo \n per andare a capo.
Ecco l'istruzione che abbiamo scritto sopra, facendovi notare dove ho messo il comando
"\n" per andare a capo:
print "nomi
telefoni\nmarco 331112233\nfrancesco 333122112\ngiovanni
341213421"
In pratica, dopo ogni numero di telefono, ho messo \n per dire a Python di andare a
capo, cioè di andare su una nuova riga.
Ora vediamo il modo migliore per avere lo stesso risultato, ma ordinato, grazie ai
tabulatori:
Vi riscrivo l'istruzione qui sotto per farvi notare in neretto dove ho aggiunto i tabulatori
e in blu dove ho aggiunto il ritorno a capo:
print
"nomi\ttelefoni\nmarco\t331112233\nfrancesco\t333122112\ngiovanni\t341213421"
Però, effettivamente, non è ancora tutto ordinato bene, perchè ho spiegato che il
comando \t si sposta a destra di un tabulatore alla volta, cioè di un tot di spazi
predefiniti alla volta.
Vi faccio capire meglio sfruttando un editor di testi, cioè un wordprocessor, come
AbiWord, come funzionano i tabulatori e come possiamo correggere il nostro errore.
Sotto ho riportato l'immagine di AbiWord con i tabulatori inseriti:
Potete notare i tabulatori inseriti nel righello allo spazio 1,5 a 3 a 4,5 e a 6.
Se scrivo i nomi del nostro esempio usando i tabulatori avrò questo risultato:
Vedete che non sono in ordine? Questo succede perchè se dò una tabulazione tra il nome
e il numero di telefono, lui si sposta verso destra di una tabulazione, ma i nomi
francesco e giovanni, superano la prima tabulazione, perciò quando gli dò la
tabulazione saltano a quella successiva, lasciando in disordine l'elenco.
Quale soluzione posso utilizzare? Semplice, dò due tabulazioni tra il nome marco e il suo
numero di telefono, in modo da far saltare il numero di telefono alla seconda
tabulazione, e quindi ordinarsi con gli altri numeri di telefono. Lo stesso farò con le
parole nomi e telefoni, in modo da far saltare la parola telefoni di due tabulazioni.
Questo ci fa capire che anche nel nostro esempio di Python dobbiamo dare due
tabulazioni a quelle parole che sono ordinate male.
Ecco l'istruzione esatta:
Qui sotto vi riporto l'istruzione con evidenziato in neretto le tabulazioni (notate quelle
doppie) e in blu i ritorni a capo:
print
"nomi\t\ttelefoni\nmarco\t\t331112233\nfrancesco\t333122112\ngiovanni\t341213421"
Certo che scrivere un'istruzione così non è proprio comprensibile, però fà benissimo il
suo lavoro.
Ma cosa succede se ho una frase con la scritta \n o \t che voglio che venga scritta?
Facciamo un esempio. Ho la necessità di scrivere una riga dove dico che ho in vendita,
nel mio negozio, un prodotto che ha il codice c24\n32s. Se scrivo l'istruzione con Python:
print "E' in vendita un oggetto con il seguente codice: c24\n32s"
Succede questo:
Python interpreta \n nel codice del nostro prodotto c24\n32s come un comando di
ritorno a capo, ma non lo è, è proprio un nostro codice di prodotto.
Per fargli scrivere il codice in modo giusto, senza interpretarlo come ritorno a capo,
userò fuori dalla stringa, la lettera r in questo modo:
print r"E' in vendita un oggetto con il seguente codice: c24\n32s"
Notate la lettera r dopo la parola print, attaccata alle virgolette.
Ecco che in questo modo viene scritto il nostro codice senza essere interpretato come
comando di Python.
Un'altro modo per scrivere un testo ordinato a piacere nostro, è quello di aprire e
chiudere le virgolette tre volte.
Ecco un esempio:
print """
Questa è la prima riga
questa è la seconda
questa è la terza
"""
Quando scriverete print """ e andrete a capo, Python non eseguirà l'istruzione print,
perchè non avete ancora chiuso le tre virgolette, quindi vi fa andare a capo e scrivere il
testo che volete, nel modo che desiderate. Solo quando chiuderete tre volte le virgolette,
allora Python eseguirà l'istruzione.
Fino ad ora abbiamo utilizzato la modalità immediata di Python, cioè noi abbiamo dato
delle istruzioni a Python e Python ci ha dato immediatamente il risultato o ha eseguito
immediatamente il compito. Ma programmare, significa scrivere una serie più o meno
lunga di istruzioni, che Python eseguirà in sequenza.
La sequenza di istruzioni, vanno scritte in un editor di testo. Cos'è un editor di testo? E'
un programma che ci permette di scrivere documenti.
Su Linux potete usare, ad esempio, VIM, mentre su Windows potete usare, ad esempio,
Notepad (il blocco notes di Windows). Per Mac non ho un editor di testo da suggerire,
perchè questo manuale si basa sulle mie esperienze personali, e non avendo mai
utilizzato un Mac, non saprei quale software suggerire.
Python, comunque, integra un suo editor di testo, molto comodo e funzionale.
Dopo aver avviato Python, come già sapete, vi trovate la Shell:
Ora premete il tasto sinistro del mouse sul menu a discesa File, apparirà un elenco di
opzioni:
Premete il tasto sinistro del mouse sull'opzione New Window, che tradotto dall'inglese
all'italiano significa "Nuova Finestra".
(La scritta Ctrl+N che trovate vicino alla scritta New Window, significa che potete
premere la combinazione di tasti CTRL (che si trova in basso a sinistra sulla vostra
tastiera) e contemporaneamente il tasto N sulla tastiera, per aprire una nuova finestra)
Apparirà così la seguente finestra:
La scritta Untitled, che appare sulla barra del titolo, significa "senza titolo". Infatti non
abbiamo ancora scritto nessun programma e pertanto non abbiamo ancora dato un titolo
al nostro progetto. Il menu a discesa, con le opzioni File, Edit, Format, ecc... sono quelli
classici delle applicazioni comuni.
Scriviamo ora il nostro primo programma, utilizzando l'editor di Python.
Avviatelo come abbiamo visto appena sopra, e scriviamo il seguente programma:
Il listato del programma (listato va inteso come lista di istruzioni in codice Python) è il
seguente:
a=12
b=11
print a+b
Cosa farà questo programma?
Nella prima istruzione a=12 diciamo a Python di mettere nella variabile a il numero 12
Nella seconda istruzione b=11 diciamo a Python di mettere nella variabile b il numero
11
Nella terza istruzione print a+b diciamo a Python di sommare il contenuto della
variabile a al contenuto della variabile b
Dato che la variabile a contiene il numero 12 e la variabile b contiene il numero 11,
allora la somma delle due variabili avrà come risultato il numero 23.
Pertanto l'istruzione print a+b scriverà sul video il numero 23.
Ma come si fà ad avviare il programma?
Bisogna premere il tasto sinistro del mouse sul menu a discesa Run (che significa
"correre" ma in programmazione significa "avvia"). Apparirà il seguente elenco di
opzioni:
Ora premete il tasto sinistro del mouse sull'opzione Run Module che a questo punto
prende il significato di "Avvia Modulo", cioè avvia il programma.
Apparirà la seguente finestra:
Nella barra del titolo di questa finestra c'è scritto "Save Before Run" che significa
"Salva prima di avviare". Inoltre il testo all'interno della finestra dice "Source Must be
Saved" che significa "Il sorgente deve essere salvato". Ed ancora "OK to Save?" che
significa "OK al salvataggio?".
Insomma, penso che Python si sia fatto capire. Ci sta chiedendo di salvare, cioè,
memorizzare il nostro programma sul disco. Ma ci permette di accettare o meno questa
soluzione, premendo su OK o su Annulla.
Noi premiamo su OK, per salvare il nostro programma sul disco.
Apparirà così la seguente finestra:
In questa finestra viene mostrata la cartella dove verrà salvata di default (default
significa "predefinito"), cioè la cartella predefinita dove verrà salvato il file, e cioè la
cartella Python26 (se avete installato Python versione 2.6).
Salviamo qui il nostro file, in quanto è qui che Python cercherà i programmi creati con
questo linguaggio.
Nella casella Nome file, scriviamo il nome che vogliamo dare al nostro programma. Per
il nostro esempio, usiamo il nome mioprogramma (scritto tutto attaccato).
Nella casella Salva come, lasciate tutto invariato. Ora premete il tasto sinistro del
mouse sul pulsante Salva.
Python, a questo punto, inizierà a leggere le istruzioni del programma che abbiamo
scritto, e come abbiamo già esaminato, dopo aver messo nella variabile a il valore 12 e
nella variabile b il valore 11, eseguirà la somma a+b facendo scrivere il risultato sullo
schermo grazie all'istruzione print. Ecco che allora Python aprirà la sua SHELL per
mostrarci il risultato di questo programma, visualizzando il numero 23, cioè il risultato
della somma.
Quando realizziamo un programma in Python, lo scriviamo con un editor di testi, quindi
lo salviamo e poi la avviamo. A questo punto Python lo elabora e mostra l'esito del
programma nella sua SHELL.
E' importante sapere che tutti i programmi che realizzeremo con Python avranno
estensione .py
L'estensione è quella parte del nome del programma che sta alla fine del nome del
programma, dopo il punto.
Ecco un esempio di nomi di file con le loro estensioni:
documento.doc
è un file di testo, scritto con un word processor, e la sua
estensione è .doc
programma.zip
è un file compresso utilizzando WinZIP o simili, e la sua
estensione è .zip
foto.jpg
è un file grafico, realizzato con un editor foto o grafico, e la sua
estensione è .jpg
mioprogramma.py
è un file contenente un programma di Python e la sua estensione
è .py
L'istruzione che impareremo ora, ci permetterà di far interagire gli utenti con Python. In
pratica, avremo la possibilità di fornire informazioni a Python, dopo che avremo avviato il
programma, e lui le utilizzerà per le sue esigenze.
L'istruzione che vediamo ora, è l'istruzione input.
Scriviamo nella SHELL di Python la seguente istruzione:
a=input("Scrivi un numero")
Ora premiamo il tasto INVIO sulla tastiera, ecco cosa succede:
Python scrive la frase che abbiamo messo all'interno delle parentesi e virgolette, poi fa
lampeggiare il cursore alla fine della frase, rimanendo in attesa.
Infatti, l'istruzione che abbiamo scritto, ha questo significato: Python, scrivi la frase
"Scrivi un numero" sullo schermo e fà che sia una domanda, cioè sia un input. Poi la
risposta mettila nella variabile a.
Provate ora a scrivere un numero. Ad esempio, scriviamo il numero 15:
Ora premete il tasto INVIO sulla tastiera:
Apparentemente non è successo nulla. In realtà è successo quello che abbiamo spiegato
prima, e cioè che il numero 15 è stato inserito nella variabile a.
Per verificare, provate ora a scrivere l'istruzione:
print a
Ora premete il tasto INVIO sulla tastiera. Ecco che Python ci darà il contenuto della
variabile a che è appunto 15.
L'istruzione input serve ad acquisire informazioni dall'utente, mettendo l'informazione
acquisita, nella variabile a cui è legata.
Però, l'istruzione input, si occupa di acquisire dall'utente, solo informazioni numeriche,
cioè possiamo fornire a Python solo dei numeri. Per dare a Python anche del testo,
dobbiamo utilizzare un'altro tipo di istruzione input, che vedremo dopo questa.
Ora che sappiamo anche come scrivere un programma con l'editor di testo, utilizziamo le
istruzioni imparate fino ad ora per realizzare un semplice programma che somma due
numeri forniti dall'utente.
Prima di tutto apriamo l'editor di testo premendo sul menu a discesa File e poi
sull'opzione New Window:
Scriviamo nell'editor le seguenti istruzioni:
Prima di eseguire il programma cerchiamo di capire cosa succederà.
Il computer, che è una "scatola ignorante", non sa cosa vogliamo fare noi, quindi inizia a
leggere le istruzioni che gli abbiamo dato, partendo dalla prima riga.
Nella prima riga c'è l'istruzione:
primo=input("Dammi il primo numero da sommare")
Quindi Python, inserirà nella variabile primo, il numero che l'utente scriverà alla
domanda "Dammi il primo numero da sommare"
Poi Python passa a leggere la seconda riga, dove c'è l'istruzione:
secondo=input("Dammi il secondo numero da sommare")
Quindi Python, inserirà nella variabile secondo, il numero che l'utente scriverà alla
domanda "Dammi il secondo numero da sommare"
Ora Python passa alla terza riga, dove c'è l'istruzione:
print "La somma dei due numeri è ", primo+secondo
Qui capisce, dall'istruzione print, che deve mostrare sullo schermo la frase "La somma
dei due numeri è " e aggiungere la somma delle variabili primo+secondo. La virgola
serve a concatenare la stringa "La somma dei due numeri è " al risultato della somma
delle variabili primo+secondo
Avviamo ora il programma, come abbiamo già imparato.
Lo rivediamo nel dettaglio, per l'ultima volta, poi, nel seguito di questo manuale, quando
verrà detto di avviare il programma, si tralascerà di spiegare in dettaglio come fare.
Premete il tasto sinistro del mouse sul menu a discesa Run e poi sull'opzione Run
Module.
Si aprirà la finestra che ci chiede di salvare su disco il nostro programma.
Premiamo sul pulsante OK per salvare il programma. Si aprirà così la finestra che ci
permette di scegliere quale nome vogliamo dargli e in quale cartella salvarlo.
Come potete notare nell'immagine sopra, ho dato come nome al mio programma
"somma" e ho lasciato invariata la cartella dove salvare il file. Ora premete il tasto
sinistro del mouse sul pulsante Salva.
Si aprirà la seguente finestra:
Questo è un avviso che ci dà Python. Non è un errore, ma solo un avviso. In pratica ci
informa che alcuni caratteri utilizzati nel nostro programma non sono stati decodificati. I
caratteri ai quali si riferisce, sono i caratteri accentati.
Ad esempio, nella stringa che abbiamo scritto, "La somma dei due numeri è ", c'è la è
che è una lettera accentata.
Vedremo più avanti la soluzione per eliminare questo messaggio, che ripeto, è solo un
avviso e non un errore, infatti, quando premerete sul pulsante OK, il programma verrà
eseguito regolarmente.
Python scrive sullo schermo "Dammi il primo numero da sommare", quindi rimane in
attesa che l'utente scriva un numero. Scriviamo il numero 30 e premiamo il tasto INVIO
sulla tastiera:
Ecco che Python scrive sullo schermo l'altro messaggio "Dammi il secondo numero da
sommare". Nel frattempo, ha già inserito nella variabile primo il numero 30.
Ora scriviamo il numero 12 e premiamo il tasto INVIO sulla tastiera:
Python inserirà il numero 12 nella variabile secondo, poi farà apparire l'ultimo
messaggio "La somma dei due numeri è " con il risultato della somma delle variabili
primo+secondo, cioè 42 (che è la somma di 30+12).
Abbiamo già detto, che l'istruzione input, serve per acquisire dall'utente dei valori
numerici.
Per acquisire dall'utente delle stringhe, cioè valori alfanumerici, dobbiamo utilizzare una
nuova istruzione che si chiama raw_input.
Vediamo come funziona. Nella SHELL di Python, scriviamo l'istruzione:
a=input_raw("Dimmi il tuo nome")
Premendo il tasto INVIO sulla tastiera, Python scriverà sullo schermo "Dimmi il tuo
nome", quindi rimarrà in attesa che l'utente scriva qualcosa.
Ora scriviamo il nostro nome e poi premiamo il tasto INVIO sulla tastiera:
Nell'esempio sopra, il nome Marco verrà inserito nella variabile a, quindi se ora
scriviamo l'istruzione:
print a
vedremo che Python scriverà sullo schermo il nome Marco, che era, appunto, contenuto
all'interno della variabile a.
Per riepilogare, l'istruzione input si occupa di ricevere dati numerici dall'utente, mentre
raw_input si occupa di ricevere dati alfanumerici dall'utente.
Con le istruzioni imparate fino ad ora, proviamo a realizzare un programma che fa
sommare due numeri.
Aprite l'editor di Python per scrivere il programma. (Da ora non spiego più nel dettaglio
come fare)
Questo è il listato dell'istruzione:
nome=raw_input("Come ti chiami ")
a=input("Dammi il primo numero ")
b=input("Dammi il secondo numero ")
print "Ciao ",nome," la somma di ",a," + ",b," è ",a+b
Esaminiamola riga per riga, prima di eseguire il programma.
Nella prima riga, troviamo:
nome=raw_input("Come ti chiami ")
Questa istruzione, scriverà nella variabile nome, quello che l'utente risponderà alla
domanda "Coma ti chiami ".
Abbiamo utilizzato l'istruzione raw_input in quanto ci aspettiamo dall'utente una
risposta alfanumerica.
Notate che dopo la parola "chiami ", ho lasciato uno spazio prima di chiudere le
virgolette. Ho fatto questo per far sì che la risposta dell'utente non venga attaccata alla
domanda, risultando brutta graficamente.
Nella seconda riga troviamo l'istruzione:
a=input("Dammi il primo numero ")
Questa istruzione, scriverà nella variabile a, quello che l'utente risponderà alla domanda
"Dammi il primo numero ".
Abbiamo utilizzato l'istruzione input in quanto ci aspettiamo dall'utente una risposta
numerica.
Anche qui ho lasciato uno spazio, prima di chiudere le virgolette, per separare la
domanda dalla risposta.
Nella terza riga troviamo l'istruzione:
b=input("Dammi il secondo numero ")
Questa istruzione scriverà, nella variabile b, quello che l'utente risponderà alla domanda
"Dammi il secondo numero ".
Anche qui, abbiamo utilizzato l'istruzione input in quanto ci aspettiamo dall'utente una
risposta numerica.
Infine troviamo l'istruzione:
print "Ciao ",nome," la somma di ",a," + ",b," è ",a+b
Questa istruzione print, scriverà sullo schermo un messaggio.
Supponiamo che abbiamo risposto alla domanda "Come ti chiami" con il nome Marco e
alla domanda "Dammi il primo numero" con il numero 10 e alla domanda "Dammi il
secondo numero" con il numero 4.
L'istruzione print, scriverà i testi che trovano chiusi tra virgolette, che sono "Ciao " e
"la somma di ", mentre le variabili le abbiamo scritte senza chiuderle tra virgolette,
separandole tra loro o dalle stringhe (che sono le frasi tra virgolette) con una virgola.
L'ultima istruzione a+b scriverà la somma delle variabili a+b, che nel nostro caso darà
come risultato 14.
Eseguiamo il programma, come avete già imparato:
Ecco che ci viene posta la prima domanda:
Scriviamo il nostro nome, e poi premiamo il tasto INVIO sulla tastiera:
Ci verrà posta la seconda domanda:
Qui rispondiamo scrivendo un numero e poi premiamo il tasto INVIO:
Ecco che ci viene posta l'ultima domanda. Rispondiamo scrivendo un numero e poi
premiamo il tasto INVIO:
Alla fine, Python, mediante l'istruzione print, scriverà sullo schermo un saluto al nome
che abbiamo dato, quindi ci informerà della somma che ha eseguito e del suo risultato.
Vediamo ora una nuova funzione, utilizzabile nell'istruzione print, che ci sarà utile a
modificare l'ultima riga del programma proposto sopra.
Riscrivete l'ultima riga del programma proposto sopra, con questa riga:
print "Ciao %s la somma di %d + %d è %d" % (nome,a,b,a+b)
Ecco il listato modificato:
Ora eseguiamo il programma, rispondendo a tutte le domande, fino ad ottenere l'ultima
risposta:
Come potete notare, Python ha scritto la frase in modo corretto. Ma esaminiamo le
novità introdotte in questa istruzione Python, tenendo conto che anche la precedente
istruzione, non è sbagliata, ma è un'alternativa che dipende dalle nostre scelte.
Possiamo utilizzare sia un metodo che l'altro, è chiaro che quest'ultimo lo possiamo
ritenere più leggibile ed ordinato.
L'istruzione è:
print "Ciao %s la somma di %d + %d è %d" % (nome,a,b,a+b)
Abbiamo messo tra virgolette la frase "Ciao %s la somma di %d + %d è %d".
In pratica, abbiamo inserito al posto delle variabili, che dovranno essere ancora scritte,
le istruzioni %s e %d.
L'istruzione %s servirà a sostituire una stringa, cioè una variabile alfanumerica.
L'istruzione %d servirà a sostituire un numero, cioè una variabile numerica.
Quindi le istruzioni %s e %d vanno considerate come dei segnaposto, dove saranno
sostituiti da una stringa o numero.
Per permettere questa sostituzione, bisognerà inserire, fuori dalle virgolette, il segno %,
e successivamente tra parentesi tonde, tutte le variabili che dovranno sostituire i
segnaposto, separate da una virgola.
Nel disegno sotto vediamo spiegato graficamente cosa intendo:
La
La
La
La
%s verrà sostituita dalla variabile nome
prima %d verrà sostituita dalla variabile a
seconda %d verrà sostituita dalla variabile b
terza %d verrà sostituita dal risultato della somma di a+b
Iniziamo ad addentrarci nelle istruzioni che fanno ragionare il computer. In particolare,
l'istruzione che vedremo ora, è tra le più affascinanti, in quanto ci permette davvero di
far pensare il computer, di fargli prendere delle decisioni, di fare delle scelte autonome,
quindi di ragionare.
L'istruzione si chiama if.
If dall'inglese in italiano significa se. Ma facciamo subito un esempio pratico che ci
permette di capire meglio il significato e la potenza di questo tipo di istruzione, nonchè ci
permette di vedere qual'è la sua sintassi, cioè come va scritta.
Apriamo l'editor di Python e scriviamo il seguente programma:
a=10
if a==5:
print "La variabile a contiene il numero 5"
Ora avviamo il programma. Ecco cosa succede:
Non è successo assolutamente nulla. Ma vediamo il perchè.
La prima istruzione del programma è:
a=10
Questa istruzione assegna alla variabile a il valore 10. Quindi, da questo momento, la
variabile a contiene il numero 10.
La seconda istruzione è:
if a==5:
Abbiamo detto prima, che la parola if, significa se. Pertanto, questa istruzione và letta
così: "Se a è uguale a 5"
IMPORTANTE: Notate che per verificare se a è uguale a 5 abbiamo utilizzato il doppio
segno di uguale. Quando si fanno delle verifiche in queste istruzioni, va sempre usato il
doppio uguale e non il segno di uguale singolo. Quindi un segno di uguale serve ad
assegnare un qualcosa, mentre il doppio segno uguale serve a confrontare.
IMPORTANTE: La riga dell'istruzione if termina sempre con un segno di duepunti.
Abbiamo detto che Python verifica se la variabile a è uguale a 5, dato che a non è
uguale a 5, allora esce dal suo ciclo. Quale ciclo, direte voi?
Python, quando trova un'istruzione if, se la condizione è vera, allora esegue le istruzioni
indentate sotto di lui. Le istruzioni indentate sono quelle istruzioni rientrate dal margine.
Esempio:
a=5
b=5
Entrambe le due istruzioni qui sono NON SONO indentate.
Esempio:
a=5
b=5
La seconda istruzione (b=5) è indentata, cioè è rientrata rispetto al margine sinistro.
Torniamo al nostro programma. Abbiamo esaminato l'istruzione if a==5:, ma non va
bene esaminarla così, da sola, perchè l'istruzione if è collegata strettamente alle sue
righe indentate, quindi dobbiamo leggere e prendere in esame l'istruzione:
if a==5:
print "La variabile a contiene il numero 5"
Rileggendo l'istruzione e ragionando come il computer, dobbiamo interpretare così
questa istruzione.
Se la variabile a è uguale al numero 5 (cioè se a contiene il numero 5) allora esegui le
istruzioni sotto di me che sono indentate. Le istruzioni indentate sono print "La
variabile a contiene il numero 5".
Ma la variabile a non contiene il numero 5, quindi Python non eseguirà l'istruzione print,
ma la salterà e passerà alla riga sotto. Sotto non c'è nessun'altra istruzione, quindi
Python non farà nulla. Ecco perchè quando abbiamo avviato il programma non è
successo nulla.
Riscriviamo il programma in questo modo:
a=5
if a==10:
print "La variabile a contiene il numero 10"
print "Programma finito"
Prima di avviare, proviamo a capire cosa succederà.
Nella variabile a verrà inserito il numero 5.
Poi l'istruzione if controllerà se la variabile a è uguale al numero 10, cioè se la variabile
a contiene il numero 10.
Se la variabile a contiene il numero 10, allora verrà eseguita l'istruzione indentata, cioè
rientrata rispetto al margine, che è print "La variabile a contiene il numero 10"
Se la variabile a non contiene il numero 10, allora Python passerà alla prima riga che
trova attaccata al margine, cioè alla prima riga non indentata, che è print "Programma
finito"
Ma anche se la variabile a sarà uguale a 10, non solo verrà eseguita l'istruzione print
indentata, cioè print "La variabile a contiene il numero 10", ma Python passerà,
dopo di questa, alla riga sotto, ed eseguirà anche l'istruzione print "Programma
finito".
Insomma, nel nostro programma che abbiamo scritto sopra, dato che la variabile a
conterrà il numero 5 e non il numero 10, verrà eseguita solo l'istruzione print
"Programma finito".
Proviamo ad eseguirlo. Ecco il risultato:
Proviamo ora a modificare il programma, assegnando alla variabile a il numero 10.
Dato che la variabile a contiene il numero 10, quando verrà eseguita l'istruzione if,
Python controllerà se a è uguale a 10. Dato che la condizione è vera, cioè a è uguale a
10, allora verrà eseguita l'istruzione print "La variabile a contiene il numero 10",
poi Python passerà alla riga sotto ed eseguirà anche print "Programma finito".
Avviate il programma ed ecco il risultato:
Ora possiamo già creare programmi che abbiano un minimo di utilità, perchè siamo in
grado di far ragionare il computer grazie all'istruzione if.
Proviamo a creare un programma che riconosce i nostri parenti.
Supponiamo che noi abbiamo uno zio che si chiama "Pietro", un cugino che si chiama
"Marco", un nonno che si chiama "Antonio". Il programma che creeremo, verificherà il
nome dell'utente che si presenterà, e lo saluterà riconoscendolo come parente.
Ecco il listato del programma:
a=raw_input("Come ti chiami ? ")
if a=="Pietro":
print "Ciao zio"
if a=="Marco":
print "Ciao cugino"
if a=="Antonio":
print "Ciao nonno"
Ora eseguiamo il programma. Per prima cosa, ci verrà chiesto il nostro nome:
Rispondiamo dandogli il nome Antonio (N.B.: E' importante scrivere il nome con la A
maiuscola e il resto minuscolo, altrimenti Python non riconosce il nome. Vedremo più
avanti come fargli riconoscere il nome anche scrivendo in maiuscolo/minuscolo
differentemente)
Dopo che scriveremo il nome Antonio, premiamo il tasto INVIO e vediamo che risposta
ci dà:
Come vedete il programma ha riconosciuto Antonio e l'ha salutato chiamandolo nonno.
In effetti abbiamo impostato che Antonio è il nonno. Quindi il programma funziona
perfettamente.
Provate dandogli un nome diverso.
Ma come ha funzionato il programma? Abituiamoci a ragionare con il computer, ci
aiuterà a capire il giusto funzionamento e a riconoscere gli eventuali errori che
dovessimo commettere.
Il tipo di ragionamento che dovremo fare sarà di tipo logico, perchè seguirà una logica
elementare (ricordatevi sempre che il computer è una scatola vuota che non sa
assolutamente nulla di nulla).
Quindi, il listato del programma era:
a=raw_input("Come ti chiami ? ")
if a=="Pietro":
print "Ciao zio"
if a=="Marco":
print "Ciao cugino"
if a=="Antonio":
print "Ciao nonno"
Quando avviamo il programma, Python esegue la prima riga, cioè:
a=raw_input("Come ti chiami ? ")
Questa istruzione creerà un'input, e aspetterà una risposta da parte dell'utente. Dopo
che l'utente avrà scritto qualcosa e poi premerà il tasto INVIO, la variabile a conterrà la
parola che l'utente avrà scritto.
Noi avevamo scritto Antonio, quindi la variabile a conterrà la parola Antonio.
Poi viene eseguita la seconda e terza riga, che sono strettamente collegate:
if a=="Pietro":
print "Ciao zio"
Con questa istruzione verifica se la variabile a contiene la parola Pietro. La variabile a
non contiene Pietro, ma Antonio, quindi non eseguirà le istruzioni collegate a quell'if,
ma salterà alla prossima istruzione if.
La prossima istruzione if è la seguente:
if a=="Marco":
print "Ciao cugino"
Con questa istruzione verifica se la variabile a contiene la parola Marco. La variabile
a non contiene Marco, ma Antonio, quindi anche in questo caso non eseguirà le
istruzioni collegate a quell'if, ma salterà alla prossima istruzione if.
La prossima istruzione if è la seguente:
if a=="Antonio":
print "Ciao nonno"
Con questa istruzione verifica se la variabile a contiene la parola Antonio. In questo
caso la variabile a contiene la parola Antonio, quindi la condizione è vera, e pertanto
verranno eseguite le sue istruzioni collegate.
Le sue istruzioni collegate sono print "Ciao nonno", quindi verrà scritto Ciao nonno,
che è quello che è successo al nostro programma quando lo abbiamo eseguito.
Ma il programma che abbiamo scritto sopra non è corretto. Pur funzionando
perfettamente, non è il modo migliore di programmare. Per migliorare la scrittura del
codice Python, e quindi migliorare il suo funzionamento, si usa l'istruzione elif, che non è
altro che l'unione contratta di due istruzioni, che sono else e if. Else significa
altrimenti mentre if significa se, quindi elif significa altrimenti se.
Riscriviamo il programma usando l'istruzione elif:
a=raw_input("Come ti chiami ? ")
if a=="Pietro":
print "Ciao zio"
elif a=="Marco":
print "Ciao cugino"
elif a=="Antonio":
print "Ciao nonno"
Usando solo le istruzioni if, ognuna di loro sarà indipendente, mentre usando le istruzioni
elif, ogni istruzione elif sarà strettamente collegata alla prima istruzione if e farà parte
di un unico blocco di codice Python.
Chiaramente il risultato del programma sarà uguale a quello eseguito prima.
Vediamo l'ultima istruzione utilizzabile con l'if. L'istruzione utilizzabile è else che
significa altrimenti.
Questa istruzione permette di far eseguire a Python delle istruzioni solo nel caso nessuna
condizione precedente sia vera. Per capire il suo funzionamento, riscriviamo il
programma precedente, aggiungendo un'istruzione else.
a=raw_input("Come ti chiami ? ")
if a=="Pietro":
print "Ciao zio"
elif a=="Marco":
print "Ciao cugino"
elif a=="Antonio":
print "Ciao nonno"
else:
print "Non ti conosco"
Se eseguiamo il programma e alla domanda "Come ti chiami ?" rispondiamo Antonio, ci
verrà risposto Ciao nonno, perchè la variabile a conterrà la parola Antonio e quando
verrà eseguita la condizione if a=="Antonio": saranno eseguite le sue istruzioni
indentate, cioè print "Ciao nonno".
Ma se proviamo a rieseguire il programma e alla domanda "Come ti chiami ?"
rispondiamo Giuseppe, Python verificherà le tre condizioni che trova, cioè se a contiene
Pietro oppure Marco oppure Antonio.
Non trovando nessuna di queste condizioni vera, perchè il nome che abbiamo dato è
Giuseppe, passerà alla fine all'istruzione else che significa altrimenti, e questo significa:
altrimenti, se nessuna condizione è vera, esegui le istruzioni indentate di else, che sono
print "Non ti conosco".
L'istruzione if, abbiamo visto che ci permette di eseguire delle condizioni e di far
eseguire una o più istruzioni al verificarsi di una condizione vera.
Esistono però anche istruzioni che permettono, facendo ragionare il computer, di
eseguire una o più istruzioni per un tot di volte, verificando una determinata condizione.
Questo tipo di istruzioni eseguono quindi dei cicli, ed una di queste istruzioni si chiama
while. L'istruzione while può essere tradotta dall'inglese all'italiano come "fino a che".
Questo significa che questa istruzione ci permetterà di eseguire una o più istruzioni
Python "fino a che" non si verifica una condizione.
Facciamo un esempio pratico. Se vogliamo scrivere 100 volte la parola "ciao", possiamo
scrivere così:
print "ciao"
print "ciao"
print "ciao"
print "ciao"
print "ciao"
print "ciao"
print "ciao"
print "ciao"
print "ciao"
print "ciao"
Oppure possiamo usare un ciclo while. Ecco cosa dovremmo scrivere:
a=10
b=0
while b<>a:
print "ciao"
b=b+1
Proviamo ad avviare il programma. Ecco che Python scriverà 10 volte la parola "ciao".
Ma leggiamo il listato e cerchiamo di capire come funziona.
Scarica

Manuale Python - Pagina principale