magazzino.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. def prodotto_caro(magazzino):
  2. # Queste variabili conterranno il prodotto con
  3. # il prezzo piu' alto. prodotto_caro e' inizializzato
  4. # ad un valore nullo.
  5. prodotto_caro = None
  6. prezzo_massimo = 0
  7. # Cicliamo su tutti i prodotti nel magazzino
  8. for prodotto in magazzino:
  9. # Se il prezzo del prodotto attuale e' piu' alto
  10. # di quello trovato precedentemente lo sostituiamo
  11. if prodotto["prezzo"] > prezzo_massimo:
  12. prezzo_massimo = prodotto["prezzo"]
  13. prodotto_caro = prodotto
  14. # Controlliamo di aver trovato almeno un prodotto
  15. if prodotto_caro != None:
  16. return [prodotto_caro["nome"], prodotto_caro["prezzo"]]
  17. else:
  18. return ["non trovato", 0]
  19. def valore_magazzino(magazzino):
  20. # Variabile che conterra' la somma parziale dei
  21. # prezzi del prodotto
  22. accumulatore = 0
  23. # Cicliamo su tutti i prodotti nel magazzino
  24. for prodotto in magazzino:
  25. # Se il prodotto ha disponibilita', accumuliamo il suo
  26. # prezzo nella variabile accumulatore
  27. if prodotto["disponibile"] == True:
  28. accumulatore = accumulatore + prodotto["prezzo"]
  29. return accumulatore
  30. from csv import writer
  31. def salva_magazzino(magazzino, nome_file):
  32. print("Sto salvando il magazzino sul file " + nome_file)
  33. # Apriamo il file in scrittura e creiamo un oggetto csv
  34. output_file = open(nome_file, "w")
  35. csv_writer = writer(output_file)
  36. # Scriviamo nel file l'intestazione del csv
  37. csv_writer.writerow(["nome", "prezzo", "disponibile"])
  38. # Per tutti i prodotti in magazzino, serializziamoli
  39. # nel csv
  40. for prodotto in magazzino:
  41. lista_riga = [prodotto["nome"], prodotto["prezzo"], prodotto["disponibile"]]
  42. csv_writer.writerow(lista_riga)
  43. # Rircordiamoci di chiudere il file
  44. output_file.close()
  45. def magazzini_uguali(magazzino1, magazzino2):
  46. # Calcoliamo la dimensione dei due magazzini
  47. dim_mag1 = len(magazzino1)
  48. dim_mag2 = len(magazzino2)
  49. # Se le dimensioni dei magazzini differiscono i magazzini
  50. # non saranno uguali
  51. if dim_mag1 != dim_mag2:
  52. return False
  53. else:
  54. # Utilizziamo un indice di posizione per scorrere
  55. # sui magazzini in sincronia
  56. for i in range(0, dim_mag1):
  57. nome1 = magazzino1[i]["nome"]
  58. nome2 = magazzino2[i]["nome"]
  59. prezzo1 = magazzino1[i]["prezzo"]
  60. prezzo2 = magazzino2[i]["prezzo"]
  61. # Al primo prodotto per il quale non
  62. # corrispondono il nome o il prezzo restituiamo falso
  63. if nome1 != nome2 or prezzo1 != prezzo2:
  64. return False
  65. # Se siamo arrivati fin qui, significa che i magazzini erano
  66. # uguali
  67. return True
  68. # Questo main ci permette di testare le funzioni fino ad ora definite
  69. def main():
  70. # Definiamo una semplice istanza di magazzino
  71. carta = {"nome" : "carta", "prezzo" : 3, "disponibile" : True}
  72. penna = {"nome" : "penna", "prezzo" : 5, "disponibile" : True}
  73. gomma = {"nome" : "gomma", "prezzo" : 1, "disponibile" : False}
  74. istanza_mag = [carta, penna, gomma]
  75. # Invochiamo le funzioni definite precedentemente per testarle
  76. print("Il prodotto piu' caro presente in magazzino:")
  77. print(prodotto_caro(istanza_mag))
  78. print("")
  79. print("La somma dei prezzi disponibili nel magazzino:")
  80. print(valore_magazzino(istanza_mag))
  81. print("")
  82. print("Salviamo ora il magazzino")
  83. salva_magazzino(istanza_mag, "magazzino.csv")
  84. print("")
  85. print("Confrontiamo il magazzino con se stesso")
  86. print(magazzini_uguali(istanza_mag, istanza_mag))
  87. istanza_mag2 = [carta, penna]
  88. print("Confrontiamo due magazzini diversi")
  89. print(magazzini_uguali(istanza_mag, istanza_mag2))
  90. gomma_disp = {"nome" : "gomma", "prezzo" : 1, "disponibile" : True}
  91. istanza_mag3 = [carta, penna, gomma_disp]
  92. print("Confrontiamo due magazzini che devono essere uguali")
  93. print(magazzini_uguali(istanza_mag, istanza_mag3))
  94. penna_stilografica = {"nome" : "penna", "prezzo" : 8, "disponibile" : True}
  95. istanza_mag4 = [carta, penna_stilografica, gomma]
  96. print("Confrontiamo due magazzini che sono diversi")
  97. print(magazzini_uguali(istanza_mag, istanza_mag4))
  98. main()