# Vi utvider programmet med en klasse som beskriver et fylke: class Fylke: # En klassevariabel med ei ordbok som mapper fra fylkesnummer til fylkesnavn # Denne variabelen er IKKE en instansvariabel og blir felles for alle # objekter av klassen. fylker = {'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'} def __init__(self, nr): self._nummer = nr # Vi lagrer bare fylkesnummeret def nummer(self): return self._nummer def navn(self): return self.fylker[self.nummer()] # navnet hentes fra ordboka ovenfor class Kommune: def __init__(self, nr, nvn): self._nummer = nr # instansvariabel for kommunenummer self._navn = nvn # instansvariabel for kommunenavn def nummer(self): return self._nummer def navn(self): return self._navn def fylkesnr(self): return self.nummer()[:2] # De to f?rste tegnene i self._nummer # Kan jo hende vi f?r bruk for disse hvis en kommune endrer # navn eller nummer: def sett_nummer(self, nr): self._nummer = nr def sett_navn(self, n): self._navn = n # Prosedyre for ? lage en liste av kommuneinformasjon fra fil: def les_fil_returner_tabell(filnavn): liste = [] fil = open(filnavn) for linje in fil: liste.append(linje.strip().split("\t")) return liste kommuneinfo = les_fil_returner_tabell("liste.txt") # Starten av kommuneinfo (liste av lister) ser n? s?nn ut: # [ # ['03', 'Oslo', '0301', 'Oslo', '0301'], # ['11', 'Rogaland', '1101', 'Eigersund', '1101'], # ['11', 'Rogaland', '1103', 'Stavanger', '1103'], # ... # ] # Et kommuneobjekt skal innholde informasjon om # kommunenummer (indeks 2) og navn (indeks 3): kommuneliste = [] # blir ei liste med kommuneobjekter kommuneordbok = {} # ei ordbok med kommuneobjekter fylker = {} # ei ordbok med fylkesobjekter, fylkesnr er n?kkel for info in kommuneinfo: kommune = Kommune(info[2], info[3]) kommuneliste.append(kommune) # inn i liste kommuneordbok[info[2]] = kommune # inn i ordbok # kommunenr er n?kkel, kommuneobjekt innholdsverdi if not (kommune.fylkesnr() in fylker): fylker[kommune.fylkesnr()] = Fylke(kommune.fylkesnr()) fylke = fylker[kommune.fylkesnr()] # fylkesobjektet for fylket kommune ligger i print(kommune.nummer(), kommune.navn(), kommune.fylkesnr(), fylke.navn())