# 4a) class Abonnent: def __init__(self, ab_navn, pref): self._ab_navn = ab_navn self._preferanser = pref self._p?begynt = {} def hent_preferanser(self): return self._preferanser def sjekk_om_sett(self, serienavn): return serienavn in self._p?begynt def se_en_episode(self, serienavn): if self.sjekk_om_sett(serienavn): self._p?begynt[serienavn] += 1 else: self._p?begynt[serienavn] = 1 # 4b) 4 poeng class Serie: def __init__(self, serienavn): self._serienavn = serienavn self._episoder = {} self._serietager = {} self._les_fra_fil() # 4c) 10 poeng def _les_fra_fil(self): fil = open(self._serienavn+".txt", "r") for linje in fil: tager = linje.strip().split() for tag in tager: if tag not in self._serietager: self._serietager[tag] = 1 else: self._serietager[tag] += 1 self._episoder[len(self._episoder)+1] = tager fil.close() def hent_serietager(self): serietag_liste = [] for tag in self._serietager: serietag_liste.append(tag) return serietag_liste # 4f) 5 poeng def beregn_match(self, preferanser): match = 0 for tag in preferanser: if tag in self._serietager: match += self._serietager[tag]*preferanser[tag] return match # 4d) 10 poeng class Tjeneste: def __init__(self, serienavn): self._serier = {} self._tager_i_bruk = [] self._abonnenter = {} for navn in serienavn: ny_serie = Serie(navn) self._serier[navn] = ny_serie tager = ny_serie.hent_serietager() for tag in tager: if tag not in self._tager_i_bruk: self._tager_i_bruk.append(tag) def ny_abonnent(self): navn = input("Oppgi abonnent-navn: ") preferanser = {} print("Oppgi preferanser for en og en tag: 1 (liker), 0 (n?ytral) eller -1 (misliker).") for tag in self._tager_i_bruk: pref = input(tag + ": ") while pref not in ["-1", "0", "1"]: print ("Ulovlig verdi!") pref = input(tag + ": ") if pref != "0": preferanser[tag] = int(pref) self._abonnenter[navn] = Abonnent(navn, preferanser) # 4g) def foresl?_serier(self, ab_navn): ab = self._abonnenter[ab_navn] forslag = [] for serienavn in self._serier: serie = self._serier[serienavn] match = serie.beregn_match(ab.hent_preferanser()) if not ab.sjekk_om_sett(serienavn) and match > 0: forslag.append(serienavn) if len(forslag) == 0: print("Ingen serier kan anbefales for " + ab_navn + ".") else: print("Forslag til serier for " + ab_navn + " :") for snavn in forslag: print(snavn)