Strutture miste 2 - Challenges

Scarica zip esercizi

Naviga file online

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):

  1. Calcola il totale già ricevuto e il totale da ricevere ancora

  2. 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']]