class Onske: def __init__(self, beskrivelse, antall, minimumspris): self._beskrivelse = beskrivelse self._antall = antall self._minimumspris = minimumspris def passer(self, makspris): if self._antall != 0 and self._minimumspris < makspris: return True return False def valgt(self): self._antall -= 1 return self._beskrivelse def __str__(self): return f"{self._beskrivelse} minimumspris: {self._minimumspris}" class Onskeliste: def __init__(self): self._onsker = [] def nytt_onske(self, beskrivelse, antall, minimumspris): nytt_onske = Onske(beskrivelse, antall, minimumspris) self._onsker.append(nytt_onske) def hent_onsker(self, makspris): valgbare_onske = [] for onske in self._onsker: if onske.passer(makspris): valgbare_onske.append(str(onske)) else: valgbare_onske.append(f"{onske} Ikke valgbart ?nkse") return valgbare_onske def onske_oppfylles(self, indeks): valgt_onske = self._onsker[indeks] return valgt_onske.valgt() class Gave: def __init__(self, beskrivelse, giver): self._beskrivelse = beskrivelse self._giver = giver def __str__(self): return f"{self._beskrivelse}, {self._giver}" class Juleferiekalender: def __init__(self, antall_dager): self._kalender = {} self._dagnr = 25 self._antall_dager = antall_dager for i in range(antall_dager): if self._dagnr <= 31: self._kalender[self._dagnr] = None else: self._kalender[self._dagnr - 31] = None self._dagnr += 1 def ny_gave(self, beskrivelse, giver, dagnummer): self._kalender[dagnummer] = Gave(beskrivelse, giver) def hent_dagens_gave(self, dagnummer): if dagnummer >= 25: dato_streng = f"{dagnummer}.desember" else: dato_streng = f"{dagnummer}.januar" if self._kalender[dagnummer] is not None: return dato_streng + str(self._kalender[dagnummer]) else: return dato_streng + "Ingen gave denne dagen" def hent_ant_dager(self): return self._antall_dager class Julegavefikser: def __init__(self, antall_dager): self._onskeliste = Onskeliste() self._kalender = Juleferiekalender(antall_dager) self._neste_dag = 25 def les_onsker_fra_fil(self, filnavn): fil = open(filnavn, "r") for linje in fil: deler = linje.strip().split(";") beskrivelse = deler[0] antall = int(deler[1]) minimumspris = int(deler[2]) self._onskeliste.nytt_onske(beskrivelse, antall, minimumspris) def velg_gave(self): giver = input("Navn: ") makspris = int(input("Makspris: "))