from sys import exit def carica_prodotti(filename: str): try: fio = open(filename, "r") prodotti = dict() for line in fio: line = line.strip().split() prodotti[line[0]] = line[1] fio.close() return prodotti except FileNotFoundError: exit("Errore! Il file", filename, "non è stato trovato!") def carica_acquisti(filename: str, prodotti: dict): try: fio = open(filename, "r") prodotti_sospetti = dict() for line in fio: line = line.strip().split() prodotto = line[0] rivenditore = line[1] if prodotto not in prodotti: print("Attenzione! il prodotto", prodotto, "non esiste") continue if prodotto not in prodotti_sospetti: prodotti_sospetti[prodotto] = [] prodotti_sospetti[prodotto].append(rivenditore) fio.close() return prodotti_sospetti except FileNotFoundError: exit("Errore! Il file", filename, "non è stato trovato!") def controlla_acquisti(prodotti: dict, acquisti: dict): prodotti_sospetti = dict() for prodotto in acquisti: if len(acquisti[prodotto]) > 1 or (len(acquisti[prodotto]) == 1 and acquisti[prodotto][0] != prodotti[prodotto]): prodotti_sospetti[prodotto] = acquisti[prodotto] return prodotti_sospetti def stampa_prodotti_sospetti(prodotti: dict, prodotti_sospetti: dict): print("Elenco transazioni sospette") for prodotto in prodotti_sospetti: print("Codice prodotto:", prodotto) print("Rivenditore ufficiale:", prodotti[prodotto]) print("Lista rivenditori:", " ".join(prodotti_sospetti[prodotto])) print() def main(): prodotti = carica_prodotti("prodotti.txt") acquisti = carica_acquisti("acquisti.txt", prodotti) sospetti = controlla_acquisti(prodotti, acquisti) stampa_prodotti_sospetti(prodotti, sospetti) if __name__ == '__main__': main()