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()