class Rett: def __init__(self, navn: str, pris: float, n?ringsstoffer: list[str]) -> None: self._navn = navn self._pris = pris self._n?ringsstoffer = n?ringsstoffer def sjekkInnholdOK(self, innholdsstoffer: list[str]) -> bool: for stoff in innholdsstoffer: if stoff in self._n?ringsstoffer: return False return True def __str__(self) -> str: return f"Rett({self._navn} {self._pris} kr {self._n?ringsstoffer})" class Kategori: def __init__(self, navn: str, retter: list[Rett]) -> None: self._navn = navn self._retter = retter def hent_retter(self) -> list[Rett]: return self._retter def hentOkRetter(self, innholdsstoffer: list[str]) -> list[Rett]: nye_retter = [] for rett in self._retter: if rett.sjekkInnholdOK(innholdsstoffer) == True: nye_retter.append(rett) return nye_retter class Meny: def __init__(self, kategorier: list[str]) -> None: self._kategorier = {} for kategori in kategorier: k = self._lesKategoriFil(kategori + ".txt") self._kategorier[kategori] = k # Trenger ikke implementere def _lesKategoriFil(self, filnavn: str) -> Kategori: pass def hentRedusertMeny(self, innholdsstoffer: list[str]) -> dict[str, Kategori]: ny_meny = {} # kategori_navn -> Kategori for kategori_navn in self._kategorier: kategori = self._kategorier[kategori_navn] nye_retter = kategori.hentOkRetter(innholdsstoffer) if len(nye_retter) > 0: ny_kategori = Kategori(kategori_navn, nye_retter) ny_meny[kategori_navn] = ny_kategori return ny_meny class Kunde: def __init__(self, tlf_nr: str, innholdsstoffer: list[str]) -> None: self._tlf_nr = tlf_nr self._innholdsstoffer = innholdsstoffer def velgRetter(self, meny: Meny) -> list[str]: redusert_meny = meny.hentRedusertMeny(self._innholdsstoffer) valg_liste = [] print("Her er den reduserte menyen") for kat in redusert_meny: print(kat + ":") for rett in redusert_meny[kat].hent_retter(): print(rett) valg = input("Hvilke av disse ?nsker du? (trykkk enter for ? hoppe over kategori)\n>").strip() if valg != "": valg_liste.append(valg) return valg_liste class TakeAway: def __init__(self, kategorinavn: list[str], kundefil: str) -> None: pass # Trenger ikke implementere def _lesKundefil(self, filnavn: str): pass def betjenKunde(self, tlf_nr: str): pass def _lagOgLeverMat(self, bestilling: list[str]) -> None: pass