SlideShare a Scribd company logo
1 of 87
Download to read offline
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
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
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
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
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
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
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
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
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
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
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
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
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
Espressioni Booleane
Espressioni Booleane
Esercizi
 bool(ciao)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
Espressioni Booleane
Espressioni Booleane
Esercizi
 bool(ciao)
True
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
Espressioni Booleane
Espressioni Booleane
Esercizi
 bool(ciao)
True
 bool (0)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
Espressioni Booleane
Espressioni Booleane
Esercizi
 bool(ciao)
True
 bool (0)
False
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
Espressioni Booleane
Espressioni Booleane
Esercizi
 bool(ciao)
True
 bool (0)
False
 bool ([0])
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
Espressioni Booleane
Espressioni Booleane
Esercizi
 bool(ciao)
True
 bool (0)
False
 bool ([0])
True
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
Espressioni Booleane
Espressioni Booleane
Esercizi
 bool(ciao)
True
 bool (0)
False
 bool ([0])
True
 bool(1 and stringa)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
Espressioni Booleane
Espressioni Booleane
Esercizi
 bool(ciao)
True
 bool (0)
False
 bool ([0])
True
 bool(1 and stringa)
True
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 37 / 58
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
File
File
Esempio
spesa.txt
Pane 3Acqua 2
Fragole 6
Insalata
Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 56 / 58
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
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

More Related Content

What's hot (12)

2006 Py02 base
2006 Py02 base2006 Py02 base
2006 Py02 base
 
2008 python
2008 python2008 python
2008 python
 
Javaday 2006: Java 5
Javaday 2006: Java 5Javaday 2006: Java 5
Javaday 2006: Java 5
 
Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1
 
T4 tipizzazione
T4 tipizzazioneT4 tipizzazione
T4 tipizzazione
 
2011.02.19 Introducing F#
2011.02.19 Introducing F#2011.02.19 Introducing F#
2011.02.19 Introducing F#
 
Introduzione a Python
Introduzione a PythonIntroduzione a Python
Introduzione a Python
 
T7 librerie
T7 librerieT7 librerie
T7 librerie
 
Programmazione Funzionale per tutti
Programmazione Funzionale per tuttiProgrammazione Funzionale per tutti
Programmazione Funzionale per tutti
 
Programmazione
ProgrammazioneProgrammazione
Programmazione
 
Variabili
VariabiliVariabili
Variabili
 
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
Progetto e realizzazione di uno strumento per la modifica sistematica di codi...
 

Similar to Corso Python 2020 - Lezione 2

Python nel primo biennio della scuola superiore
Python nel primo biennio della scuola superiorePython nel primo biennio della scuola superiore
Python nel primo biennio della scuola superioreguestc11532
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven DevelopmentEnnio Masi
 
A brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventA brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventPietro Di Bello
 
Mocking Objects Practices
Mocking Objects PracticesMocking Objects Practices
Mocking Objects PracticesGrUSP
 
TypeScript, ovvero JavaScript che "non si rompe"
TypeScript, ovvero JavaScript che "non si rompe"TypeScript, ovvero JavaScript che "non si rompe"
TypeScript, ovvero JavaScript che "non si rompe"BENTOSA
 
Ecdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTEcdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTNino Lopez
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java BaseK-Tech Formazione
 

Similar to Corso Python 2020 - Lezione 2 (8)

Video python3 n2
Video python3 n2Video python3 n2
Video python3 n2
 
Python nel primo biennio della scuola superiore
Python nel primo biennio della scuola superiorePython nel primo biennio della scuola superiore
Python nel primo biennio della scuola superiore
 
Introduzione al Test Driven Development
Introduzione al Test Driven DevelopmentIntroduzione al Test Driven Development
Introduzione al Test Driven Development
 
A brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventA brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA event
 
Mocking Objects Practices
Mocking Objects PracticesMocking Objects Practices
Mocking Objects Practices
 
TypeScript, ovvero JavaScript che "non si rompe"
TypeScript, ovvero JavaScript che "non si rompe"TypeScript, ovvero JavaScript che "non si rompe"
TypeScript, ovvero JavaScript che "non si rompe"
 
Ecdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTEcdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICT
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
 

Corso Python 2020 - Lezione 2

  • 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
  • 14. Espressioni Booleane Espressioni Booleane Esercizi bool(ciao) Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
  • 15. Espressioni Booleane Espressioni Booleane Esercizi bool(ciao) True Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
  • 16. Espressioni Booleane Espressioni Booleane Esercizi bool(ciao) True bool (0) Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
  • 17. Espressioni Booleane Espressioni Booleane Esercizi bool(ciao) True bool (0) False Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
  • 18. Espressioni Booleane Espressioni Booleane Esercizi bool(ciao) True bool (0) False bool ([0]) Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
  • 19. Espressioni Booleane Espressioni Booleane Esercizi bool(ciao) True bool (0) False bool ([0]) True Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
  • 20. Espressioni Booleane Espressioni Booleane Esercizi bool(ciao) True bool (0) False bool ([0]) True bool(1 and stringa) Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 58
  • 21. Espressioni Booleane Espressioni Booleane Esercizi bool(ciao) True bool (0) False bool ([0]) True bool(1 and stringa) True Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 10 / 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
  • 59. 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) Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 37 / 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
  • 85. File File Esempio spesa.txt Pane 3Acqua 2 Fragole 6 Insalata Riccardo (Collegio don Mazza) Corso di Python 06 Aprile 2020 56 / 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