class Tenta(): def __init__(self, bonus, poänglista): self.__bonus = bonus #Bonuspoäng 0-10 self.__poäng = poänglista #Lista med poäng på de 8 uppgifterna self.__totalpoäng = self.beräknaTotalpoäng() #Totala poängen (inkl bonus) self.__betyg = self.beräknaBetyg() #Tentabetyget A..F def bonus(self): "Åtkomstmetod" return self.__bonus def nyBonus(self, nytt): "Ändringsmetod" self.__bonus = nytt def __str__(self): s = str(self.__bonus) + str(self.__poäng) + str(self.__totalpoäng) + self.__betyg return s def __lt__(self, other): """True om min totalpoäng är större än den andra, False annars. Används av listans sort-metod""" if self.__totalpoäng < other.__totalpoäng: return True else: return False def visa(self): print("Summa = ", self.__totalpoäng, " Betyg: ", self.__betyg) def poängsumma(self): summa = 0 for poäng in self.__poäng: summa += poäng return summa def beräknaTotalpoäng(self): totalpoäng = self.poängsumma() + self.__bonus return totalpoäng def beräknaBetyg(self): """Beräknar tentabetyget, skala A..F""" total = self.__totalpoäng if total >= 90: betyg = "A" elif total >= 80: betyg = "B" elif total >= 70: betyg = "C" elif total >= 60: betyg = "D" elif total >= 50: betyg = "E" elif total >= 47: betyg = "Fx" else: betyg = "F" return betyg def str2int(sträng): """Konverterar en sträng med tal till en lista med heltal""" lista = sträng.split() tallista = [int(tal) for tal in lista] return tallista def visaTentor(tentorna): for t in tentorna: t.visa() def main(): infil = open("tentapoäng.txt","r") infil.readline() #Läser bort rubriken tentorna = [] for rad in infil: lista = rad.split("/") bonus = int(lista[0]) stränglista = lista[1] poänglista = str2int(stränglista) t = Tenta(bonus, poänglista) tentorna.append(t) print("Före sortering") visaTentor(tentorna) tentorna.sort() print("\nEfter sortering") visaTentor(tentorna) main()