Strutture miste 2 - Challenges
Scarica zip esercizi
Proponiamo ora degli esercizi senza soluzione, accetti la sfida?
Sfida - Precariato ad Altomuro
✪✪ Requisiti: dizionari, liste, strutture composte
NOTA: Questo esercizio è simile alla sfida Precariato a Murabasso, con la differenza che usa una struttura dati più comoda.
Siamo nel 2020 e ANCHE per Gian Antonia da Torri di Altomuro il lavoro fisso è ormai un miraggio. Ogni mese si giostra tra vari lavoretti e, siccome è una persona un po’ più ordinata, tiene un registro di tutti i lavoretti part time ed occasionali che svolge per portare a casa la pagnotta.
A differenza di Pier Giorgio che usa liste di liste, Gian Antonia usa una lista di dizionari… Avrà maggior fortuna di Pier Giorgio?
I dati sono salvati un una lista di dizionari, in cui ogni elemento è così composto:
{"nome": "Pettinatura pitoni",
"valore": 1000,
"status": "pagato"}
Si sta sempre avvicinando il momento di compilare la dichiarazione dei redditi e Gian Antonia avrebbe bisogno di sapere quanti soldi ha incassato finora e quanti se ne deve ancora aspettare. In più le piacerebbe sapere quale è stato il lavoro più redditizio dell’anno (GIA’ PAGATO):
Calcola il totale già ricevuto e il totale da ricevere ancora
Trova il lavoro GIA’ PAGATO più redditizio
Esempio - dati:
lavori = [
{"nome": "Pettinatura pitoni", "valore": 1000, "status": "pagato"},
{"nome": "Straordinari in fonderia", "valore": 175.13, "status": "non pagato"},
{"nome": "Part time gelateria", "valore": 450, "status": "non pagato"},
{"nome": "Rendita investimenti", "valore": 500, "status": "pagato"},
{"nome": "Installazione artistica", "valore": 600, "status": "non pagato"},
{"nome": "Noleggio scarpe eleganti", "valore": 100, "status": "non pagato"}
]
Stampa:
1. Totale ricevuto: 1500
Totale da ricevere: 1325.13
2. Il lavoro più pagato finora è: Pettinatura pitoni
[1]:
lavori = [
{"nome": "Pettinatura pitoni", "valore": 1000, "status": "pagato"},
{"nome": "Straordinari in fonderia", "valore": 175.13, "status": "non pagato"},
{"nome": "Part time gelateria", "valore":450, "status": "non pagato"},
{"nome": "Rendita investimenti", "valore":500, "status": "pagato"},
{"nome": "Installazione artistica", "valore":600, "status": "non pagato"},
{"nome": "Noleggio scarpe eleganti", "valore":100, "status": "non pagato"}
]
# scrivi qui
Sfida - Ricerca di mercato
✪✪✪ Requisiti: dizionari, liste, strutture composte, liste di liste
Un’azienda intervista n
persone (a,b,c, ..), richiedendo a ciascuna di mettere in ordine di preferenza m
prodotti. Per prevenire distorsioni nella ricerca i prodotti sono marcati con generiche etichette (x,y,z,w…). Questi dati vengono raccolti in un dizionario che associa persone alle loro preferenze.
Scrivere una funzione ricme che RITORNA una NUOVA tabella n x m con i nomi delle persone in ordine alfabetico seguiti dalle loro preferenze
assumi che ogni persona esprima un numero di preferenze uguale
Esempio:
>>> ricme({'c':'xzwy',
'a':'yxzw',
'b':'zxwy'})
[['a', 'y', 'x', 'z', 'w'],
['b', 'z', 'x', 'w', 'y'],
['c', 'x', 'z', 'w', 'y']]
[2]:
def ricme(diz):
raise Exception('TODO IMPLEMENT ME !')
assert ricme({}) == []
assert ricme({'d':'q'}) == [['d','q']]
assert ricme({'d':'pq',
'e':'qp'}) == [['d','p','q'],
['e','q','p']]
assert ricme({'c':'xzwy',
'a':'yxzw',
'b':'zxwy'}) == [['a', 'y', 'x', 'z', 'w'],
['b', 'z', 'x', 'w', 'y'],
['c', 'x', 'z', 'w', 'y']]