Skip to content
Snippets Groups Projects
Commit a1bcd0a0 authored by Børge Haugset's avatar Børge Haugset
Browse files

til forelesning

parent 26e3c347
No related branches found
No related tags found
No related merge requests found
# 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])
# 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
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
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))
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)]
'''
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
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)))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment