68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
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()
|
|
|
|
|