# Til forelesningen uke 4. Sist oppdatert mandag 9. februar 13.00 global_teller = 0 def stopp(): # kalles for å gjøre en pause i kjøringa. Trykk 'enter' for å fortsette. global global_teller # Jeg ønsker faktisk å endre den globale variabelen global_teller = global_teller + 1 input(" "*70 + str(global_teller) + '> ') print() # Ordbøker Dictionaries (dict) ''' Læringsmål • Etter modulen: • Forstår du hva som menes med at ordbøker lar deg definere koblinger mellom verdier • Ser du hvordan du kan ta i bruk slike koblinger mellom verdier for å løse programmeringsproblemer • Kjenner du til tjenestene en ordbok tilbyr og kan bruke disse i egne programmer ''' land = {} # ei tom ordbok land["AFG"] = "Afganistan" # Legger "Afganistan" inn med nøkkel "AFG" land["NPL"] = "Nepal" land["NOR"] = "Norge" land["USA"] = "Sambandsstatene" land["CHN"] = "Kina" print(land, "har lengde", len(land)) stopp() # Denne definisjonen er lik den over. Rekkefølgen spiller ingen rolle: land2 = { 'NPL': 'Nepal', 'AFG': 'Afganistan', 'NOR': 'Norge', 'USA': 'Sambandsstatene', 'CHN': 'Kina' } print(land2, "har lengde", len(land)) stopp() # Rekkefølgen spiller ingen rolle: if land == land2 : print("land og land2 er like.") else: print("land og land2 er IKKE like.") stopp() # land ={'NPL': 'Nepal', 'AFG': 'Afganistan', # 'NOR': 'Norge', 'USA': 'Sambandsstatene', 'CHN': 'Kina'} print(land["USA"]) # I stedet for indeks, brukes nøkkelen for å hente verdien stopp() land["ITA"] = "Italia" # Legge til et nytt element land["USA"] = "Amerikas forente stater" # endrer verdien for nøkkelen "USA" # Fylker har et entydig nummer knyttet til seg, da kan vi bruke dette (fylkesnummeret) som nøkkel: fylker = {} fylker[3] = "Oslo" fylker[11] = "Rogaland" fylker[15] = "Møre og Romsdal" # ... print(fylker) stopp() # Både nøkler og verdier kan være tekst eller tall landTilKode = {"NOR":47, "DEU":49, "ITA":39} # tekst -> tall kodeTilLand = {47:"NOR", 39:"ITA", 49:"DEU"} # tall -> tekst print(kodeTilLand[39], "har prefiks 39") print(land[kodeTilLand[39]], "har prefiks 39") stopp() sum = landTilKode["NOR"] + landTilKode["ITA"] # kan legge sammen heltall print("Summen er: ", sum) konkat = kodeTilLand[49] + kodeTilLand[39] # konkatenering av tekst print("Summen er: ", konkat) stopp() # Den logiske operatoren in gjelder ("leter i") nøklene: landTilKode = {"NOR":47, "DEU":49, "ITA":39} # tekst -> tall kodeTilLand = {47:"NOR", 39:"ITA", 49:"DEU"} # tall -> tekst print("47 in landTilKode er: ", 47 in landTilKode ) print("'Norge' in landTilKode er: ", 'Norge' in landTilKode ) print("'NOR' in landTilKode er: ", ((((((('NOR'))))))) in landTilKode ) stopp() if 49 in landTilKode: print("49 er nøkkel i landTilKode") else: print("49 er ikke nøkkel i landTilKode") stopp() ''' Ordbøker • En ordbok (dict) er en samling mappinger (transformasjoner) fra én verdi til én annen • Det man mapper fra kalles nøkkelverdi (key) • Det man mapper til kalles en innholdsverdi (value) • Både nøkler og innholdsverdier kan være av ulike typer ''' by = {"Norge":"Oslo", "Tyskland":"Berlin", "Italia":"Roma"} tlf = {"Norge": 47, "Tyskland": 49, "Italia": 39} # Slår opp som i ei liste: by_i_Norge = by["Norge"] # uttrykket (h.s.) evaluerer til verdien "Oslo" # I ei ordbok tester in om det finnes en slik NØKKELverdi print("Tester om 47(int) eksisterer som nøkkelverdi i ordboka tlf:", 47 in tlf) stopp() print("Tester om nøkkelen 'Italia' er i ordboka tlf:", "Italia" in tlf) stopp() # Nøstede samlinger # Lister: matrise = [] matrise.append([1, 2, 3]) matrise.append([4, 5, 6]) matrise.append([7, 8, 9]) print(matrise) print("For å hente ut én verdi, må vi bruke flere indekser: ", matrise[0][2]) print("Sammenlign med når vi bruker kun én indeks: ", matrise[0]) stopp() # Ordbøker: kommuner_i_fylke = {'Vestfold' : ['Horten', 'Holmestrand', 'Tønsberg', 'Sandefjord', 'Larvik', 'Færder'] } kommuner_i_fylke['Oslo'] = ["Oslo"] kommuner_i_fylke['Østfold'] = ['Halden', 'Moss', 'Sarpsborg', 'Fredrikstad', 'Hvaler', 'Råde', 'Våler', 'Skiptvet', 'Indre Østfold', 'Rakkestad', 'Marker', 'Aremark'] kommuner_i_fylke['Viken'] = [ ] print(kommuner_i_fylke) stopp() print("Innholdsverdien for nøkkelen 'Vestfold' er ei liste: ", kommuner_i_fylke['Vestfold']) stopp() print("For å skrive ut en kommune, må vi indeksere lista: ", kommuner_i_fylke['Vestfold'][3]) stopp() # Løkker # Repetere en kodeblokk flere (mange) ganger: for tekst in ["Variabelen", '"test"', "får", "én", "og", "én", "verdi", "fra", "lista"] : print(tekst) stopp() teller = 0 for tekst in ["Variabelen", "'test'", "får", "én", "og", "én", "verdi", "fra", "lista"] : teller += 1 # teller = teller + 1 print(teller, tekst) stopp() gamleFylker = ['Agder', 'Innlandet', 'Møre og Romsdal', 'Nordland', 'Oslo', 'Rogaland', 'Troms og Finnmark', 'Trøndelag', 'Vestfold og Telemark', 'Vestland', 'Viken'] #print("Gamle fylker: ", gamleFylker) nyeFylker = [ 'Akershus', 'Buskerud', 'Østfold', 'Troms', 'Finnmark', 'Vestfold', 'Telemark' ] #print("Nye fylker: ", nyeFylker) fylker = gamleFylker + nyeFylker # Vi kan slå sammen lister (akkurat som tekkster) print(fylker) stopp() # Fylker som ble oppløst 1.1.2024: gamleFylker.remove("Troms og Finnmark") gamleFylker.remove('Vestfold og Telemark') gamleFylker.remove("Viken") #print(gamleFylker) stopp() fylker = gamleFylker + nyeFylker print(fylker) stopp() indeks = 0 for fylke in fylker : print(indeks, fylke) indeks += 1 stopp() indeks = 0 fylker.sort() for fylke in fylker : print(indeks, fylke) indeks += 1 stopp() land = { 'NPL': 'Nepal', 'AFG': 'Afganistan', 'NOR': 'Norge', 'USA': 'Sambandsstatene', 'CHN': 'Kina' } for verdi in land : print(verdi) stopp() print("I ordboka land ...") for nøkkelverdi in land : print("har nøkkelverdien", nøkkelverdi, "innholdsverdi", land[nøkkelverdi]) stopp() print(land.keys()) print(land.values()) stopp() print(land.items()) stopp() for n, v in land.items(): print(n, v) stopp() # Hva med nøstede samlinger? print(kommuner_i_fylke) stopp() for nkl in kommuner_i_fylke: print(nkl, ":", kommuner_i_fylke[nkl]) stopp() for nkl in kommuner_i_fylke: print(nkl) for kommune in kommuner_i_fylke[nkl]: print("\t", kommune) stopp() # range print(range(5)) print(list(range(5))) stopp() for i in range(5): # Det samme som: for i in [0, 1, 2, 3, 4]: print(i*i) stopp() print(list(range(0,5))) print(list(range(5))) print(list(range(5,2))) print(list(range(70,0, -7))) stopp() # while i = 0 while i < 5 : print(i) i += 1 # Her er løkka slutt print("Da er wile-løkka slutt og i har heltallsveriden", i) stopp() # from minister import justisminister # justis_og_beredskapsminister = justisminister() # Nå ligger justisministerens navn som verdi i variabelen justis_og_beredskapsminister navn = input("Hva heter justisministeren i Norge? ") while navn != 'Astri Aas-Hansen': navn = input("Det var feil. Hva heter justisministeren i Norge? ") print( navn, "er helt riktig")