# Vi legger om datastrukturen. Lar fylkene v?re hovedobjekter class Fylke: def __init__(self, nr, nvn): self._nummer = nr # fylkesnummeret self._navn = nvn # fylkesnavnet self._kommuner = [] # liste over kommuner i dette fylket def legg_til_kommune(self, k): # k er et kommuneobjekt self._kommuner.append(k) def nummer(self): return self._nummer def navn(self): return self._navn def kommuneliste(self): return self._kommuner def ant_kommuner(self): return len(self._kommuner) class Kommune: def __init__(self, info): # Vi tar inn som parameter *ei liste* av kommuneinfo: self._infoliste = info # S? henter/setter den enkelte instans info ut/inn. Eks.: # ['31', '?stfold', '3124', 'Aremark', '3012'] # fnr fylkesnavn kommunenr -navn gmlknr # 0 1 2 3 4 def fylkesnr(self): return self._infoliste[0] def fylkesnavn(self): return self._infoliste[1] def nummer(self): return self._infoliste[2] def navn(self): return self._infoliste[3] # Kan jo hende vi f?r bruk for disse hvis en kommune endrer # navn eller nummer: def sett_nummer(self, nr): self._infoliste[2] = nr def sett_navn(self, n): self._infoliste[3] = n # slutt class Kommune class Land: # Prosedyre for ? lage en liste av kommuneinformasjon fra fil: def _les_fil_returner_tabell(self, filnavn): liste = [] fil = open(filnavn) for linje in fil: liste.append(linje.strip().split("\t")) return liste def __init__(self, navn, filnavn): self._navn = navn kommuneinfo = self._les_fil_returner_tabell(filnavn) self._fylker = {} # ei ordbok med fylkesobjekter, fylkesnr er n?kkel for info in kommuneinfo: kommune = Kommune(info) if not (kommune.fylkesnr() in self._fylker): nyttfylke = Fylke(kommune.fylkesnr(), kommune.fylkesnavn()) self._fylker[kommune.fylkesnr()] = nyttfylke fylke = self._fylker[kommune.fylkesnr()] # fylkesobjektet for fylket kommune ligger i fylke.legg_til_kommune(kommune) def skriv_ut_fylker(self): for fnr in self._fylker: # fnr er fylkesnummer, n?kkel i ordboka fylke f = self._fylker[fnr] print(f.nummer(), f.navn(), "har", f.ant_kommuner(), "kommuner") def skriv_ut_fylker_og_kommuner(self): for fnr in self._fylker: # fnr er fylkesnummer, n?kkel i ordboka fylke f = self._fylker[fnr] print("\n", f.nummer(), f.navn(), "har disse kommunene:") for k in f.kommuneliste(): # k itererer over print(" ", k.nummer(), k.navn()) # Hovedprogram norge = Land("Norge", "kommuneinfo.txt") norge.skriv_ut_fylker()