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.