#Oppg 3a (4p) #EP 3p: Logikk som fungerer #PR 1p: Helt fungerende kode def badmington(per_vil, palle_vil, espen_vil): antall_vil = 0 if per_vil: antall_vil += 1 if palle_vil: antall_vil += 1 if espen_vil: antall_vil += 1 return antall_vil == 2 assert badmington(True, True, False) == True assert badmington(True, True, True) == False assert badmington(False, False, False) == False #Oppg 3b (5p) #EP 3p: #EP 1p: Riktig logikk for Brann #EP 2p: Finner lag med rangering 1 #PR 2p: #PR 1p: Riktig med at returnert lag-navn er n?kkel er rank 1 er verdi i ordbok #PR 1p: Helt fungerende kode def heie(tabellplass_ordbok): if tabellplass_ordbok["Brann"] < 4: return "Brann" else: for lag in tabellplass_ordbok: if tabellplass_ordbok[lag] == 1: return lag assert heie({"Rosenborg":4, "Odd":1, "Molde":3, "Brann":2}) == "Brann" assert heie({"Rosenborg":2, "Odd":1, "Molde":3, "Brann":4}) == "Odd" #Oppg 3c (7p) #IP 5p: #IP 1p: Iterere gjennom lister og lage ny liste #IP 4p: Riktig logikk med ? legge inn annenhvert element fra introverte og ekstroverte #PR 2p: Helt fungerende l?sning def bordsetting(introverte, ekstroverte): bordliste = [] for i in range(len(introverte)): bordliste.append(introverte[i]) bordliste.append(ekstroverte[i]) return bordliste rekkefolge = ["Per","Putti","Palle","Plutti","Espen","Pott"] print( bordsetting(["Per","Palle","Espen"], ["Putti", "Plutti", "Pott"]) ) #Oppg 3d (7p) #IP 5p: #IP 1p: iterere gjennom hver person og finne interesse som verdi #IP 4p: Lage ny ordbok med interesse som n?kkel og liste av personer som verdi #PR 2p: Helt fungerende kode def lag_interessegrupper(personers_interesse): grupper = {} for person in personers_interesse: interesse = personers_interesse[person] if not interesse in grupper: grupper[interesse] = [] grupper[interesse].append(person) return grupper inn_ordbok = {"Per":"Mat", "Palle":"Film", "Espen":"Mat"} ut_ordbok = {"Mat":["Per","Espen"], "Film":["Palle"]} assert lag_interessegrupper(inn_ordbok) == ut_ordbok #Oppg 5a (5p) #IP 4p: #IP 1p: Iterere gjennom terningkast og akkumulere en posisjon p? bretet (rute) #IP 3p: Riktig h?ndtering av stige (se etter n?kkel, f?lge til verdi) #PR 1p: Helt fungerende kode def stigespill(terningkast, stiger): rute = 0 for kast in terningkast: rute += kast if rute in stiger: rute = stiger[rute] return rute assert stigespill([3,2,1],{3:15, 17:4}) == 5 #Oppg 5b (5p) #IP 2p: Se behov for trippel-n?stet l?kke eller lignende #IP 1p: Akkumule liste over mulige kast-kombinasjoner som ender p? slutt_rute #PR 2p: Helt fungerende kode def hvilke_tre_kast(slutt_rute, stiger): muligheter = [] for t1 in range(1,7): for t2 in range(1,7): for t3 in range(1,7): mulighet = [t1,t2,t3] if stigespill(mulighet, stiger) == slutt_rute: muligheter.append(mulighet) return muligheter print(hvilke_tre_kast(5, {3:15, 17:4}))