Sera a tutti, ho provato a creare una sorta di programma che funge da inventario per mettere alla prova la mia conoscenza sulle Classi, il codice è questo:
Vorrei sapere se c'è un modo per salvare il contenuto dell'inventario su un file di testo così da riaverlo una volta chiuso e riaperto il programma.
Sarei anche grato se mi poteste dare qualche consiglio su come migliorare o velocizzare parti del codice.
Grazie mille come sempre!!
Python:
class Inventario():
def __init__(self):
self.inventario = {}
def add_item(self, product_id, product_name, product_quantity):
quantity = int(product_quantity)
if product_id in self.inventario:
product = self.inventario[product_id]
print('Prodotto già registrato!\n')
print(f"ID: {product_id}\t\tNome: {product['Nome']}\t\tQuantità: {product['Quantità']})")
else:
self.inventario[product_id] = {'Nome': product_name, 'Quantità': quantity}
print('Prodotto aggiunto correttamente!')
def remove_item(self, product_id):
if product_id in self.inventario:
product = self.inventario[product_id]
self.inventario.pop(product_id)
print(f"{product['Nome']}, ID: {product_id}\t è stato rimosso correttamente!")
else:
print('Prodotto non trovato!')
def change_quantity(self, product_id, quantity):
valor = int(quantity)
if product_id in self.inventario:
product = self.inventario[product_id]
product['Quantità'] = valor
print(f"ID: {product_id}\t\tNome: {product['Nome']}\t\tQuantità: {product['Quantità']}")
else:
print('Prodotto non trovato!')
def add_quantity(self, product_id, quantity):
valor = int(quantity)
if product_id in self.inventario:
product = self.inventario[product_id]
product['Quantità'] += valor
else:
print('Prodotto non trovato!')
def remove_quantity(self, product_id, quantity):
valor = int(quantity)
if product_id in self.inventario:
product = self.inventario[product_id]
if product['Quantità'] == 0:
print('Prodotto esaurito!')
elif product['Quantità'] - valor < 0:
print('Quantità non sufficente!')
print(f"Quantità disponibile: {product['Quantità']}")
else:
product['Quantità'] -= valor
else:
print('Prodotto non trovato!')
def show_all_products(self):
if len(self.inventario) >= 1:
for i in self.inventario:
print(f"ID: {i}\t\tNome: {self.inventario[i]['Nome']}\t\tQuantità: {self.inventario[i]['Quantità']}")
elif len(self.inventario) < 1:
print('Nessun prodotto registrato!')
def start(inventario: Inventario):
print('\n\t\t*** INVENTARIO ***\n\n')
print("""
1) Mostra prodotti registrati
2) Aggiungi prodotto
3) Rimuovi prodotto
4) Modifica quantità prodotto
5) Aggiungi pezzi
6) Rimuovi pezzi
""")
scelta = input('> ')
try:
if scelta == '1':
inventario.show_all_products()
if scelta == '2':
try:
codice = int(input('Inserisci codice prodotto: '))
except ValueError:
print('Valore non valido!')
return
try:
nome = str(input('Inserisci nome prodotto: '))
except ValueError:
print('Valore non valido!')
return
try:
quantità = int(input('Inserisci la quantità: '))
except ValueError:
print('Valore non valido!')
return
inventario.add_item(codice, nome, quantità)
if scelta == '3':
try:
codice = int(input('Inserisci codice prodotto da rimuovere: '))
except ValueError:
print('Valore non valido!')
if codice in inventario.inventario:
inventario.remove_item(codice)
else:
print('Prodotto non trovato!')
return
if scelta == '4':
try:
codice = int(input('Inserisci codice prodotto: '))
except ValueError:
print('Valore non valido!')
return
if codice in inventario.inventario:
try:
quantità = int(input('Inserisci la nuova quantità: '))
except ValueError:
print('Valore non valido!')
return
inventario.change_quantity(codice, quantità)
else:
print('Prodotto non trovato!')
return
if scelta == '5':
try:
codice = int(input('Inserisci codice prodotto: '))
except ValueError:
print('Valore non valido!')
return
if codice in inventario.inventario:
try:
quantità = int(input('Inserisci la quantità da aggiungere: '))
except ValueError:
print('Valore non valido!')
return
inventario.add_quantity(codice, quantità)
else:
print('Prodotto non trovato!')
return
if scelta == '6':
try:
codice = int(input('Inserisci codice prodotto: '))
except ValueError:
print('Valore non valido!')
return
if codice in inventario.inventario:
try:
quantità = int(input('Inserisci la quantità da rimuovere: '))
except ValueError:
print('Valore non valido!')
return
inventario.remove_quantity(codice, quantità)
else:
print('Prodotto non trovato!')
return
except ValueError:
print('Valore non valido!')
return
inventario = Inventario()
while True:
start(inventario)
Vorrei sapere se c'è un modo per salvare il contenuto dell'inventario su un file di testo così da riaverlo una volta chiuso e riaperto il programma.
Sarei anche grato se mi poteste dare qualche consiglio su come migliorare o velocizzare parti del codice.
Grazie mille come sempre!!