#Visar hur referenser fungerar 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 __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änglista): """Konverterar en lista med strängar till en lista med heltal""" lista = stränglista.split() tallista = [] for s in lista: p = int(s) tallista.append(p) return tallista def visaTentor(tentorna): for t in tentorna: t.visa() def main(): infil = open("tentapoäng.txt","r") infil.readline() 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) sorterat = tentorna #sorterat blir bara en referens - inte en kopia sorterat.sort() print("tentorna") visaTentor(tentorna) print("\nsorterat") visaTentor(sorterat) main()