Esercitazione 9

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

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


Dizionario dei quadrati

Scrivete una funzione dict_quadrati(n) che:

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.

d = dict_quadrati(4)
print(d)
d = dict_quadrati(10)
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


Crea un dizionario da una lista di chiavi e una lista di valori

Scrivi una funzione dict_da_liste(k_list, v_list) che:

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


Azzera valori in dizionario

Scrivete una funzione dict_azzera(d, lista_chiavi) che:

Ad esempio:

diz = {'dog': 3, 'cat': 9, 'mouse': 2, 'fish': -3}
lista = ['dog', 'mouse']
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


Somma i valori associati a chiavi minori di k

Scrivi una funzione dict_somma_chiavi_piccole(d, soglia) che:

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:

d = {"Mario": 1000, "Gianna" : 8000, "Alberto": 4000}

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


Verifica che le chiavi di un dizionario siano brevi

Scrivi una funzione dict_verifica_chiavi_corte(d, soglia) che:

Si può assumere che tutte le chiavi nel dizionario siano stringhe.

Per esempio:

d = {"Mario": 1000, "Gianna" : 8000, "Alberto": 4000}

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


Restituire il valore associato alla massima chiave

Scrivete una funzione dict_max_chiave(d) che:

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:

diz = {'xx': 44, 'yy': 33, 'zz': 22}
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


Rimuovere chiavi da un dizionario

Scrivete una funzione dict_rimuovi(d, lista_chiavi) che:

Ad esempio:

diz = {'dog': 'cane', 'cat': 'gatto', 'mouse': 'topo', 'fish': 'pesce'}
lista = ['dog', 'mouse']
diz_1 = dict_rimuovi(diz, lista)
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


Verifica se due dizionari contengono le stesse chiavi

Scrivete una funzione dict_stesse_chiavi(d1, d2) che:

Ad esempio:

diz_a = {'xx': 22, 'yy': 33, 'zz': 22}
diz_b = {'xx': 18, 'yy': 45, 'zz': 22}
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


Unione di due dizionari

Scrivi una funzione dict_unione(d1, d2) che:

Per esempio:

d1 = {"gennaio": 10000, "febbraio" : 8000, "marzo": 4000}
d2 = {"gennaio": 3000, "aprile" : 2000, "maggio": 1000}

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


Dizionario da stringa

Scrivete una funzione dict_da_stringa_parole(stringa) che:

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.

d = dict_da_stringa_parole("dog cane cat gatto mouse topo")
print(d)
d = dict_da_stringa_parole("123 numero_grande 8 numero_piccolo")
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