Lo scopo del laboratorio è di esercitarsi e misurare la propria preparazione: gli esercizi non sono troppo difficili, se si sono seguite le lezioni. Non vi viene comunque messo alcun voto.
Modalità di lavoro: gli studenti devono lavorare in autonomia o in piccoli gruppi, senza disturbare i colleghi. Il lavoro di gruppo è fruttuoso solo se tutti partecipano e se ognuno scrive una propria soluzione per tutti gli esercizi.
Il docente cercherà per quanto possibile di non occupare il tempo del laboratorio per introdurre materiale nuovo, anche se a volte questo sarà necessario. Il docente è a disposizione per aiutare gli studenti, che possono iniziare a lavorare anche prima che il docente arrivi in aula, se lo desiderano
Raccomandazioni: leggete bene il testo degli esercizi prima di chiedere chiarimenti. In ogni caso sarò in aula con voi.
Uso dei file di test: per aiutarvi a completare questa esercitazione avete a disposizione dei programmi di test per testare la vostra soluzione. Questi sono simili a quelli che avrete in sede di esame, pertanto vi consiglio di imparate ad usarli. Per portare a termine l’esercizio è necessario
python3 <fileditest>
dove <fileditest>
va ovviamente sostituito con il
nome del file di test appropriato per l’esercizio su cui state
lavorando. Per ogni esercizio ci sta un file di test indipendente, così
da poter lavorare sugli esercizi uno alla volta con più agio.
Il risultato di ogni test è una schermata (o più schermate) nella quale si mostra:
Per ogni funzione scritta vengono eseguite chiamate con diversi valori dei parametri. L’esito dei test viene riportato con il carattere
E
se la chiamata non può essere eseguita,F
se la funzione non restituisce il risultato
corretto,.
se la funzione restituisce il risultato
corretto.Scrivete una funzione dict_quadrati(n)
che:
TypeError
se l’argomento non è un
intero;ValueError
se l’argomento è
negativo;dict
che ha come chiavi gli
interi da 1 a n
(inclusi), in cui alla chiave
i
è associato il valore i^2
, per
i
che va da 1 a n
.d = dict_quadrati(4)
deve assegnare a d
il
dict {1: 1, 2: 4, 3: 9, 4: 16}
.
Se l’argomento è 0
deve essere restituito il dict
vuoto.
= dict_quadrati(4)
d print(d)
= dict_quadrati(10)
d print(d)
{1: 1, 2: 4, 3: 9, 4: 16}
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
Il programma Python deve essere salvato nel file:
dict_quadrati.py
File di test: test_dict_quadrati.py
Scrivi una funzione dict_da_liste(k_list, v_list)
che:
k_list
e
v_list
di uguale lunghezza;dict
le cui chiavi sono prese dagli
elementi di k_list
e i cui valori sono presi dagli elementi
di v_list
. L’elemento v_list[0]
sarò associato
alla chiave k_list[0]
,l’elemento v_list[1]
sarà associato alla chiave k_list[1]
e così via.Per esempio:
print(dict_da_liste(["cat", "dog", "mouse"],
"gatto", "cane", "topo"])) [
{'cat': 'gatto', 'dog': 'cane', 'mouse': 'topo'}
Il programma Python deve essere salvato nel file:
dict_da_liste.py
File di test: test_dict_da_liste.py
Scrivete una funzione dict_azzera(d, lista_chiavi)
che:
Ad esempio:
= {'dog': 3, 'cat': 9, 'mouse': 2, 'fish': -3}
diz = ['dog', 'mouse']
lista
dict_azzera(diz, lista)print(diz)
{'dog': 0, 'cat': 9, 'mouse': 0, 'fish': -3}
Il programma Python deve essere salvato nel file:
dict_azzera.py
File di test: test_dict_azzera.py
Scrivi una funzione dict_somma_chiavi_piccole(d, soglia)
che:
d
con valori
numerici e una chiave soglia
;soglia
.Si può assumere che i valori nel dizionario siano tutti numerici. Se
il dizionario è vuoto o non contiene chiavi minori di
soglia
la funzione deve restituire 0.
Per esempio:
= {"Mario": 1000, "Gianna" : 8000, "Alberto": 4000}
d
print(dict_somma_chiavi_piccole(d, "Lucia"))
12000
Il programma Python deve essere salvato nel file:
dict_somma_chiavi_piccole.py
File di test: test_dict_somma_chiavi_piccole.py
Scrivi una funzione
dict_verifica_chiavi_corte(d, soglia)
che:
d
con chiavi di
tipo str
e un intero soglia
;True
se tutte le chiavi hanno lunghezza
minore o uguale alla soglia
, restituisce False
altrimenti.Si può assumere che tutte le chiavi nel dizionario siano stringhe.
Per esempio:
= {"Mario": 1000, "Gianna" : 8000, "Alberto": 4000}
d
print(dict_verifica_chiavi_corte(d, 6))
False
Il programma Python deve essere salvato nel file:
dict_verifica_chiavi_corte.py
File di test: test_dict_verifica_chiavi_corte.py
Scrivete una funzione dict_max_chiave(d)
che:
d
.Si può assumere che il dizionario contenga almeno una chiave.
Per ottenere la chiave massima si può utilizzare la funzione max(....)
, che restituisce il massimo tra gli elementi dell'oggetto passato come parametro. Sperimentare l'uso della funzione max(...)
dando come parametro o l'insieme delle chiavi del dizionario (metodo .keys()
) oppure direttamente il dizionario.
Ad esempio:
= {'xx': 44, 'yy': 33, 'zz': 22}
diz print(dict_max_chiave(diz))
22
Il programma Python deve essere salvato nel file:
dict_max_chiave.py
File di test: test_dict_max_chiave.py
Scrivete una funzione dict_rimuovi(d, lista_chiavi)
che:
dict
, che contiene solo le
chiavi, insieme ai rispettivi valori, che non appartengono a
lista_chiavi.Ad esempio:
= {'dog': 'cane', 'cat': 'gatto', 'mouse': 'topo', 'fish': 'pesce'}
diz = ['dog', 'mouse']
lista = dict_rimuovi(diz, lista)
diz_1 print(diz_1)
{'cat': 'gatto', 'fish': 'pesce'}
Il programma Python deve essere salvato nel file:
dict_rimuovi.py
File di test: test_dict_rimuovi.py
Scrivete una funzione dict_stesse_chiavi(d1, d2)
che:
True
se i due dizionari contengono
esattamente le stesse chiavi, False
altrimenti.Ad esempio:
= {'xx': 22, 'yy': 33, 'zz': 22}
diz_a = {'xx': 18, 'yy': 45, 'zz': 22}
diz_b print(dict_stesse_chiavi(diz_a, diz_b))
True
Il programma Python deve essere salvato nel file:
dict_stesse_chiavi.py
File di test: test_dict_stesse_chiavi.py
Scrivi una funzione dict_unione(d1, d2)
che:
d1
e
d2
con valori numerici;dict
le cui chiavi sono prese dalle
chiavi di d1
e le chiavi di d2
. Se una chiave
è presente solo in d1
o solo in d2
il valore
associato sarà riportato nel dizionario risultato. Se una chiave è
presente sia in d1
che in d2
il valore
associato nel risultato sarà la somma dei valori nei dizionari di
partenza.Per esempio:
= {"gennaio": 10000, "febbraio" : 8000, "marzo": 4000}
d1 = {"gennaio": 3000, "aprile" : 2000, "maggio": 1000}
d2
print(dict_unione(d1, d2))
{'gennaio': 13000, 'febbraio': 8000, 'marzo': 4000, 'aprile': 2000, 'maggio': 1000}
Il programma Python deve essere salvato nel file:
dict_unione.py
File di test: test_dict_unione.py
Scrivete una funzione dict_da_stringa_parole(stringa)
che:
dict
, ottenuto prendendo le
parole di posto pari (iniziando da 0) come chiavi, e le parole di posto
dispari come valori.Una stringa s
può essere spezzata in porzioni in
corrispondenza degli spazi attraverso il metodo s.split()
,
che restituisce una lista in cui ciascun elemento è una delle porzioni
della stringa s
delimitate da spazi.
Ad esempio, l’istruzione
s = dict_da_stringa_parole("dog cane cat gatto mouse topo")
deve assegnare a s
il dict
{'dog': 'cane', 'cat': 'gatto', 'mouse': 'topo'}
.
Se la stringa non contiene alcuna parola la funzione deve restituire un dict vuoto.
= dict_da_stringa_parole("dog cane cat gatto mouse topo")
d print(d)
= dict_da_stringa_parole("123 numero_grande 8 numero_piccolo")
d print(d)
{'dog': 'cane', 'cat': 'gatto', 'mouse': 'topo'}
{'123': 'numero_grande', '8': 'numero_piccolo'}
Il programma Python deve essere salvato nel file:
dict_da_stringa_parole.py
File di test: test_dict_da_stringa_parole.py