diff --git a/uke43/dictionaries_forklart.py b/uke43/dictionaries_forklart.py new file mode 100644 index 0000000000000000000000000000000000000000..34d2287041c1d1709e0d72f25d7c833dc70276f2 --- /dev/null +++ b/uke43/dictionaries_forklart.py @@ -0,0 +1,101 @@ +# Ta en kikk paa passordliste.py, denne viser +# hvordan man kan bruke en todimensjonal liste. + + +# Dictionaries +''' +En dictionary kan sees på som en kommode med mange +skuffer. Utenpå hver skuffe står det en nøkkel (key). +Nøkkelen kan være hva som helst som er ikke-muterbart, +det vil si at man for eksempel ikke kan bruke en liste +som en nøkkel. + +Denne +må være unik (akkurat som sett). Hver skuffe har også en +verdi (value). Alt mulig kan ligge inni skuffen. En boolean, +et talln en todimensjonal liste, en annen dictionary... +Mulighetene er uendelige! + +Dette er for øvrig ikke en fullstendig beskrivelse av +dictionaries, men det viser de mest brukte tingene ved dem. +''' + +# Lage en tom dictionary: +ordbok = {} + +# Legge inn en verdi 12 til nøkkelen 'svaret' +ordbok['svaret'] = 12 +print('svaret: ',ordbok) +# Den samme ordbokn kan ha ulike typer på nøkler og verdier +ordbok[12] = 'tre ganger fire' +ordbok['liste'] = [[1,2],[3,4]] +print('tre elementer: ',ordbok) +# Bare én nøkkel av hver type. Setter du den igjen overskriver du +ordbok[12] = 'tolv ganger én' +print('Ny tolver: ',ordbok) + +# For å hente ut en verdi gitt en nøkkel: +print(f'Inni skuffen med "liste" utenpå ligger {ordbok["liste"]}') + +# Man kan hente ut alle nøkler (skuffefronter) slik: +for key in ordbok.keys(): + print('nøkkel:',key) + # Men man kan også hente ut verdiene, gitt key + print('nøkkel:',key,'har verdi:',ordbok[key]) + +# Man kan hente ut alle verdier (inni skuffene) slik: +for value in ordbok.values(): + print('verdi:',value) + +# Man kan hente begge slik: +for key, value in ordbok.items(): + print('verdi:',value) + +# Hvis en forsøker å hente ut en verdi på denne måten, og +# nøkkelen ikke finnes, da utløses et unntak: +# print(ordbok['finnesikke']) +# Dette kan man unngå ved å bruke get(<nøkkel>): +print('bruke get:',ordbok.get(12)) + +# Hvis nøkkelen ikke finnes, da returnerer get None: +print('bruke get på ikkeeksisterende nøkkel:',ordbok.get('finnesikke')) + +# Man kan i stedet la den returnere noe en selv spesifiserer hvis +# nøkkelen ikke finnes, med get(<nøkkel>,<retur_hvis_ikke_eksisterer>) +print('bruke get med bestemt retur:',ordbok.get('finnesikke',[])) + + +# Eksempel med bruk v dictionary og analyse av en lenger streng: +# Lag en ordbok som teller antall forekomster av alle ord. +# ordet selv er nøkkelen, antall ganger er verdien knyttet +# til denne. + + +ordbok.clear() # Nå er den tom + +import lyric +# I filen lyric.py ligger en strengvariabel TEKST +for ord in lyric.TEKST.split(): # Sjekk bruken av modulen +# print(f'"{ord}"') + # Nå må vi finne ut hvor mange ganger ordet har vært + # talt opp før. Hvis det er første gang ber vi get + # returnere 0. Smart, ikke sant? + + # Fjerne noen punktum og slikt. + ord = ord.replace('.','') + ord = ord.replace(')','') + ord = ord.replace('(','') + ord = ord.replace(',','') + + ganger = ordbok.get(ord,0) + + # Så oppdaterer vi den med 1 + ordbok[ord] = ganger + 1 + # kunne gjort det på en linje: +# ordbok[ord] = ordbok.get(ord,0) + 1 + +# Skriv ut alle ordene og antall treff, i alfabetisk rekkefølge: +print('Ord:\t\tGanger:') +# sorted kan brukes på keys, values, under velger den automatisk keys: +for ord in sorted(ordbok): + print(ord,'\t\t',ordbok[ord]) diff --git a/uke43/dictionary_metoder.py b/uke43/dictionary_metoder.py new file mode 100644 index 0000000000000000000000000000000000000000..4ad3d0b076cb02ccd2105b2696dd5380bef8ec70 --- /dev/null +++ b/uke43/dictionary_metoder.py @@ -0,0 +1,24 @@ +# Opprette en dictionary +d = {} # Mac SHIFT+ALT+ 8 9 + +print('Skriv inn key og verdi. Avslutt med tom streng.') + +key = input('Key: ') + +while(key!=''): + value = input('Value: ') + d[key] = value + + key = input('Key: ') + +# Litt variasjon på bruk av f strings og ikke, for å minne dere på... +print(f'len(d): {len(d)}') +print('d.items():',d.items()) +print('d.keys():',d.keys()) +print('d.values():',d.values()) +print('d.get(\'ost\',-999):',d.get('ost',-999)) +print('Merk at alt er strenger. Hvordan kan vi lagre det som andre typer variable?') + +# uskrift av alt: +for key, value in d.items(): + print(f'Inni skuffen {key} ligger {value}.') \ No newline at end of file diff --git a/uke43/lyric.py b/uke43/lyric.py new file mode 100644 index 0000000000000000000000000000000000000000..e2cb8a90f571f750d6f1dd2a0157d09700c305eb --- /dev/null +++ b/uke43/lyric.py @@ -0,0 +1,139 @@ +TEKST = ''' +Seiya sessesse seiya. +Seiya sessesse seiya. +Soiya sossosso soiya. +Soiya sossosso soiya. + +(Ossu.) Namida koborete mo +(Ossu.) tachimukatte yukooze! + +Hitasura seiya soiya tatakau-nda +kobushi o motto kokoro o motto +zenbu zenbu togisumashite. +(Wo'oo wo'oo wo'oo.) + +Mada mada seiya soiya tatakau-nda +kanashiku natte tachiagare-naku natte mo. +(Aa ossu ossu.) + +Seiya sessesse seiya. +Seiya sessesse seiya. +Soiya sossosso soiya. +Soiya soso soiya. + +(Ossu.) Kokoro orarete mo +(Ossu.) tachimukatte yukooze! + +Hitasura seiya soiya tatakau-nda +kobushi o motto kokoro o motto +zenbu zenbu togisumashite. +(Wo'oo wo'oo wo'oo.) + +Mada mada seiya soiya tatakau-nda +kanashiku natte tachiagare-naku natte mo. + +(Wo'oo wo'oo wo'oo.) +(Wo'oo wo'oo wo'oo.) + +Seiya soiya tatakau-nda +(Wo'oo wo'oo wo'oo.) +zenbu zenbu togisumashite. +(Wo'oo wo'oo wo'oo.) + +Seiya soiya tatakau-nda +(Wo'oo wo'oo wo'oo.) +zenbu zenbu togisumashite. +(Wo'oo wo'oo wo'oo.) + +Hitasura seiya soiya tatakau-nda +kobushi o motto kokoro o motto +zenbu zenbu togisumashite. +(Wo'oo wo'oo wo'oo.) + +Mada mada seiya soiya tatakau-nda +kanashiku natte tachiagare-naku natte mo. + +Hashire! +(Seiya soiya tatakau-nda) +(zenbu zenbu togisumashite.) +(Wo'oo wo'oo wo'oo.) + +Hashire! +(Seiya soiya tatakau-nda) +(zenbu zenbu togisumashite.) + +(Wo'oo wo'oo wo'oo.) +(Wo'oo wo'oo wo'oo.) +(Wo'oo wo'oo wo'oo.) +(Wo'oo wo'oo wo'oo.) + +[English:] + +Seiya sessesse seiya. +Seiya sessesse seiya. +Soiya sossosso soiya. +Soiya sossosso soiya. + +(Ossu.) Even if tears spill from our eyes, +(Ossu.) let's confront it! + +Single-mindedly, seiya soiya, let's fight on +with our fists more... with our spirits more... +with making all sharper. +(Wo'oh wo'oh wo'oh.) + +Still more, seiya soiya, let's fight on +even if we get sad and unable to stand up. +(Ah ossu ossu.) + +Seiya sessesse seiya. +Seiya sessesse seiya. +Soiya sossosso soiya. +Soiya soso soiya. + +(Ossu.) Even if our spirits are broken, +(Ossu.) let's confront it! + +Single-mindedly, seiya soiya, let's fight on +with our fists more... with our spirits more... +with making all sharper. +(Wo'oh wo'oh wo'oh.) + +Still more, seiya soiya, let's fight on +even if we get sad and unable to stand up. + +(Wo'oh wo'oh wo'oh.) +(Wo'oh wo'oh wo'oh.) + +Seiya soiya, let's fight on +(Wo'oh wo'oh wo'oh.) +with making all sharper. +(Wo'oh wo'oh wo'oh.) + +Seiya soiya, let's fight on +(Wo'oh wo'oh wo'oh.) +with making all sharper. +(Wo'oh wo'oh wo'oh.) + +Single-mindedly, seiya soiya, let's fight on +with our fists more... with our spirits more... +with making all sharper. +(Wo'oh wo'oh wo'oh.) + +Still more, seiya soiya, let's fight on +even if we get sad and unable to stand up. + +Run! +(Seiya soiya, let's fight on) +(with making all sharper.) +(Wo'oh wo'oh wo'oh.) + +Run! +(Seiya soiya, let's fight on) +(with making all sharper.) + +(Wo'oh wo'oh wo'oh.) +(Wo'oh wo'oh wo'oh.) +(Wo'oh wo'oh wo'oh.) +(Wo'oh wo'oh wo'oh.) +''' \ No newline at end of file diff --git a/uke43/oppgave_count_words.py b/uke43/oppgave_count_words.py new file mode 100644 index 0000000000000000000000000000000000000000..c1fa89fcc7f093b6bcde5aab86762991adea9b16 --- /dev/null +++ b/uke43/oppgave_count_words.py @@ -0,0 +1,27 @@ +import random + +''' +Opprette tom dictionary/ordbok +Gjøre om strengen til liste av ord +Gå igjennom hvert ord og: + - Er ordet i dict fra før? Legg på 1 på verdien som er der + - Hva skal du gjøre hvis ordet ikke er det fra før? Se på d.get igjen. +Returner dictionary +''' + +def count_words(streng): + # Gjør det over + return {} # Erstatt med din utfylte dict + +import random +# Jeg lager bare kjapt en streng med en drøss tilfeldige tall mellom 0 og 10: +streng = " ".join([str(random.randint(0, 10)) for i in range(100)]) +d = count_words(streng) + +# skriver dem ut: +for key in sorted(d): + print(f'{key} var der {d[key]} ganger.') + +# Hvis dere har veldig lyst: +#import lyric +#print(count_words(lyric.TEKST)) diff --git a/uke43/oppgave_set.py b/uke43/oppgave_set.py new file mode 100644 index 0000000000000000000000000000000000000000..51d002194df09e07e9444a10515ec11748cd6feb --- /dev/null +++ b/uke43/oppgave_set.py @@ -0,0 +1,27 @@ +import random +''' + +Funksjonen beskriv_set tar inn to LISTER a og b +Den skal gjøre om listene til set, og så +skrive ut ulike ting: +- alle unike verdier som er i begge listene til sammen +- alle verdier som KUN er i begge listene +- alle verdier som er i begge listene, men ikke i begge +- elementene som er i a, men ikke i b + +''' + +def beskriv_sett(a, b): + + # Gjør om begge til set + # ... + +# fiks disse: +# print(f'Unike element i hele a og b tilsammen: {}') +# print(f'Unike element som er i både a og b: {}') +# print(f'Unike element i som ikke er i begge lister: {}') +# print(f'Elementer i a som ikke også er i b: {}') + + +a = [random.randrange(10) for i in range (0, 10)] +b = [random.randrange(10) for i in range (5, 15)] diff --git a/uke43/passordliste.py b/uke43/passordliste.py new file mode 100644 index 0000000000000000000000000000000000000000..b97db6afe34985a76e7dbb2767099fdb8d14c849 --- /dev/null +++ b/uke43/passordliste.py @@ -0,0 +1,20 @@ +''' +Dette er en veldig enkel greie å vise hvordan en kan +bruke todimensjonale lister for å holde rede på kobling +mellom to dataverdier. +''' + +# Leter igjennom passordliste, etter treff +def finn_passord(passordliste): + nettsted = input('Nettsted du vil ha passord til: ') + for sted in passordliste: + if sted[0] == nettsted: + return sted[1] # Dette er jo passordet + return None # Default + + +liste = [['reddit', '''¯\_(ツ)_/¯'''], ['youtube', 'passordYT!'], \ + ['ute.no', 'O$teSkrakkeleringsGnøffe_Gnøff'], \ + ['filateli.no', 'Frimerker4ever']] + +# print('finn_passord: ' + finn_passord(liste)) \ No newline at end of file diff --git a/uke43/set.py b/uke43/set.py new file mode 100644 index 0000000000000000000000000000000000000000..50c1f11071c6ea7602944d238ee9111181c58d32 --- /dev/null +++ b/uke43/set.py @@ -0,0 +1,14 @@ +import random + +# 100 tilfeldige tall 0 - 100 inn i en liste: +tall = [random.randint(0,100) for i in range(100)] + +print("Antall tall:",len(tall)) +tall.sort() +print("Sorterte tall:", tall) + +# Kjører du dette mange ganger, ser du at ulike tall trekkes. +# Og noen flere ganger. Men det finnes en måte å bare få unike +# verdier. +print("Set:", set(tall)) +print("Antall elementer:", len(set(tall)))