def prodotto_caro(magazzino): # Queste variabili conterranno il prodotto con # il prezzo piu' alto. prodotto_caro e' inizializzato # ad un valore nullo. prodotto_caro = None prezzo_massimo = 0 # Cicliamo su tutti i prodotti nel magazzino for prodotto in magazzino: # Se il prezzo del prodotto attuale e' piu' alto # di quello trovato precedentemente lo sostituiamo if prodotto["prezzo"] > prezzo_massimo: prezzo_massimo = prodotto["prezzo"] prodotto_caro = prodotto # Controlliamo di aver trovato almeno un prodotto if prodotto_caro != None: return [prodotto_caro["nome"], prodotto_caro["prezzo"]] else: return ["non trovato", 0] def valore_magazzino(magazzino): # Variabile che conterra' la somma parziale dei # prezzi del prodotto accumulatore = 0 # Cicliamo su tutti i prodotti nel magazzino for prodotto in magazzino: # Se il prodotto ha disponibilita', accumuliamo il suo # prezzo nella variabile accumulatore if prodotto["disponibile"] == True: accumulatore = accumulatore + prodotto["prezzo"] return accumulatore from csv import writer def salva_magazzino(magazzino, nome_file): print("Sto salvando il magazzino sul file " + nome_file) # Apriamo il file in scrittura e creiamo un oggetto csv output_file = open(nome_file, "w") csv_writer = writer(output_file) # Scriviamo nel file l'intestazione del csv csv_writer.writerow(["nome", "prezzo", "disponibile"]) # Per tutti i prodotti in magazzino, serializziamoli # nel csv for prodotto in magazzino: lista_riga = [prodotto["nome"], prodotto["prezzo"], prodotto["disponibile"]] csv_writer.writerow(lista_riga) # Rircordiamoci di chiudere il file output_file.close() def magazzini_uguali(magazzino1, magazzino2): # Calcoliamo la dimensione dei due magazzini dim_mag1 = len(magazzino1) dim_mag2 = len(magazzino2) # Se le dimensioni dei magazzini differiscono i magazzini # non saranno uguali if dim_mag1 != dim_mag2: return False else: # Utilizziamo un indice di posizione per scorrere # sui magazzini in sincronia for i in range(0, dim_mag1): nome1 = magazzino1[i]["nome"] nome2 = magazzino2[i]["nome"] prezzo1 = magazzino1[i]["prezzo"] prezzo2 = magazzino2[i]["prezzo"] # Al primo prodotto per il quale non # corrispondono il nome o il prezzo restituiamo falso if nome1 != nome2 or prezzo1 != prezzo2: return False # Se siamo arrivati fin qui, significa che i magazzini erano # uguali return True # Questo main ci permette di testare le funzioni fino ad ora definite def main(): # Definiamo una semplice istanza di magazzino carta = {"nome" : "carta", "prezzo" : 3, "disponibile" : True} penna = {"nome" : "penna", "prezzo" : 5, "disponibile" : True} gomma = {"nome" : "gomma", "prezzo" : 1, "disponibile" : False} istanza_mag = [carta, penna, gomma] # Invochiamo le funzioni definite precedentemente per testarle print("Il prodotto piu' caro presente in magazzino:") print(prodotto_caro(istanza_mag)) print("") print("La somma dei prezzi disponibili nel magazzino:") print(valore_magazzino(istanza_mag)) print("") print("Salviamo ora il magazzino") salva_magazzino(istanza_mag, "magazzino.csv") print("") print("Confrontiamo il magazzino con se stesso") print(magazzini_uguali(istanza_mag, istanza_mag)) istanza_mag2 = [carta, penna] print("Confrontiamo due magazzini diversi") print(magazzini_uguali(istanza_mag, istanza_mag2)) gomma_disp = {"nome" : "gomma", "prezzo" : 1, "disponibile" : True} istanza_mag3 = [carta, penna, gomma_disp] print("Confrontiamo due magazzini che devono essere uguali") print(magazzini_uguali(istanza_mag, istanza_mag3)) penna_stilografica = {"nome" : "penna", "prezzo" : 8, "disponibile" : True} istanza_mag4 = [carta, penna_stilografica, gomma] print("Confrontiamo due magazzini che sono diversi") print(magazzini_uguali(istanza_mag, istanza_mag4)) main()