Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sommario
PYTHON
CAPITOLO 1 Cos’è Python?
CAPITOLO 2 Istallazione di Python
CAPITOLO 3
Iniziare a programmare con Python
CAPITOLO 4
Interprete e compilatore
CAPITOLO 5
Il tuo primo programma Python
CAPITOLO 6
Valori, operatori, variabili ed espressioni
CAPITOLO 7
true, false, if, else: gli operatori condizionali e logici
CAPITOLO 8
Le funzioni di Python
Capitolo 9
Le interazioni
CAPITOLO 10
Le liste
CAPITOLO 11
I dizionari di Python
CAPITOLO 12
La gestione dei file con Python
CAPITOLO 13
L’indentazione
CAPITOLO 14
IDLE, un’interfaccia visuale per Python
CAPITOLO 15
Directory, moduli e package
CAPITOLO 16
Le eccezioni in Python
Conclusioni
CAPITOLO 1
Cos’è Python?
"/System/Library/Frameworks/Python.framework"
"/usr/bin/python"
Istallazione su Windows
Per quanto riguarda i sistemi Windows, la situazione è un po' differente,
infatti, gli sviluppatori della Python mettono a disposizione un installer
pensato proprio per Windows, sia su architettura da 32 bit, sia su architettura
a 64 bit. Questo installer è scaricabile dal sito ufficiale di Python.
Una volta terminato il download bisogna procedere con un doppio clic sul
file, a questo punto si aprirà una schermata in cui bisogna scegliere se
consentire l'accesso a Python solo all'utente corrente a tutti quelli che hanno
accesso al terminale.
Si procederà cliccando sul tasto “Next”. E poi si sceglierà la directory di
installazione che potrebbe essere per esempio, quella che riportiamo di
seguito.
"C:\Python\"
1. pi@raspberrypi:~ $ python3
2. Python 3.7.3 (default, Dec 20 2019, 18:57:59)
3. [GCC 8.3.0] on linux
4. Type "help" , "copyright" , "credits" or "license" for more
information.
5. >>>
Focalizziamoci sull’ultima riga, in altre parole sul prompt >>> Ecco, questo
è il modo in cui Python ci chiede cosa vogliamo fare.
Come esempio puoi stampare a video qualsiasi frase rispettando la sintassi
vista in precedenza:
1. print ( 'Ciao' )
2. print ( 'Buone feste' )
3. print ( 'sto imparando a usare Python' )
1. >>> x = 7
2. >>> print (x)
3. 7
4. >>> y = x * 5
5. >>> print (y)
6. 35
Forse non te ne sei ancora reso conto, ma eseguendo gli esempi che abbiamo
riportato in questo capitolo, hai già creato il tuo primo programma. Infatti, hai
chiesto a Python di eseguire delle operazioni di moltiplicazione basilari,
usando la memorizzazione delle variabili. Questo è in tutto e per tutto un
programma, anche se allo stadio più elementare.
Un programma, infatti, è costituito da una sequenza di operazioni volte a
risolvere un problema. Proprio sulla base della risoluzione dei problemi
possiamo andare ad addentrarci nella creazione di programmi più avanzati.
Mettiamo che tu voglia fare un’analisi dei termini più utilizzati nel blog di un
competitor, per fare ad esempio un piano editoriale SEO. Fare questo lavoro
manualmente sarebbe molto difficile, richiederebbe molto tempo e potresti
commettere degli errori, poiché dovresti stampare tutti i post del blog o
comunque quelli della categoria che ti interessa, leggerli ed evidenziare tutte
le parole che ti interessano, per poi contarle tutte e capire quali sono le più
utilizzare. Sicuramente impazziresti. Mentre con un semplice programma
Python, risolveresti questo problema in pochi minuti. Vediamo come.
input , che serve per ottenere i dati, nel nostro caso dal
programmatore o dall’utente.
output , visualizza sullo schermo, oppure salva su una
memoria fisica.
Esecuzione sequenziale , che dice di eseguire le istruzioni
nell’esatta sequenza in cui sono inserite nello script.
Esecuzione condizionale , che verifica le condizioni e le segue
secondo le variabili.
Esecuzione ripetuta : che esegue le istruzioni in modo
ripetitivo.
riuso , riutilizza le istruzioni assegnate nell’intero
programma.
1. >>> type(0.2)
2. < class 'float' >
Come puoi notare, sia il numero intero del primo esempio che il decimale del
secondo, non è inserito tra le virgolette. Infatti, Python interpreta come
stringhe tutti i valori inseriti tra le virgolette, come puoi vedere nell’esempio
che segue.
Molta attenzione va anche data ai numeri molto grandi, in cui non vanno
assolutamente inserite le virgole, altrimenti Python li leggerà come una
stringa composta di diversi numeri interi.
1. >>> print (1,000,000)
2. 1 0 0
+ addizione
- sottrazione
* moltiplicazione
/ divisione
** esponente
Ecco degli esempi pratici:
1. 20 + 32
2. ora - 1
3. ora * 60 + minuti
4. minuti / 60
5. 5 ** 2
6. (5+9) * (15-7)
1. 15
2. x
3. x + 14
1. parentesi
2. esponente
3. moltiplicazione e divisione (alla pari)
4. addizione e sottrazione (alla pari).
1. >>> quoziente = 8 / 3
2. >>> print (quoziente)
3. 2,66666666
4. >>> resto = 8 % 3
5. >>> print (resto)
6. 2
Una precisazione va fatta per gli operatori + e * , infatti, questi sono utilizzati
anche per le stringhe , tuttavia non hanno una funzione matematica. Il +
serve per concatenare le stringhe :
1. >>> numero1 = 20
2. >>> numero2 = 25
3. >>> print (numero1+numero2)
4. 45
1. >>> 3 == 3 True
2. >>> 5 == 2 False
True e false sono operatori di classe bool e non sono assolutamente stringhe .
Per quanto riguarda gli operatori per fare confronti, non esiste solo quello
riportato nel precedente esempio == , ma anche altri operatori che eseguono
determinati confronti, eccoli:
x != y # x non è uguale a y
x > y # x è più grande di y
x < y # x è più piccolo di y
x >= y # x è più grande o uguale a y
x <= y # x è più piccolo o uguale a y
1. >>> 1 == 1 and 2 == 2
2. True
3. >>> 1 == 1 or 2 == 3
4. True
5. >>> 1 == 2 or 2 == 3
6. False
7. >>> not (1 == 1)
8. False
1. if x > 0 :
2. print ( 'uso x per gli esempi' )
3. if x < 0:
4. # Devi gestire i valori negativi
5. pass
Come puoi vedere, qui ho usato l’istruzione pass che funge da promemoria
con un commento . In più ricorda sempre di lasciare una riga vuota alla fine
di un blocco , altrimenti si verificherà un errore di sintassi.
Ci sono anche altri modi di usare if , in particolare quando ci sono due
possibilità e tramite la condizione il programma si deve individuare quale
delle due seguire. In questo caso si introduce anche else , vedi l’esempio di
seguito:
1. if x > 0 :
2. print ( 'x è maggiore di 0' )
3. else :
4. print ( 'x è minore o uguale a 0' )
Ma se le possibilità fossero più di due? Bene anche in questo caso c’è una
soluzione per fare in modo che Python esegua correttamente il nostro
programma. Questa soluzione prevede l’aggiunta di elif , vedi l’esempio:
1. if x < 0:
2. print ( 'x è minore di 0' )
3. elif x > 0:
4. print ( 'x è maggiore di 0' )
5. else :
6. print ( 'x è uguale a 0' )
CAPITOLO 8
Le funzioni di Python
1. >>> float(32)
2. 32.0
3. >>> str(32)
4. '32'
Tuttavia se vuoi definire una funzione , quindi crearne una tua, puoi farlo
utilizzando def . Facciamo un esempio:
Il ciclo while è stato pensato dai creatori di Python per effettuare delle
interazioni in modo semplice e preciso. Si tratta di automatizzazioni spesso
ripetitive che caratterizzano molte attività svolte dai terminali.
1. n=3
2. while n > 0:
3. print (n)
4. n=n-1
5. print ( 'Azione!' )
1. Salve: Bianchi
2. Salve: Rossi
3. Salve: Verdi
4. Salve a tutti!
CAPITOLO 10
Le liste
In questo esempio vediamo nella prima riga una lista di numeri interi, nel
secondo rigo una lista di stringhe e in fine nella terza riga troviamo una lista
che contiene una stringa , un float , un numero intero e addirittura un’altra
lista .
Quindi la sintassi per accedere alle liste prevede come abbiamo detto, l’uso
delle parentesi quadre in cui è contenuto l’indice che abbiamo deciso di
selezionare. È importante sapere che i valori all’interno di un indice si
contano partendo da 0 e non da 1, vedi l’esempio:
Con le liste è possibile fare davvero molte cose e Python mette a disposizione
dei programmatori tutta una serie di operatori e metodi che possono
rispondere alle più disparate esigenze. Adesso andremo a elencarne alcuni tra
i più importanti e utili.
Per scorrere semplicemente una lista puoi utilizzare il ciclo for :
Per scrivere o aggiornare gli elementi devi usare gli indici e la funzione len e
range :
Per concatenare gli elementi puoi usare l’operatore + , mentre per ripetere c’è
l’operatore * , per tagliare invece si usa (: ).
1. >>> a = [1, 2, 3]
2. >>> b = [4, 5, 6]
3. >>> c = a + b
4. >>> print (c) [1, 2, 3, 4, 5, 6]
5. >>> [0] * 4 [0, 0, 0, 0]
6. >>> [1, 2, 3] * 2 [1, 2, 3, 1, 2, 3]
7. >>> t = [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ]
8. >>> t[1:3]
9. [ 'b' , 'c' ]
10. >>> t[:4] [ 'a' , 'b' , 'c' , 'd' ]
11. >>> t[3:] [ 'd' , 'e' , 'f' ]
Una volta creati i dizionari, è possibile ottenere il valore delle chiavi usando
la sintassi dizionario[chiave], come puoi vedere nell’esempio che segue.
Di seguito trovi una tabella riassuntiva dei più comuni metodi utilizzabili per
i dizionari di Python, e degli esempi con esercizi.
Metodo Descrizione
Restituisce gli elementi di d
d.items() come un insieme di tuple
d.keys() Restituisce le chiavi di d
d.values() Restituisce i valori di d
Restituisce il valore
corrispondente a chiave se
presente, altrimenti il valore di
d.get(chiave, default (None se non
default) specificato)
Rimuove e restituisce il valore
corrispondente a chiave se
presente, altrimenti il valore di
d.pop(chiave, default (dà KeyError se non
default) specificato)
Rimuove e restituisce un
d.popitem() elemento arbitrario da d
Aggiunge gli elementi del
d.update(d2) dizionario d2 a quelli di d
d.copy() Crea e restituisce una copia di d
d.clear() Rimuove tutti gli elementi di d
5. >>>
6. >>> open( 'test.txt' , 'w' ) # aprendolo in scrittura, il file viene
creato
7. <_io.TextIOWrapper name= 'test.txt' mode= 'w' encoding=
'UTF-8' >
8. >>>
9. >>> open( 'test.txt' , 'r' ) # ora che è stato creato, possiamo
anche aprirlo in lettura
10. <_io.TextIOWrapper name= 'test.txt' mode=
'r' encoding= 'UTF-8' >
11. >>>
12. >>> open( 'test.txt' ) # se omettiamo il
modo, il file viene aperto in lettura ('r')
13. <_io.TextIOWrapper name= 'test.txt' mode=
'r' encoding= 'UTF-8' >
Modalità Descrizione
Apre un file di testo in lettura. Modo
'r' di apertura di default dei file.
Apre un file di testo in scrittura. Se il
file non esiste lo crea, altrimenti
'w' cancella il contenuto del file.
Apre un file di testo in append . Il
contenuto viene scritto alla fine del
file, senza modificare il contenuto
'a' esistente.
Apre un file di testo in creazione
esclusiva. Se il file non esiste,
restituisce un errore, altrimenti apre
in scrittura cancellando il contenuto
'x' del file.
Apre un file di testo in modifica.
Permette di leggere e scrivere
'r+' contemporaneamente.
Apre un file di testo in modifica.
Permette di leggere e scrivere
contemporaneamente. Cancella il
'w+' contenuto del file.
10. 'test.txt'
11. >>> f.mode # l'attributo .mode
corrisponde al modo di apertura
12. 'w'
13. >>> f.closed # l'attributo .closed è True se
il file è stato chiuso, altrimenti False
14. False
15. >>> f.read # read è un metodo che,
quando chiamato, legge e ritorna il contenuto
16. <built- in method read of
_io.TextIOWrapper object at 0xb67cb734>
17. >>> f.write # write è un metodo che,
quando chiamato, ci consente di scrivere nel file
18. <built- in method write of
_io.TextIOWrapper object at 0xb67cb734>
19. >>> f.close # close è un metodo che,
quando chiamato, chiude il file,
20. <built- in method close of
_io.TextIOWrapper object at 0xb67cb734>
metodo Descrizione
Legge e restituisce
l’intero contenuto del
file come una singola
file.read() stringa.
Legge e restituisce n
file.read(n) caratteri (o byte).
Legge e restituisce una
file.readline() riga del file.
Legge e restuisce
l’intero contenuto del
file come lista di righe
file.readlines() (stringhe).
Scrive nel file la
stringa s e ritorna il
numero di caratteri (o
file.write(s) byte) scritti.
Scrive nel file la lista in
file.writelines(lines) righe lines .
Restituisce la posizione
corrente memorizzata
file.tell() dal file object.
Modifica la posizione
corrente memorizzata
file.seek(offset, pos) dal file object.
file.close() Chiude il file.
9. True
CAPITOLO 13
L’indentazione
A questo punto sei già in grado di creare programmi basilari su Python e hai
gli strumenti per approfondire questo linguaggio. C’è un aspetto di cui
dobbiamo parlare ancora: l’indentazione .
Altri linguaggi di programmazione chiudono i blocchi di codice con parenti
graffe o parole specifiche. Python invece, usa l’indentazione che come vedrai
è anche utile per leggere in modo più veloce il codice. Questo però non è un
aspetto secondario, infatti, un’indentazione sbagliata può comportare
problemi, quindi va sempre fatta molta attenzione a questo elemento del
codice.
Vediamo un semplice esempio di indentazione :
A questo punto non ci resta che salvare questo file con estensione “.py ”, ad
esempio: moltiplicatore.py e il gioco è fatto. Abbiamo creato un modulo
Python da importare e utilizzare tutte le volte che vogliamo.
Adesso vediamo come importare un modulo Python in modo da poter
richiamare lo stesso quando ci serve. Per fare ciò bisogna usare il comando
import , come vedi nell’esempio che segue:
1. # Importazione di un modulo
2. >>> import moltiplicatore
A questo punto però, è utile sapere come gestire i moduli che spesso sono
tanti, per cui nasce la necessità di organizzarli a loro volta in contenitori più
grandi. A questo scopo Python mette a disposizione dei programmatori i
package .
Tramite i package è possibile organizzare e catalogare i moduli in modo
funzionale. Immaginando di dover organizzare una cartella di progetti da
realizzare, facciamo un esempio pratico che ti farà comprendere meglio la
natura dei package e ti sarà utile come esercizio.
Prima di tutto dobbiamo andare a creare una directory chiamata “Progetti” ,
sullo stesso percorso di un modulo chiamato “xmail ”. È utile utilizzare la
lettera maiuscola iniziale per denominare i package così da distinguerli in
modo più intuitivo dai moduli .
A questo punto copiamo “xmail” all’interno di Progetti e rinominiamo il
modulo in project_moltiplicatore _xmail.py
Ora dobbiamo importare il modulo nel package , per farlo puoi procedere
come segue: