from typing import cast def loadFile(filename: str): in_file = open(filename, "r") items = {} for item in in_file: ispl = item.split() iname = ispl[0].strip() cost = float(ispl[1]) count = int(ispl[2]) items[iname] = [cost, count] in_file.close() return items def saveFile(filename: str, items: dict): out_file = open(filename, "w") for key in items: out_file.write(key + "\t" + str(items[key][0]) + "\t" + str(items[key][1]) + "\n") out_file.close() def handleCommand(items: dict): command = input("Inserisci un comando: ") if command == "XXXXXX": return False command = command.split() if len(command) != 2: print("Comando non valido!") return True key = command[0] op = command[1][0] try: delta = int(command[1][1:]) except ValueError: print("Valore numerico non valido") return True if key not in items: print("Il prodotto non è presente nel database!") return True if op != "+" and op != "-": print("Operazione non valida") return True oldVal = items[key][1] if op == "+": newVal = oldVal + delta if newVal > 10000: print("Quantità di prodotto superiore al valore massimo") return True items[key][1] = newVal print("Incrementa la quantità di prodotto", key, "di", delta) else: newVal = oldVal - delta if newVal < 0: print("Quantità di prodotto non disponibile") return True items[key][1] = newVal print("Decrementa la quantità di prodotto", key, "di", delta) print("Valore complessivo precedente:", oldVal) print("Valore complessivo attuale", newVal) return True def main(): in_file_name = input("Inserisci il nome del vecchio file: ") try: items = loadFile(in_file_name) except FileNotFoundError: exit("Errore! File di input non trovato") except: exit("File di input malformato!") while handleCommand(items): pass out_file_name = input("Inserisci il nome del nuovo file: ") try: saveFile(out_file_name, items) except FileNotFoundError: exit("Errore! File di output non trovato") main()