class Blomst: def __init__(self, art, hoyde): self._art = art self._hoyde = hoyde # naar en blomst oppettes saa har den statusen True, # altsaa at blomsten har det bra self._status = True # naar en blomst opprettes saa er det 0 # dager siden den ble vannet self._dagerSidenVanning = 0 def hentStatus(self): return self._status def skrivUtInfo(self): # lager en streng som skal inneholde info om blomsten string = "Art: " + self._art string += "\nHoyde: " + str(self._hoyde) # infoen vi legger til i strengen her avhenger av om blomsten har # det bra eller ikke if self._status: string += "\nBlomsten har det: Bra" else: string += "\nBlomsten har det: DÃ¥rlig" string += "\nDager siden vanning: " + str(self._dagerSidenVanning) # skriver ut vaar endelige string med informasjon til terminal print(string) def nesteDag(self): # naar vi kaller paa nesteDag() saa har det gaatt # en dag siden blomsten ble vannet saa vi legger til 1 # paa instansvariabelen vaar self._dagerSidenVanning += 1 # hvis det er over tre dager siden blomsten ble vannet # saa skal statusen til blomsten vaere daarlig if self._dagerSidenVanning > 3: self._status = False # hvis statusen til blomsten er bra, saa oekes hoyden # med 1 if self._status: self._hoyde += 1 def vann(self): # hvis det er mindre tre dager siden blomsten ble vannet saa # blir statusen til blomsten daarlig, siden vi ender opp med aa # vanne den for mye if self._dagerSidenVanning < 3: self._status = False # hvis ikke saa blir statusen bra else: self._status = True # siden vi naa har vannet blomsten saa settes instansvariabelen # _dagerSidenVanning til 0 self._dagerSidenVanning = 0 class Blomsterkasse: def __init__(self, bredde): self._bredde = bredde self._blomster = [] # listen med blomster fylles med None, # det representerer at det ikke ligger blomster # paa disse plassene i blomsterkassen for i in range(self._bredde): self._blomster.append(None) def plantBlomst(self, blomst): # vi itererer gjennom listen vaar for i in range(self._bredde): # og finner den forste plassen der det ikke # er en blomst ved aa sjekke om det som ligger paa denne # plassen er None if self._blomster[i] == None: # deretter "planter" vi blomsten her ved aa # sette denne plassen til aa peke paa blomsten # vi fikk inn som argument self._blomster[i] = blomst return True return False def vannAlleBlomster(self): # vi oensker aa vanne alle blomster og kan bruke # kalle paa deres egen metode vann() for blomst in self._blomster: # vi maa sjekke at det elementet vi henter ut faktisk # er en blomst og ikke None, slik at vi ikke forsoeker aa # kalle pa vann() paa None if blomst is not None: blomst.vann() def nesteDag(self): # samme som vannAlleBlomster, hver blomst har en nesteDag()-metode # vi kan bruke, og maa passe paa at vi ikke forsoeker aa bruke # denne paa None for blomst in self._blomster: if blomst is not None: blomst.nesteDag() def skrivUtInfoOmBlomster(self): for blomst in self._blomster: if blomst is not None: print(blomst) def ryddIBedd(self): # vi oensker aa rydde i beddet og vil fjerne (erstatte med None) # alle blomster som ikke har det bra for i in range(self._bredde): # vi sjekker at blomsten ikke er None og om statusen til blomsten er daarlig # hvis det er tilfellet saa erstatter vi det som er i lista med None, da har vi # "fjernet blomsten fra beddet" if self._blomster[i] != None and not self._blomster[i].hentStatus(): self._blomster[i] = None def antallBlomster(self): # vi teller antall blomster i beddet # her kan man fort tenke at man bare trenger aa returnere lengden # til listen, men det vil bare gi oss tallet paa hvor mange blomster # det er plass til i beddet # vi vil faktisk sjekke hvor mange Blomst-objekter vi har i beddet vaart, # og oensker dermed aa ikke telle med de plassene der vi har None, altsaa # ingen blomster teller = 0 for blomst in self._blomster: if blomst is not None: teller += 1 return teller def __str__(self): string = "Bredde : " + str(self._bredde) string = "\nAntall blomster: " + str(self.antallBlomster()) string += "\nInfo om blomster" for blomst in self._blomster: if blomst is not None: string += str(blomst) return string