"""Dette programmet er ett eksempel p? hvordan vi kan bruke metoder, funksjoner og parametre for ? lage et program med ulike komponenter som jobber sammen. Ved ? se p? programmet ser dere at hver funksjon og prosedyre f?lger de forrige, og at de sammen gir funksjonalitet som gj?r at vi kan kj?re programmet slik vi har tenkt. Legg merke til hvordan vi har tenkt at returverdi eller evt. resultat av den forrige funksjonen eller prosedyren skal brukes i den neste. Det kan v?re nyttig ? tenke p? hvordan de ulike delene av ett program skal jobbe sammen mot et felles m?l. """ def les_fil(filnavn): # Funksjon som ?pner en fil og leser den inn linje for linje, legger data til i en ordbok som returneres register = {} # Ordbok som skal returneres, formatert "Navn:Alder" with open(filnavn) as fil: # ?pner filnavn som variabelen fil for linje in fil: # G?r gjennom hver linje, linjene hentes ut som strenger linje = linje.strip().split(",") # Fjerner whitespace p? start og slutt av strengen, og deler opp opp linjen ved komma navn = linje[0] # Det f?r komma alder = int(linje[1]) # Det etter komma # Legg merke til indekseringen over, n?r vi bruker .split() deles strengen opp i en liste register[navn] = alder # Legg til data i ordboken return register # Returner ordboken def skriv_alle(ordbok): # Prosedyre som skriver ut all data i ordboken for nokkel in ordbok: print(nokkel, "er", ordbok[nokkel], "aar gammel") def sorter_register(ordbok): # Funksjon som returnerer en ordbok sortert etter aldersgruppe. Har en parameter, ordbok returnert av les_fil(filnavn) sendes som argument ordbok_sortert = {"0-18":[], "19-34":[], "35-50":[], "51-64":[], "64+":[]} # N?kkel er aldersgruppe, og innholdsverdi er en liste over personer som faller innenfor den aldersgruppen for navn in ordbok: # G? gjennom hver n?kkel i ordboken og del inn etter aldersgruppe if ordbok[navn] <= 18: ordbok_sortert["0-18"].append(navn) elif ordbok[navn] >= 19 and ordbok[navn] <= 34: ordbok_sortert["19-34"].append(navn) elif ordbok[navn] >= 35 and ordbok[navn] <= 50: ordbok_sortert["35-50"].append(navn) elif ordbok[navn] >= 51 and ordbok[navn] <= 64: ordbok_sortert["51-64"].append(navn) else: ordbok_sortert["64+"].append(navn) return ordbok_sortert # Returner ordbokem def finn_storste_aldersgruppe(sortert_register): # Funksjon som returnerer aldersgruppen med flest personer i teller = 0 storste_hittil = "" # Disse to variabelen holder styr p? den st?rste gruppen s? langt for aldersgruppe in sortert_register: # G? gjennom hver aldersgruppe if len(sortert_register[aldersgruppe]) > teller: # Hvis gruppen er st?rre enn den st?rste funnet s? langt: teller = len(sortert_register[aldersgruppe]) storste_hittil = aldersgruppe # Oppdaterer variabler return storste_hittil # Returnerer den st?rste aldersgruppen hitiil def skriv_til_fil(sortert_ordbok): # Prosedyre som skriver ut innhold i en sortert ordbok til en fil with open("aldersgrupper_og_personer.txt", "w") as min_fil: for aldersgruppe in sortert_ordbok: min_fil.write(aldersgruppe + "\n") for person in sortert_ordbok[aldersgruppe]: min_fil.write(person + "\n") min_fil.write("\n") def main(): # Her kaller vi prosedyrene og funksjonen i rekkef?lgen vi ?nsker register = les_fil("data.csv") sortert = sorter_register(register) skriv_til_fil(sortert) main() # Gj?r ett enkelt kall p? main() for ? kj?re hele programmet