# 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")