# Vi legger om datastrukturen. Lar fylkene v?re hovedobjekter fylkesnr_og_navn = { '03': 'Oslo', '11': 'Rogaland', '15': 'M?re og Romsdal', '18': 'Nordland', '30': 'Viken', # oppl?st 1. januar 2024 '31': '?stfold', '32': 'Akershus', '33': 'Buskerud', '34': 'Innlandet', '38': 'Vestfold og Telemark', # oppl?st 1. januar 2024 '39': 'Vestfold', '40': 'Telemark', '42': 'Agder', '46': 'Vestland', '50': 'Tr?ndelag', '54': 'Troms og Finnmark', # oppl?st 1. januar 2024 '55': 'Troms', '56': 'Finnmark' } 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 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 nummer(self): return self._infoliste[2] def navn(self): return self._infoliste[3] def fylkesnr(self): return self._infoliste[0] # 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(), fylkesnr_og_navn[kommune.fylkesnr()]) self._fylker[kommune.fylkesnr()] = nyttfylke fylke = self._fylker[kommune.fylkesnr()] # fylkesobjektet for fylket kommune ligger i fylke.legg_til_kommune(kommune) # Vi har n? ei ordbok med fylkesobjekter, # hvert fylke har ei liste med kommuneobjekter. Vi tester strukturen: 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_og_kommuner()