# vannmengde - input - sjekk at det er et tall? # meny - A for lag kaffe, B for fyll p? vann etc. # klasser: # ActionList som lister opp alternativer, lar bruker velge, og returnerer valget class ActionList: def __init__(self, choices): self._choices = dict(choices) def _list_options(self): print() for key in self._choices: choice_text = self._choices[key] print(f"Trykk {key} for ? {choice_text}") print() def _check_input(self, user_input): # input() produserer alltid str return user_input in self._choices # sjekker om user_input er en n?kkel def get_input(self): self._list_options() input_OK = False while not input_OK: # gj?r om det brukeren skriver til stor bokstav user_input = input("Skriv inn ditt valg her: ").upper() input_OK = self._check_input(user_input) if not input_OK: print() print("Ugyldig valg - velg et gyldig alternativ") else: return user_input # NOTE: Ikke i forelesningen - henter ut teksten fra ordboken def hent_tekst(self, key): if key in self._choices: return self._choices[key] else: return "gj?re ingenting (ugyldig key)" class Kaffemaskin: def __init__(self, kapasitet): self._kapasitet = kapasitet self._vann = self._kapasitet def lag(self, vann_som_trengs): if self._vann >= vann_som_trengs: self._vann -= vann_som_trengs return True else: return False def fyll_p?(self): print() user_input = input("Hvor mye vann vil du fylle p?: ") print() # NOTE: Ikke i forelesningen - sjekket om user_input er et tall if not user_input.isnumeric(): print("FEIL: Du m? angi et tall!") else: nytt_vann = int(user_input) if self._vann + nytt_vann > self._kapasitet: print("OVERSV?MMELSE!") self._vann = self._kapasitet elif self._vann <= 0: print("FEIL: Du m? angi et positivt tall!") else: self._vann += nytt_vann # NOTE: Ikke i forelesningen - viser hvor mye vann som er igjen def print_vann(self): print() print(f"Det er n? {self._vann} / {self._kapasitet} liter vann i maskinen!") kaffelars = Kaffemaskin(10) al = ActionList({ "A": "lage kaffe", "B": "fylle p? vann", "C": "avslutte" }) avslutt = False while not avslutt: kaffelars.print_vann() svar = al.get_input() if svar == "A": al2 = ActionList({ "E": "lage espresso", "O": "lage kaffekopp", "A": "lage kaffekanne" }) svar2 = al2.get_input() if svar2 == "E": ok = kaffelars.lag(1) elif svar2 == "O": ok = kaffelars.lag(3) else: # "A" ok = kaffelars.lag(9) if ok: # NOTE: Ikke i forelesningen - skriver ut hva vi gjorde og ikke bare bokstaven gj?re_noe = al2.hent_tekst(svar2) print() print(f"Lyktes med ? {gj?re_noe}!") else: print() print("Tomt for vann!") elif svar == "B": kaffelars.fyll_p?() else: # "C" avslutt = True print()