|
@@ -0,0 +1,123 @@
|
|
|
+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()
|