Slide della lezione 2 del corso di Python tenuto per gli studenti del Collegio Don Nicola Mazza di Padova in data 6 Aprile 2020. Argomenti trattati: script, IDLE, espressioni booleane, controllo del flusso, cicli, funzioni, classi, file
1. Corso di Python
Riccardo Bortoluzzi
Collegio Universitario don Nicola Mazza
06 Aprile 2020
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 1 / 58
2. Struttura della lezione
1 Script
2 IDLE
3 Espressioni Booleane
4 Controllo del usso
5 Cicli
Ciclo for
Ciclo while
6 Funzioni
7 Classi
8 File
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 2 / 58
3. Script
Script
Script
Uno script è un le di testo eseguibile.
All'interno possono essere inseriti dei comandi che python interpreterà.
L'esecuzione dei comandi avviene in maniera sequenziale.
L'estensione per uno script python deve essere .py
Uno script stamperà a video solo quello che noi ordiniamo di stampare
(attraverso il comando print( ) ).
Le porzioni di codice precedute da un hashtag (#) sono commenti e non
verranno eseguite.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 3 / 58
4. Script
Script
Esecuzione
Per eseguire uno script python si digita da riga di comando
python3 path_le
dove path_le è il percorso del le.
In alternativa ci si può recare nella cartella contenente il le tramite riga di
comando e digitare semplicemente
python3 nome_le
Ricordarsi di inserire anche l'estensione .py
esempio_script.py
Questa e' la seconda lezione del corso di Python
print(Stasera cominciamo a programmare seriamente)
#print( Questo e' un commento )
python3 esempio_script.py
Stasera cominciamo a programmare seriamente
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 4 / 58
5. IDLE
IDLE
IDLE
IDLE è un programma che ore un'interfaccia visuale per Python.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 5 / 58
6. IDLE
IDLE
IDLE
IDLE è un programma che ore un'interfaccia visuale per Python.
Per avviarlo basta scrivere da terminale idle3 oppure ricercarlo nella lista
dei programmi
Tramite IDLE è possibile creare uno script, basta andare nel menù File in
alto a sinistra e cliccare sulla voce New File
Da IDLE è possibile eseguire direttamente uno script, basta premere F5.
Nel caso in cui il le sia stato modicato, chiederà di salvarlo.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 5 / 58
7. IDLE
IDLE
Esercizio
Creare uno script in cui si utilizzano due variabili con valori numerici e si
stampa la somma delle 2, il loro prodotto.
In seguito si incrementi la seconda di 3 e si stampi la dierenza tra il
quadrato della prima e la seconda
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 6 / 58
8. IDLE
IDLE
Esercizio
Creare uno script in cui si utilizzano due variabili con valori numerici e si
stampa la somma delle 2, il loro prodotto.
In seguito si incrementi la seconda di 3 e si stampi la dierenza tra il
quadrato della prima e la seconda
esercizio_script.py
a = 5
b = 10
print(a + b)
print(a * b)
b += 3
print(a**2 - b)
15
50
12
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 6 / 58
9. Espressioni Booleane
Espressioni Booleane
Espressioni Booleane
Le Espressioni Booleane sono particolari operazioni che ritornano come
valore True oppure False.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 7 / 58
10. Espressioni Booleane
Espressioni Booleane
Espressioni Booleane
Le Espressioni Booleane sono particolari operazioni che ritornano come
valore True oppure False.
2 == 2
True
Computer == Tablet
False
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 7 / 58
11. Espressioni Booleane
Espressioni Booleane
Operatori
== Uguale
!= Diverso
Maggiore stretto
= Maggiore o uguale
Minore stretto
= Minore o uguale
in Elemento dentro un contenitore
is Identico
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 8 / 58
12. Espressioni Booleane
Espressioni Booleane
Operatori
== Uguale
!= Diverso
Maggiore stretto
= Maggiore o uguale
Minore stretto
= Minore o uguale
in Elemento dentro un contenitore
is Identico
In Python sono valutati come False:
Lo zero di tutti i tipi numerici ( 0, 0.0, (0+0j) )
I contenitori vuoti ( (), [], set(), {} )
La stringa vuota ( , )
None (il valore ritornato dalle funzioni senza istruzione return)
Tutti gli altri dati sono valutati come True
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 8 / 58
13. Espressioni Booleane
Espressioni Booleane
Operatori and, or, not
Si possono anche combinare diverse espressioni booleane
expr and expr
Restituisce True se entrambe le espressioni
hanno valore True;
expr or expr
Restituisce True se almeno una delle 2 espressioni
è valutata True;
not(expr) Restituisce il valore opposto di expr.
Si possono anche inserire le parentesi per stabilire l'ordine secondo cui
vengono eseguite le espressioni:
( a == b and not(35) ) or c is 4
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 9 / 58
22. Espressioni Booleane
Espressioni Booleane
Esercizi
bool(ciao)
True
bool (0)
False
bool ([0])
True
bool(1 and stringa)
True
bool ([] is [])
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
23. Espressioni Booleane
Espressioni Booleane
Esercizi
bool(ciao)
True
bool (0)
False
bool ([0])
True
bool(1 and stringa)
True
bool ([] is [])
False
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
24. Controllo del usso
Istruzione if
Istruzione if
Per eseguire delle istruzioni condizionate si utilizza l'istruzione if.
La sintassi per le istruzioni condizionate è:
if condizione :
istruzione1
istruzione2
...
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 11 / 58
25. Controllo del usso
Istruzione if
Istruzione if
Per eseguire delle istruzioni condizionate si utilizza l'istruzione if.
La sintassi per le istruzioni condizionate è:
if condizione :
istruzione1
istruzione2
...
Da notare l'indentazione. Le istruzioni eseguite nel caso in cui la condizione
risulti True, sono soltanto quelle indentate correttamente.
In seguito, il programma continua ad eseguire le istruzioni fuori dall'if.
Per ottenere l'indentazione si può premere il tasto Tab oppure scrivere
molteplici spazi (ma in questo caso ricordarsi di utilizzare sempre lo stesso
numero).
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 11 / 58
26. Controllo del usso
Istruzione if
Esempio
Cosa stamperà il seguente codice?
esempio_if1.py
v = 150632
if len(v)4 :
a = int(v)
a -= 632
print(a)
if a == 150000 :
print(a e' una stringa)
print(fine dello script)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 12 / 58
27. Controllo del usso
Istruzione if
Esempio
Cosa stamperà il seguente codice?
esempio_if1.py
v = 150632
if len(v)4 :
a = int(v)
a -= 632
print(a)
if a == 150000 :
print(a e' una stringa)
print(fine dello script)
150000
fine dello script
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 12 / 58
28. Controllo del usso
Clausole elif e else
elif e else
Nell'istruzione if ci sono 2 clausole:
elif : serve per controllare altre condizioni nel caso in cui le precedenti
diano esito False;
else : serve per eseguire delle istruzioni nel caso in cui tutte le
condizioni precedenti risultino non vericate.
La sintassi è simile a quella dell'if:
if condizione1 :
istruzione1
elif condizione2 :
istruzione 3
else:
istruzione4
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 13 / 58
29. Controllo del usso
Controllo del usso
Esercizio
Scrivere uno script che, assegnata una variabile, deve:
Nel caso in cui la variabile sia di tipo stringa (str) e di lunghezza
inferiore a 5, la si stampi a video;
Nel caso in cui la variabile sia un numero (int) pari oppure sia più
piccolo di 50 si stampi a video la scritta numero pari o piccolo;
Nel caso la variabile sia un numero ma non rientri nella categoria
precedente si scriva numero brutto;
In qualsiasi altro caso si stampi a video dato non trattabile;
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 14 / 58
30. Controllo del usso
Controllo del usso
Soluzione
esercizio_if1.py
v=60
if type(v) == str and len(v)5:
print(v)
elif type(v) == int:
if v%2 == 0 or v50:
print(numero pari o piccolo)
else:
print(numero brutto)
else:
print(dato non trattabile)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 15 / 58
31. Cicli Ciclo for
Ciclo for
for
Il comando for serve per eseguire delle istruzioni un numero denito di
volte.
La sintassi è:
for var in iterabile:
istruzione1
istruzione2
Dove var rappresenta una variabile e iterabile rappresenta un oggetto di
tipo contenitore.
Le istruzioni verranno eseguite per un numero di volte pari a
len(iterabile)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 16 / 58
32. Cicli Ciclo for
Ciclo for
for
Il comando for serve per eseguire delle istruzioni un numero denito di
volte.
La sintassi è:
for var in iterabile:
istruzione1
istruzione2
Dove var rappresenta una variabile e iterabile rappresenta un oggetto di
tipo contenitore.
Le istruzioni verranno eseguite per un numero di volte pari a
len(iterabile)
La variabile assumerà via via tutti i valori all'interno del contenitore, ma
non è necessario che compaia nelle istruzioni.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 16 / 58
33. Cicli Ciclo for
Ciclo for
Esempio 1
esempio_for1.py
for i in range (5):
a = 2*i
print (11**i)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 17 / 58
34. Cicli Ciclo for
Ciclo for
Esempio 1
esempio_for1.py
for i in range (5):
a = 2*i
print (11**i)
1
11
121
1331
14641
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 17 / 58
35. Cicli Ciclo for
Ciclo for
Esercizio 1
Creare uno script che, attraverso un ciclo for, calcoli il fattoriale di un
determinato numero e alla ne lo stampi a video.
Il fattoriale di n è il prodotto di tutti i numeri da 1 a n.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 18 / 58
36. Cicli Ciclo for
Ciclo for
Esercizio 1
Creare uno script che, attraverso un ciclo for, calcoli il fattoriale di un
determinato numero e alla ne lo stampi a video.
Il fattoriale di n è il prodotto di tutti i numeri da 1 a n.
esercizio_for1.py
numero = 12
fact = 1
for a in range(1, numero +1):
fact *= a
print(fact)
python3 esercizio_for1.py
479001600
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 18 / 58
37. Cicli Ciclo for
Ciclo for
Esercizio 2
Creare uno script che generi la piramide di zeri di altezza pressata
Esempio di piramide di altezza 5:
0
000
00000
0000000
000000000
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 19 / 58
38. Cicli Ciclo for
Ciclo for
Esercizio 2
Creare uno script che generi la piramide di zeri di altezza pressata
Esempio di piramide di altezza 5:
0
000
00000
0000000
000000000
Suggerimenti (in una piramide di altezza h):
Basta stampare gli spazi iniziali (che nella prima riga sono h-1) e
tralasciare quelli nali;
Al livello k il numero di zeri è pari a 2 · k − 1;
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 19 / 58
39. Cicli Ciclo for
Ciclo for
Esercizio 2
esercizio_for2.py
altezza = 5
for k in range(1, altezza +1):
spazi = *(altezza -k) #spazi iniziali
zeri = 0*(2*k-1) #stringa di zeri
print(spazi+zeri)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 20 / 58
40. Cicli Ciclo while
Cilco while
while
Il ciclo while permette di eseguire delle istruzioni no a quando una
condizione risulta True.
La sua sintassi è:
while condizione:
istruzione 1
istruzione 2
...
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 21 / 58
41. Cicli Ciclo while
Cilco while
while
Il ciclo while permette di eseguire delle istruzioni no a quando una
condizione risulta True.
La sua sintassi è:
while condizione:
istruzione 1
istruzione 2
...
Nota Bene: se non si sta attenti alla condizione, c'è la possibilità di
ricadere in un ciclo innito (che si può fermare con CTRL + C oppure
chiudendo la nestra).
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 21 / 58
42. Cicli Ciclo while
Ciclo while
Esempio 1
esempio_while1.py
pswd = cor50_pytHoN #Password da trovare
#Password inserita dall'utente
utente = input(Inserisci la password: )
#Ciclo fino a quando le password sono diverse
while utente != pswd:
print(Password errata)
print(Accesso negato)
#Richiedo la password
utente = input(Inserisci la password: )
#Se esce dal ciclo la password e' stata trovata
print(Password corretta)
print(Accesso consentito)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 22 / 58
43. Cicli Ciclo while
Ciclo while
Esempio 1
python3 esempio_while1.py
Inserisci la password: prova
Password errata
Accesso negato
Inserisci la password: or50_python
Password errata
Accesso negato
Inserisci la password: cor50_pytHoN
Password corretta
Accesso consentito
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 23 / 58
44. Cicli Ciclo while
Ciclo while
Esempio 2
esempio_while2.py
i = 0
while i 8:
print('Valore di i:', i)
i +3
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 24 / 58
45. Cicli Ciclo while
Ciclo while
Esempio 2
esempio_while2.py
i = 0
while i 8:
print('Valore di i:', i)
i +3
Questo è un ciclo innito perché la variabile i non viene incrementata di 3
(l'istruzione non è i += 3) ad ogni ciclo e quindi il suo valore resterà
sempre 0 (quindi 8).
python3 esempio_while2.py
Valore di i: 0
Valore di i: 0
Valore di i: 0
Traceback (most recent call last):
File esempio_while2.py, line 3, in module
print('Valore di i:', i)
KeyboardInterrupt
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 24 / 58
46. Cicli Ciclo while
Ciclo while
Esercizio 1
Creare uno script che:
Chieda all'utente di inserire dei nomi (attraverso il comando input())
no a quando non si inserisce la stringa STOP;
Per ciascun nome, se non è presente in una lista, lo aggiunga alla ne
della lista;
Al termine, stampi la lista con i nomi.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 25 / 58
47. Cicli Ciclo while
Ciclo while
Esercizio 1
esercizio_while1.py
lista = [] #inizializzo la lista vuota
#chiede il primo nome
nome = input(Inserire un nome: )
while nome != STOP:
#se il nome non c'e' lo inserisce
if not(nome in lista ):
lista.append(nome)
#chiede il nuovo nome
nome = input(Inserire un nome: )
#stampa la lista
print(lista)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 26 / 58
48. Cicli Ciclo while
Ciclo while
Esercizio 1
python3 esercizio_while1.py
Inserire un nome: Gloria
Inserire un nome: Carlo
Inserire un nome: Andrea
Inserire un nome: Carlo
Inserire un nome: STOP
['Gloria ', 'Carlo ', 'Andrea ']
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 27 / 58
49. Cicli Ciclo while
Ciclo while
Esercizio 2
Creare un piccolo gioco:
Il computer pensa un numero casuale da 0 a 9 (suggerimento:
importare la libreria random con il comando import random, per
ritornare un numero casuale tra 0 e 9 usare l'istruzione
random.randrange(10));
L'utente, attraverso la funzione input() inserisce un numero
(convertire l'inserimento dell'utente in intero con la funzione int())
Nel caso in cui il numero scritto dall'utente dierisca di al massimo
due unità da quello pensato dal programma, l'utente guadagna un
punto e il computer stampa a video la scritta Punto guadagnato;
Lo script stampa a video il numero che aveva pensato;
Si devono giocare al massimo 10 partite oppure no a quando l'utente
non raggiunge il punteggio di 5;
Nel caso in cui l'utente abbia totalizzato 5 punti, il computer deve
complimentarsi stampando a video Complimenti hai vinto.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 28 / 58
50. Cicli Ciclo while
Ciclo while
Esercizio 2
esercizio_while2.py
import random
n = 0 #numero partite
punti = 0 #punti utente
while n10 and punti 5:
pc = random.randrange (10) #numero pensato
utente = input(Inserisci un numero: )
utente = int(utente) #numero inserito
print(Il numero che ho pensato e' +str(pc))
if -2 = utente - pc = 2: #controllo
punti += 1 #incremento punti
print('Punto guadagnato ')
n += 1 #incremento partite
#quando esce dal ciclo
if punti == 5:
print(Complimenti hai vinto)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 29 / 58
51. Cicli Ciclo while
Ciclo while
Esercizio 2
python3 esercizio_while2.py
Inserisci un numero: 6
Il numero che ho pensato e' 9
Inserisci un numero: 5
Il numero che ho pensato e' 3
Punto guadagnato
Inserisci un numero: 4
Il numero che ho pensato e' 2
Punto guadagnato
Inserisci un numero: 4
Il numero che ho pensato e' 6
Punto guadagnato
Inserisci un numero: 6
Il numero che ho pensato e' 5
Punto guadagnato
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 30 / 58
52. Funzioni
Funzioni
Funzioni
Le funzioni sono insiemi di istruzioni che possono essere richiamate ed
eseguite più volte in uno script.
Si possono passare dei parametri alle stesse.
Ogni funzione ha un valore ritornato, nel caso non sia specicato, il valore
è None
La sintassi è la seguente:
def nome_funzione(par1 , par2 , par3 = 0):
istruzione1
istruzione2
...
return 5
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 31 / 58
53. Funzioni
Funzioni
Parametri
Parametri
I parametri sono informazioni che potrebbero far variare l'esecuzione della
funzione.
Possono avere o meno un valore di default.
Vanno sempre inseriti prima quelli senza valore di default.
Quelli con il valore di default sono facoltativi nel richiamare una funzione,
gli altri obbligatori.
def nomefunzione(par1 , par2 , par3=[], par4 =0):
istruzione1
...
Nella denizione della funzione, i parametri par3 e par4 sono facoltativi e
hanno come valori di default rispettivamente [] e 0.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 32 / 58
54. Funzioni
Funzioni
return
return
Nell'esecuzione di una funzione, appena il programma legge un'istruzione
return, l'esecuzione della funzione si interrompe e viene ritornato il valore
specicato.
Nel caso in cui, arrivato alla ne della funzione, il programma non trovi
nessun return, di default ritorna il valore None.
def funzione1(pluto):
istruzione1
...
return 5
print(Questa stringa non verra ' mai stampata)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 33 / 58
55. Funzioni
Funzioni
Parametri e return
esempio_funzione1.py
def is_primo(num):
for i in range(2,num):
#controlla il resto
if num%i == 0:
#stampa divisore
print(i)
return False
return True
def MCD(a, b = 1):
minimo = min(a, b)
valore = 1 #valore iniziale del mcd
for i in range(2, minimo + 1):
if a%i == 0 and b%i == 0:
valore = i
return valore
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 34 / 58
56. Funzioni
Funzioni
Parametri e return
is_primo (13)
True
is_primo (169)
13
False
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 35 / 58
57. Funzioni
Funzioni
Parametri e return
is_primo (13)
True
is_primo (169)
13
False
MCD(8)
1
MCD(12, 18)
6
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 35 / 58
58. Funzioni
Funzioni
Variabili locali
Variabili Locali
Le variabili denite all'interno delle funzioni sono denite locali.
Signica che non possono essere richiamate all'esterno della funzione stessa.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 36 / 58
60. Funzioni
Funzioni
Variabili locali
esempio_funzione2.py
def saluta(nome):
a = 5
print(Ciao + nome + come stai?)
r = saluta(Mario)
print(Il valore ritornato e' +str(r))
print(a)
python3 esempio_funzione2.py
Ciao Mario come stai?
Il valore ritornato e' None
Traceback (most recent call last):
File Esempio_funzione2.py, line 7, in module
print(a)
NameError: name 'a' is not defined
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 37 / 58
61. Funzioni
Funzioni
Funzioni ricorsive
Funzioni ricorsive
Le funzioni ricorsive ritornano un valore oppure richiamano al loro interno
la funzione stessa con una combinazione di parametri denita più semplice
rispetto a quella attuale.
N. B. : bisogna ricordarsi di specicare il caso base, altrimenti si rischia che
la funzione non termini mai oppure vada in errore.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 38 / 58
62. Funzioni
Funzioni
Funzioni ricorsive
Funzioni ricorsive
Le funzioni ricorsive ritornano un valore oppure richiamano al loro interno
la funzione stessa con una combinazione di parametri denita più semplice
rispetto a quella attuale.
N. B. : bisogna ricordarsi di specicare il caso base, altrimenti si rischia che
la funzione non termini mai oppure vada in errore.
esempio_funzione3.py
def somma(numero ):
if numero == 1:
return 1
else:
return numero + somma(numero -1)
somma (5) #1+2+3+4+5=15
15
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 38 / 58
63. Funzioni
Funzioni
Esercizio 1
Creare uno script contenente una funzione che:
Ritorni None;
Prenda come parametri 2 stringhe, in cui la prima possa essere anche
una frase, la seconda abbia come valore di default
abcdefghijklmnopqrstuvwxyz;
Scorrendo le lettere della seconda (quindi senza utilizzare gli insiemi),
stampi a video tutte le lettere presenti nella seconda ma non nella
prima nell'ordine in cui compaiono;
Suggerimento: utilizzare l'operatore in;
Alla ne stampi le 2 stringhe.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 39 / 58
64. Funzioni
Funzioni
Esercizio 1
esercizio_funzione1.py
def mancanti(a, rif = abcdefghijklmnopqrstuvwxyz):
#scorro le lettere in rif
for i in rif:
#verifico che non sia presente
if not(i in a):
print(i)
#stampo le stringhe
print(la stringa di partenza era: + a)
print(Il riferimento era: + rif)
mancanti('Cominciamo A Scrivere Qualcosa?', 'ABCD')
B
D
la stringa di partenza era: Cominciamo A crivere Qualcosa?
Il riferimento era: ABCDEF
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 40 / 58
65. Funzioni
Funzioni
Esercizio 2
Si crei uno script contenente 2 funzioni.
Entrambe devono:
Prendere come input una lista;
Ritornare la somma dei numeri della lista;
Una funzione deve essere ricorsiva, l'altra no.
Nessuna delle 2 può richiamare la funzione sum(lista).
Suggerimento: per quella ricorsiva prendere spunto da
esempio_funzione3.py ed utilizzare lo slicing, per quella non ricorsiva dal
primo esercizio del for.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 41 / 58
66. Funzioni
Funzioni
Esercizio 2
esercizio_funzione2.py
def somma_for(lista):
tot = 0 #inizializzo il totale
for i in lista:
#somma ciascun numero a tot
tot += i
#ritorna il valore di tot
return tot
def somma_ric(lista):
#caso base lunghezza 1
if len(lista) == 1:
return lista [0]
else:
return lista [0]+ somma_ric(lista [1:])
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 42 / 58
67. Funzioni
Funzioni
Esercizio 2
l = [2,4,6,8,10,12,14,16,18,20]
sum(l)
110
somma_for(l)
110
somma_ric(l)
110
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 43 / 58
68. Classi
Classi
Python è un linguaggio di programmazione orientato agli oggetti.
Classi
I comportamenti di questi oggetti sono deniti all'interno delle rispettive
classi.
Ogni classe è caratterizzata da particolari funzioni, chiamate metodi, e
particolari variabili, chiamati attributi.
Per dichiarare una classe la sintassi è:
class nomeclasse:
attributo1 = val1
attributo2 = val2
...
def metodo1(args):
...
def metodo2(args):
...
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 44 / 58
69. Classi
Classi
Metodi e attributi
Metodo
I metodi sono particolari funzioni delle classi e degli oggetti da esse create
che permettono di accedere agli attributi e metodi, anche a quelli nascosti,
dell'oggetto stesso.
Per denire un metodo la sintassi è:
def nome_metodo(self , par1 , ...):
istruzione1
...
Il primo parametro nella denizione di ciascun metodo deve sempre essere
self, che rappresenta l'oggetto stesso e può essere utilizzato per richiamare
altri metodi dell'oggetto stesso oppure gli attributi.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 45 / 58
70. Classi
Classi
Metodi e attributi
Metodo
I metodi sono particolari funzioni delle classi e degli oggetti da esse create
che permettono di accedere agli attributi e metodi, anche a quelli nascosti,
dell'oggetto stesso.
Per denire un metodo la sintassi è:
def nome_metodo(self , par1 , ...):
istruzione1
...
Il primo parametro nella denizione di ciascun metodo deve sempre essere
self, che rappresenta l'oggetto stesso e può essere utilizzato per richiamare
altri metodi dell'oggetto stesso oppure gli attributi.
Attributi
Gli attributi possono essere pensati come le variabili interne all'oggetto.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 45 / 58
71. Classi
Classi
Metodo costruttore
Metodo costruttore
Il metodo costruttore serve per creare un'oggetto di quella determinata
istanza.
Ogni classe deve contenere un metodo costruttore.
Per denire un metodo costruttore si utilizza un metodo __init__:
def __init__(self , par1 , par2 , ...):
istruzione1
...
Generalmente, all'interno del metodo costruttore si valorizzano i vari
attributi e si richiamano i metodi per eventuali congurazioni iniziali
dell'oggetto.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 46 / 58
72. Classi
Classi
Oggetti
Oggetto
Un oggetto è un'istanza di una classe e i suoi attributi e metodi sono quelli
deni all'interno della classe.
Per creare un nuovo oggetto si utilizza la sintassi:
nomeOggetto = nomeClasse(par1 , par2 , ...)
Dove come parametri si passano quelli del metodo costruttore.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 47 / 58
73. Classi
Classi
Oggetti
Oggetto
Un oggetto è un'istanza di una classe e i suoi attributi e metodi sono quelli
deni all'interno della classe.
Per creare un nuovo oggetto si utilizza la sintassi:
nomeOggetto = nomeClasse(par1 , par2 , ...)
Dove come parametri si passano quelli del metodo costruttore.
Per accedere agli attributi di un oggetto o per richiamare un suo metodo si
utilizza il punto (.):
nomeOggetto.attributo
nomeOggetto.metodo(par1 , par2 , ...)
I parametri che si passano ad un metodo quando lo si richiama sono quelli
presenti nella denizione, ad esclusione del self.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 47 / 58
74. Classi
Classi
Esempio
esempio_classe1.py
class mazzo:
carte = 0
def __init__(self , numero = 0):
#numero e' quante carte ho nel mazzo
self.carte = numero
def modifica(self , valore ):
#modifico il numero di carte
self.carte += valore
def stampa(self):
#sapere quante carte si hanno
print(Num: + str(self.carte ))
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 48 / 58
75. Classi
Classi
Esempio
mario = mazzo (15)
mario.stampa ()
Num: 15
mario.modifica (6)
mario.stampa ()
Num: 21
mario.modifica (-7)
mario.carte
14
rosse=mazzo()
rosse.modifica (10)
mario.stampa ()
Num: 14
rosse.stampa ()
Num: 10
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 49 / 58
76. Classi
Classi
Esercizio
Scrivere uno script che contenga una classe ricetta
Gli attributi devono essere:
ingredienti che è un dizionario in cui le chiavi sono gli ingredienti e i
valori le rispettive quantità
procedimento che è una stringa che contiene le istruzioni sequenziali
da seguire per preparare la ricetta
I metodi devono essere:
aggiungi che aggiunge un ingrediente alla lista, quindi prende come
parametri l'ingrediente e la quantità (di default 0)
stampa che non prende input ma stampa in successione gli ingredienti
con le rispettive quantità e inne il procedimento da seguire
Il costruttore deve prendere come parametro la stringa del procedimento ed
il dizionario degli ingredienti (di default il dizionario vuoto).
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 50 / 58
77. Classi
Classi
Esercizio
esercizio_classe1.py
class ricetta:
procedimento = None
ingredienti = None
def __init__(self , istruzioni , diz_ingredienti ={}):
self.procedimento = istruzioni
self.ingredienti = diz_ingredienti
def aggiungi(self , elemento , qnt = 0):
self.ingredienti[elemento] = qnt
def stampa(self):
for ingr in self.ingredienti.keys ():
qnt = str(self.ingredienti[ingr])
print(ingr +: + qnt )
print(self.procedimento)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 51 / 58
78. Classi
Classi
Esercizio
frtt=ricetta(Sbatti le uova , cuoci per 4 minuti)
frtt.aggiungi(uova, 3)
frtt.aggiungi(padella, 1)
frtt.stampa ()
padella: 1
uova: 3
Sbatti le uova , cuoci per 4 minuti
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 52 / 58
79. File
File
Aprire un le
File
Python dà la possibilità di creare, leggere e scrivere le attraverso degli
oggetti particolari.
Per aprire un le si ricorre all'istruzione:
var_file = open(path , modalita)
Dove path è una stringa e indica il percorso del le che si vuole aprire.
Per modalita si può scegliere tra
w rappresenta la tipologia di scrittura. Nel caso in cui il le non
esista, viene creato, altrimenti sovrascritto;
r rappresenta la modalità di lettura, se il le non è presente solleva
un errore;
a si utilizza per aggiungere delle righe al le (modalità append), se
il le non fosse presente, viene creato.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 53 / 58
80. File
File
Metodi
Per scrivere in un le (aperto in modalità scrittura o append) si utilizza il
metodo:
var_file.write(testo)
Dove testo è una stringa che viene aggiunta alla ne del le
Nota: alla ne di ogni riga bisogna inserire il carattere n per andare a capo
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 54 / 58
81. File
File
Metodi
Per scrivere in un le (aperto in modalità scrittura o append) si utilizza il
metodo:
var_file.write(testo)
Dove testo è una stringa che viene aggiunta alla ne del le
Nota: alla ne di ogni riga bisogna inserire il carattere n per andare a capo
Per leggere da un le (aperto in modalità lettura):
var_file.readline() serve per leggere (e ritornare) una singola riga
del le.
var_file.read() serve per leggere l'intero le e ritorna una stringa.
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 54 / 58
82. File
File
Metodi
Per scrivere in un le (aperto in modalità scrittura o append) si utilizza il
metodo:
var_file.write(testo)
Dove testo è una stringa che viene aggiunta alla ne del le
Nota: alla ne di ogni riga bisogna inserire il carattere n per andare a capo
Per leggere da un le (aperto in modalità lettura):
var_file.readline() serve per leggere (e ritornare) una singola riga
del le.
var_file.read() serve per leggere l'intero le e ritorna una stringa.
Quando si ha terminato di operare con un le bisogna chiuderlo attraverso
il comando
var_file.close()
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 54 / 58
83. File
File
Esempio
file_wr = open(./spesa.txt, w)
file_wr.write(Pane 3)
file_wr.write(Acqua 2n)
file_wr.write(Fragole 6n)
file_wr.write(Insalata)
file_wr.close()
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 55 / 58
84. File
File
Esempio
file_wr = open(./spesa.txt, w)
file_wr.write(Pane 3)
file_wr.write(Acqua 2n)
file_wr.write(Fragole 6n)
file_wr.write(Insalata)
file_wr.close()
file_r=open(./ spesa.txt, r)
contenuto_1_riga=file_r.readline ()
print('1a_riga:', contenuto_1_riga)
1a_riga: Pane 3Acqua 2
resto_cont = file_r.read()
print('resto:', resto_cont)
resto: Fragole 6
Insalata
file_r.close()
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 55 / 58
86. File
File
Esercizio
Scaricare dalla chat il le canto1.txt.
Creare uno script che:
Apra il le;
Ne legga l'intero contenuto;
Ricavi la lista delle righe (suggerimento: per dividere una stringa in
righe utilizzare il comando stringa.split(n));
Crei un le chiamato tagliato.txt che contenga le terzine dispari
(suggerimento: ogni terzina è individuata da 4 righe);
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 57 / 58
87. File
File
Esercizio
esercizio_le1.py
f=open(canto1.txt, r)
contenuto=f.read()
r = contenuto.split(n)
f.close()
#creo il file taglaito
file_tagliato=open(tagliato.txt, w)
#creo la lista delle righe nelle quartine dispari
l=len(r)
lista_quartine_dispari =[ r[i] for i in range(l)
if (i//4)%2==0
]
#scrivo tutte le righe
for stringa_quartina_dispari in lista_quartine_dispari:
file_tagliato.write(stringa_quartina_dispari+'n')
file_tagliato.close ()
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 58 / 58