#uke 12 eksamensoppgaver #Oppgave 1.1 tall = (2 * 2) - 1 tall = tall - 2 #følger vanlige operasjonsrekkefølge #tall = 4 - 1 = 3 #tall = 3 - 2 #tall får verdien 1 #Oppgave 1.2 a = 10 b = 1 i = b while i < a: b = b + i i = i + 2 print(b) ###iterasjon1 ##i er 1 ##b blir 2 ##i blir 3 ###iterasjon 2 ##i er 3 ##b blir 5 ##i blir 5 ###iterasjon 3 ##i er 5 ##b blir 10 ##i blir 7 ###iterasjon 4 ##i er 7 ##b blir 17 ##i blir 9 ###iterasjon 5 ##i er 9 ##b blir 26 ##i blir 11 (og iterasjonen går ikke videre) #Oppgave 1.3 serie = "0" for i in range(5,10): serie = serie + str(i) print("serie" + serie) #Svaret blir derfor: "serie056789" #Her er det viktig å huske på at vi har med strenger å gjøre. #Oppgave 2.1 def minFunksjon(n, m): x = 0 i = n while i >= 0: x = i i = i - m return x print(minFunksjon(32,6)) ###Hva skjer? ##x er 0 ##i er 32 ###iterasjon 1 ##i er 32 ##x blir 32 ##i blir 26 ###iterasjon 2 ##i er 26 ##x blir 26 ##i blir 20 ###iterasjon 3 ##i er 20 ##x blir 20 ##i blir 14 ###iterasjon 4 ##i er 14 ##x blir 14 ##i blir 8 ###iterasjon 5 ##i er 8 ##x blir 8 ##i blir 2 ###iterasjon 6 ##i er 2 ##x blir 2 ##i blir -4 ###iterasjon avsluttes, x blir 2 #Oppgave 2.2 class Student: def __init__(self, navnet): self._navn = navnet def faaNavn(self): return self._navn navnet = "Grete" s = Student("Ole") p = Student("Marit") print(p.faaNavn() + " og " + s.faaNavn()) #Marit og Ole skrives ut #Grete er der for å lure dere. Merk også at rekkefølgen #på opprettelsen av objektene og rekkefølgen på #utskriften er motsatt. #Oppgave 4.1 #vi antar at tallene er ulike #Her viser jeg flere måter, som er for å vise at samme problem #kan løses på flere forskjellige måter. #Hvis vi bruker innebygde metoder (anbefales ikke) def median1(a,b,c): l = [a,b,c] l.sort() return l[1] #Hvis vi bruker innebygde metoder, 2 (anbefales ikke) #Denne er nok ikke en god løsning, her gjør vi mye #for lite. def median2(a,b,c): l = [a,b,c,] l.remove(max(l)) l.remove(min(l)) return l[0] #En måte, men ikke veldig oversiktlig def median3(a,b,c): if a > b: if b > c: return b if a > c: return c else: return a elif b > a: if a > c: return a elif b > c: return c else: return b #Fra timen 1 def median4(a,b,c): if (a < b or a < c) and (a > b or a > c): return a elif (b < a or b < c) and (b > a or b > c): return b else: return c #Fra timen 2 def median5(a,b,c): svar = a if a > b > c or a < b < c: svar = b elif b > c > a or b < c < a: svar = c return svar #Løsningsforslag: def median6(a,b,c): if (a < b and b < c) or (a > b and b > c): return b elif (b < a and a < c) or (b > a and a > c): return a return c #Oppgave 4.2 def annenhver(intListe): nyListe = [] for tall in intListe: nyListe.append(tall) nyListe.append(0) return nyListe print(annenhver([1,2,3,4])) #Oppgave 6.1 def lesSkriv(filnavn): total = 0 for linje in open(filnavn): total += int(linje) print(filnavn[:-4],"har brukt:",total) lesSkriv("Peter.txt") lesSkriv("Paul.txt") #Oppgave 7 er den store objektorienterte oppgaven, se eget dokument.