import operator def calcola_punteggio(punteggi: list): punteggi_ordinati = sorted(punteggi, reverse=True) return float(punteggi_ordinati[0]) + float(punteggi_ordinati[1]) + float(punteggi_ordinati[3]) def leggi_file(filename: str): fio = open(filename, "r") prodotti = [] for line in fio: line = line.strip().split(" ") codice = line[0] categoria = line[1] costo = line[2] nazione = line[3] punteggio_totale = calcola_punteggio(line[4::]) prodotti.append({"codice": codice, "categoria": categoria, "costo": costo, "nazione": nazione, "punteggio": punteggio_totale}) fio.close() return prodotti def prodotto_vincente(prodotti: list): stati = {} # stato: punteggio categorie = {} # categoria: [codice, valore] prodotto_vincente = 0 for i in range(len(prodotti)): prodotto = prodotti[i] categoria = prodotto["categoria"] nazione = prodotto["nazione"] codice = prodotto["codice"] punteggio = prodotto["punteggio"] if punteggio > prodotti[prodotto_vincente]["punteggio"]: prodotto_vincente = i if categoria not in categorie or punteggio > categorie[categoria][1]: categorie[categoria] = [codice, punteggio] if nazione not in stati: stati[nazione] = punteggio else: stati[nazione] += punteggio stati = sorted(stati, key=operator.itemgetter(1)) print("Prodotto vincente", prodotti[prodotto_vincente]["codice"]) print("I primi tre stati vincenti sono: ", stati[0], stati[1], stati[2]) for categoria in categorie: print("Il vincitore della categoria", categoria, "รจ il prodotto", categorie[categoria][0]) def main(): prodotti = leggi_file("input.txt") prodotto_vincente(prodotti) main()