Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • victodso/tdt4110-ovinger
  • mpfjaerg/tdt4110-ovinger
  • unsuks/tdt4110-ovinger
  • ejo/tdt4110-ovinger
  • thivihas/tdt4110-ovinger
  • larsdyv/tdt4110-ovinger
  • sigurtve/tdt4110-ovinger
  • gauteson/tdt4110-ovinger
  • oskarpau/tdt4110-ovinger
  • hanneaga/tdt4110-ovinger
  • juliantk/tdt4110-ovinger
  • marsli/tdt4110-ovinger
  • froydisr/tdt4110-ovinger
  • alexalyl/tdt4110-ovinger
  • erledam/tdt4110-ovinger
  • antarac/tdt4110-ovinger
  • evenml/tdt4110-ovinger
  • julyj/tdt4110-ovinger
  • marefl/tdt4110-ovinger
  • marenkfa/tdt4110-ovinger
  • iaholm/tdt4110-ovinger
  • isabelfo/tdt4110-ovinger
  • annbjorm/tdt4110-ovinger
  • itgk_hovedgruppe/itgk2023/tdt4110/tdt4110-ovinger
24 results
Show changes
Commits on Source (35)
Showing
with 1717 additions and 0 deletions
%% Cell type:code id: tags:
``` python
#Oppgave a
def alternerende_sum(n):
summen = 0
for i in range(1, n + 1):
if i % 2 == 1:
summen += i**2
else:
summen -= i**2
return summen
#oppgave b
def alternerende_sum_2(k):
s = 0
i = 1
while True :
new_s = s + ((-1)**(i+1) * i**2) #(-1)**(i+1) gjør at alle ledd som er partall blir negative
if new_s > k:
break #break gjør at løkken avsluttes
s = new_s
i += 1
return s, i - 1
```
%% Output
(-10, 4)
%% Cell type:code id: tags:
``` python
```
This diff is collapsed.
%% Cell type:markdown id: tags:
a)
%% Cell type:code id: tags:
``` python
def triangle(limit):
outer_string = ""
for i in range(1,limit+1):
inner_string = ""
for j in range(1,i+1):
inner_string += str(j) + " "
outer_string += inner_string + " \n"
return outer_string
print(triangle(5))
# alternativt uten funksjon
for x in range(5):
for y in range(x+1):
print(y+1, end=' ')
print()
```
%% Cell type:markdown id: tags:
b)
%% Cell type:code id: tags:
``` python
def x(n):
outer_string = ""
for i in range(1,n+1):
inner_string = "X"
for j in range(1, i + 1):
inner_string += " "
if j == i:
inner_string += "X"
outer_string += inner_string + "\n"
return outer_string
print(x(5))
## alternativt uten funksjon
for x in range(5):
print("#", end='')
for y in range(x):
print(' ', end='')
print("#")
```
%% Cell type:markdown id: tags:
c)
%% Cell type:code id: tags:
``` python
def primtallsfaktorisering(heltall):
tall = heltall # bruker en hjelpevariabel, ikke "ødelegge" brukerens tall
svar = "" # tom streng foreløpig, skal samle opp faktorene her
faktor = 2 # starter med å prøve den laveste mulige faktoren
while tall >= 4: # < 4 er definitivt et primtall
while tall % faktor == 0: # har funnet en faktor
tall = tall// faktor # reduserer tallet ved å dele vekk faktoren
svar += str(faktor) # putter faktoren inn i svarstrengen
if tall > 1: # fortsatt flere faktorer
svar += "*" # legger derfor til et gangetegn i svaret
faktor += 1 # forrige faktor oppbrukt, øker med 1 for å prøve ny
if "*" in svar: # har funnet et produkt av flere tall
return str(heltall) + "=" + svar
else:
return str(heltall) + " er et primtall."
```
%% Cell type:markdown id: tags:
d)
%% Cell type:code id: tags:
``` python
import random
mer = 1
while mer:
a = random.randint(0,9)
b = random.randint(0,9)
svar = a*b
antall = 2
for x in range(3):
brukerInput = int(input('Hva blir '+str(a)+'*'+str(b)+'? '))
if brukerInput==svar:
print('Gratulerer, det er helt riktig!')
break
else:
print('Dessverre ikke riktig. Du har',antall,'forsøk igjen.')
antall-=1
if antall <0:
print('Dessverre klarte du ikke dette regnestykket, men vent så får du et nytt et:)')
mer = int(input('Er det ønskelig med flere spørsmål? Skriv 1 for ja og 0 for nei: '))
print()
```
%% Cell type:markdown id: tags:
e)
%% Cell type:code id: tags:
``` python
import random
mer = 1
antallRette = 0
ovreGrense = 5
while mer:
a = random.randint(0,ovreGrense)
b = random.randint(0,ovreGrense)
svar = a*b
antall = 2
for x in range(3):
brukerInput = int(input('Hva blir '+str(a)+'*'+str(b)+'? '))
if brukerInput==svar:
print('Gratulerer, det er helt riktig!')
antallRette +=1
break
else:
print('Dessverre ikke riktig. Du har',antall,'forsøk igjen.')
antall-=1
if antall <0:
antallRette = 0
print('Dessverre klarte du ikke dette regnestykket, men vent så får du et nytt et:)')
mer = int(input('Er det ønskelig med flere spørsmål? Skriv 1 for ja og 0 for nei: '))
if antallRette%5==0 and antallRette>0:
ovreGrense +=5
print()
```
%% Cell type:markdown id: tags:
a)
%% Cell type:code id: tags:
``` python
def fibonacci(n):
fib, fib_next = 0,1
if n==0:
return fib
elif n==1:
return fib_next
else:
for i in range(2,n+1):
fib, fib_next = fib_next , fib+fib_next
return fib
##Evt med arrays
def fibonacci(k):
array = [0,1]
if k == 0 or k == 1 :
return array[k]
else:
for i in range(2,k):
array.append(array[i-1] + array[i-2])
return array[-1]
print(fibonacci(10))
```
%% Output
34
%% Cell type:markdown id: tags:
b)
%% Cell type:code id: tags:
``` python
def fibonacci_sum(n):
fib, fib_next = 0,1
summen = 0
if n==0:
return fib
elif n == 1:
return fib_next
else:
for i in range(2,n+1):
fib, fib_next = fib_next , fib+fib_next
summen += fib
return fib, summen
# Ev med arrays
def fibonacci_sum(k):
array = [0,1]
if k == 0 :
return 0
elif k == 1:
return 1
else:
summen = 1
for i in range(2,k):
array.append(array[i-1] + array[i-2])
summen += array[-1]
return array[-1], summen
```
%% Cell type:markdown id: tags:
c)
%% Cell type:code id: tags:
``` python
# ev med arrays
def fibonacci_list(k):
array = [0,1]
if k == 0 or k == 1:
return array[i]
else:
for i in range(2,k):
array.append(array[i-1] + array[i-2])
return array
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
a)
%% Cell type:code id: tags:
``` python
def geometrisk_rekke(r,n):
summen = 0
for i in range(n +1):
summen += r**i
return summen
geometrisk_rekke(0.5,4)
```
%% Output
1.9375
%% Cell type:markdown id: tags:
b) og c)
%% Cell type:code id: tags:
``` python
def geometrisk_rekke_tol(tol, r):
limit = 1/(1-r)
s, i = 0, 0
while limit - s >= tol:
s += r**i
i += 1
return i, limit-s
print(geometrisk_rekke_tol(0.001,0.5))
```
%% Output
(11, 0.0009765625)
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
import random
a = int(input("Oppgi en nedre grense: "))
b = int(input("Oppgi en øvre grense: "))
def gjettelek(a,b):
tilfeldigTall = random.randint(a,b)
guess = int(input("Make a guess? "))
while guess != tilfeldigTall:
if tilfeldigTall > guess:
print ("The correct number is higher")
else:
print("The correct number is lower")
guess = int(input("Make a guess? "))
print("Correct, well done! ")
gjettelek(a,b)
```
%% Cell type:code id: tags:
``` python
hemmelig_ord = input("Angi hemmelig ord")
antall_liv = int(input("Angi antall liv"))
def sjekk_bokstaver(hemmelig_ord, antall_liv):
while antall_liv > 0:
bokstav = input("Gjett en bokstav i ordet :")
if bokstav in hemmelig_ord:
print(" Stemmer, bokstaven er i ordet")
else:
antall_liv -= 1
print("bokstaven er ikke i ordet")
print("Du har ", antall_liv, "liv igjen")
sjekk_bokstaver(hemmelig_ord,antall_liv)
```
%% Output
Angi hemmelig ordhemmelig
Angi antall liv2
Gjett en bokstav i ordet :h
Stemmer, bokstaven er i ordet
Gjett en bokstav i ordet :e
Stemmer, bokstaven er i ordet
Gjett en bokstav i ordet :m
Stemmer, bokstaven er i ordet
Gjett en bokstav i ordet :m
Stemmer, bokstaven er i ordet
Gjett en bokstav i ordet :e
Stemmer, bokstaven er i ordet
Gjett en bokstav i ordet :l
Stemmer, bokstaven er i ordet
Gjett en bokstav i ordet :f
bokstaven er ikke i ordet
Du har 1 liv igjen
Gjett en bokstav i ordet :d
bokstaven er ikke i ordet
Du har 0 liv igjen
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
a)
%% Cell type:code id: tags:
``` python
ant_stud = int(input("Hvor mange studenter? "))
ant_emner = int(input("Hvor mange emner? "))
for x in range(1, ant_stud+1):
for y in range(1, ant_emner+1):
print("Stud", x, "elsker Emne", y, end=" ; ")
print()
```
%% Cell type:markdown id: tags:
EKSTRAOPPGAVE (her er selvsagt andre valg for personnavn, emnenavn og verb m.m. mulig):
%% Cell type:code id: tags:
``` python
from random import random
stud = ['Ada', 'Grace', 'Guido', 'Linus', 'Runa']
emner = ['Ex.phil.', 'Ex.fac.', 'Matte', 'ITGK']
for st in stud:
print(st, end = " ")
for em in emner:
tall = random()
if tall > 0.9:
verb = 'elsker'
elif tall > 0.6:
verb = 'digger'
elif tall > 0.3:
verb = 'liker'
else:
verb = '"liker"'
print(verb, em, end = "; ")
print()
```
%% Cell type:markdown id: tags:
b)
"Rett fram"-løsning på denne er en dobbel løkke med print() i den innerste. Dette programmet vil imidlertid gå fryktelig tregt:
%% Cell type:code id: tags:
``` python
for x in range(24):
for y in range(60):
print(x + ":" + y)
```
%% Cell type:markdown id: tags:
Årsaken til høyt tidsforbruk er at print ut på skjermen er tidkrevende. Hvis man ønsker et raskere program vil det derfor lønne seg å printe færre ganger, og da skrive større bolker av tekst hver gang. Mest ekstremt kan man samle opp alt som skal printes i en stor streng som man skriver ut når den doble løkka er ferdig:
%% Cell type:code id: tags:
``` python
ut_streng = ""
for x in range(24):
for y in range(60):
ut_streng += str(x) + ":" + str(y) + "\n"
# "\n" er linjeskift
print(ut_streng)
```
%% Cell type:markdown id: tags:
Dette vil gå mye raskere enn den første versjonen.
Men hva om man heller ville at det skulle gå tregere, at nytt klokkeslett skal vises når det ha gått akkurat et minutt? I så fall må den første versjonen brukes, med tillegg av kode for å vente et minutt mellom hver utskrift:
%% Cell type:code id: tags:
``` python
import time
for x in range(24):
for y in range(60):
print(x + ":" + y)
time.sleep(60)
```
%% Cell type:markdown id: tags:
I tillegg kan du evt. google deg fram til andre funksjoner i time-modulen som kan brukes til å få programmet til å starte med nåtidspunktet, heller enn på 0:0.
c)
%% Cell type:code id: tags:
``` python
for x in range(1, 11):
for y in range(1, 11):
print(x*y)
#finere utskrift:
for x in range(1, 11):
for y in range(1, 11):
print(x*y, end=' ')
print()
```
This diff is collapsed.
%% Cell type:markdown id: tags:
a)
101011001
b)
```
0 Dette tallet går opp i 4-gangern
2
4 Dette tallet går opp i 4-gangern
6
8 Dette tallet går opp i 4-gangern
```
c)
16
d)
8
e)
```
*
**
***
****
*****
```
%% Cell type:markdown id: tags:
a)
%% Cell type:code id: tags:
``` python
x = int(input("Angi hvor mange heltall du vil gi inn: "))
def summarize_x_tall(x):
summen = 0
counter = 0
while counter < x:
heltall = int(input("Skriv inn et heltall: "))
summen += heltall
counter += 1
return summen
summarize_x_tall(x)
```
%% Cell type:markdown id: tags:
b)
%% Cell type:code id: tags:
``` python
def multiply_to_thousand():
counter = 1
summen = 1
while summen < 1000:
summen = summen * counter
counter += 1
return summen
multiply_to_thousand()
```
%% Cell type:markdown id: tags:
c)
Siden vi ikke trenger brukerens svar til noe inni løkka, kan programmet kortest gjøres slik:
%% Cell type:code id: tags:
``` python
def quiztion(q,a):
antall = 0
while a != input("Hva er hovedstaden til Niue? "):
print("Det var feil, prøv igjen.")
antall += 1
print("Korrekt!! Du brukte", antall, "forsøk.")
quiztion("Hva heter hovedstaden til Niue", "Alofi")
```
%% Cell type:markdown id: tags:
Hadde vi derimot trengt svaret inni løkka, f.eks. at vi i stedet for "Det var feil..." vil gi ekko av svaret i tilbakemeldingen til brukeren, må vi bruke en variabel og gjøre første input() før løkka som vist under. Bruk av variabel for svar er helt ok også om du ikke strengt tatt trenger det, mange kan syns koden blir litt vanskelig å lese med en input()-setning rett i while-betingelsen.
%% Cell type:code id: tags:
``` python
korrekt = "Alofi"
svar = input("Hva er hovedstaden til Niue? ")
antall = 1
while korrekt != svar:
print(svar, "var feil, prøv igjen.")
svar = input("Hva er hovedstaden til Niue? ")
antall += 1
print("Korrekt!! Du brukte", antall, "forsøk.")
```
%% Cell type:code id: tags:
``` python
#a
wrong_answer = True #her setter vi denne til True for å hoppe inn løkka
while wrong_answer:
wrong_answer = False #alt annet enn gyldig svar vil hoppe ut av løkka
print("Du står utenfor en dør.")
a = input("Hva gjør du?").lower()
if a == "går tilbake" or a == "gå andre veien":
print("Du snur deg og vandrer hjem igjen. Du hører en skummel lyd og løper tilbake.")
elif a == "åpner døren" or a == "åpner":
print("Døren er låst")
elif a =="bank på" or a == "banker på":
print("Du får ingen respons")
else:
print("Det skjønte jeg ikke")
wrong_answer = True
```
%% Output
Du står utenfor en dør.
Hva gjør du?bank på
Du får ingen respons
%% Cell type:code id: tags:
``` python
#b
door = False
while not door:
print("Du står utenfor en dør.")
a = input("Hva gjør du?").lower()
if a == "går tilbake" or a == "gå andre veien":
print("Du snur deg og vandrer hjem igjen. Du hører en skummel lyd og løper tilbake.")
elif a == "åpner døren" or a == "åpner":
print("Du går inn døren.")
door = True
elif a =="bank på" or a == "banker på":
print("Du får ingen respons")
else:
print("Det skjønte jeg ikke")
```
%% Cell type:code id: tags:
``` python
#c og d
door = False
key = False
while not door:
wrong_answer = False #alt annet enn gyldig svar vil hoppe ut av løkka
print("Du står utenfor en dør.")
a = input("Hva gjør du?").lower()
if a == "går tilbake" or a == "gå andre veien":
print("Du snur deg og vandrer hjem igjen. Du hører en skummel lyd og løper tilbake.")
elif a == "åpner døren" or a == "åpner":
if not key:
print("Døren er låst")
else:
print("Du låser opp og går inn.")
door = True
elif a =="bank på" or a == "banker på":
print("Du får ingen respons")
elif a == "":
break
else:
print("Det skjønte jeg ikke")
```
%% Cell type:code id: tags:
``` python
#d
key = False
while door is False:
print("Du står ved enden av en vei, foran et hus med en lukket dør, det er en postkasse foran huset")
a = input("Hva gjør du?")
if a.lower()=="":
print("Bye bye")
break
elif a.lower()=="går tilbake":
print("Du snur deg og vandrer hjem igjen. Du hører en skummel lyd og løper tilbake.")
elif a.lower()=="åpner døren":
if not key:
print("Døren er låst")
else:
print("Du åpner døren og går inn")
door = True
elif a.lower()=="åpner postkassen":
print("Du finner en nøkkel i postkassen")
key = True
else:
print("Det skjønte jeg ikke")
```
%% Output
Du står ved enden av en vei, foran et hus med en lukket dør, det er en postkasse foran huset
Hva gjør du?
Bye bye
%% Cell type:code id: tags:
``` python
#b
door = False
key = False
flashlight = False
while door is False:
print("Du står ved enden av en vei, foran et hus med en lukket dør, det er en postkasse foran huset")
a = input("Hva gjør du? ")
if a.lower()=="":
print("Bye bye")
break
elif a.lower()=="går tilbake":
print("Du snur deg og vandrer hjem igjen. Du finner en lommelykt i veikanten. Du hører en skummel lyd og løper tilbake.")
flashlight = True
elif a.lower()=="åpner døren":
if not key:
print("Døren er låst")
else:
print("Du åpner døren og går inn")
door = True
elif a.lower()=="åpner postkassen":
print("Du finner en nøkkel i postkassen")
key = True
else:
print("Det skjønte jeg ikke")
light = False
while not light:
print("Du står i et mørkt rom. Du skimter en lysbryter på veggen")
b = input("Hva gjør du? ")
if b.lower() == "skrur på lysbryteren":
print("Bryteren fungerer ikke")
elif b.lower() == "bruker lommelykten":
print("Du ser deg rundt i rommet og ser en skattekiste. Du tar alt gullet.")
light = True
elif a.lower()=="":
print("Bye bye")
break
else:
print("Det skjønte jeg ikke")
print("Gratulerer du vant spillet!")
```
%% Output
Du står ved enden av en vei, foran et hus med en lukket dør, det er en postkasse foran huset
Hva gjør du? går tilbake
Du snur deg og vandrer hjem igjen. Du finner en lommelykt i veikanten. Du hører en skummel lyd og løper tilbake.
Du står ved enden av en vei, foran et hus med en lukket dør, det er en postkasse foran huset
Hva gjør du? åpner postkassen
Du finner en nøkkel i postkassen
Du står ved enden av en vei, foran et hus med en lukket dør, det er en postkasse foran huset
Hva gjør du? åpner døren
Du åpner døren og går inn
Du står i et mørkt rom. Du skimter en lysbryter på veggen
Hva gjør du? skrur på lysbryteren
Det skjønte jeg ikke
Du står i et mørkt rom. Du skimter en lysbryter på veggen
Hva gjør du? skur på lysbryteren
Bryteren fungerer ikke
Du står i et mørkt rom. Du skimter en lysbryter på veggen
Hva gjør du? bruker lommelykta
Det skjønte jeg ikke
Du står i et mørkt rom. Du skimter en lysbryter på veggen
Hva gjør du? bruker lommelykten
Du ser deg rundt i rommet og ser en skattekiste. Du tar alt gullet.
Gratulerer du vant spillet!
%% Cell type:markdown id: tags:
a)
%% Cell type:code id: tags:
``` python
def is_leap_year(year):
if year % 400 == 0:
return True
elif year % 100 == 0:
return False
elif year % 4 == 0:
return True
return False
def weekday_newyear(year):
weekday = 0 # Mandag
for i in range(1900, year):
days_in_year = is_leap_year(i) and 366 or 365
weekday = (weekday + days_in_year) % 7
return weekday
ukedager = [" man", "tir", "ons", "tor", "fre", "lør", "søn "]
for i in range(1900 ,1920):
print(i, ukedager[weekday_newyear(i)])
#Kodesnutten under er en annen måte å løse utskriftsoppgaven på
#print(i, [" man", "tir", "ons", "tor", "fre", "lør", "søn "][weekday_newyear(i)])
```
%% Cell type:markdown id: tags:
b)
%% Cell type:code id: tags:
``` python
def is_workday ( weekday ):
return 0 <= weekday < 5
```
%% Cell type:markdown id: tags:
c)
%% Cell type:code id: tags:
``` python
def workdays_in_year ( year ):
weekday = weekday_newyear ( year )
days_in_year = is_leap_year ( year ) and 366 or 365
workdays = 0
for i in range ( days_in_year ):
if is_workday ( weekday ):
workdays += 1
weekday = ( weekday + 1) % 7
return workdays
for i in range (1900 , 1920 ):
print (i, " har", workdays_in_year (i), " arbeidsdager ")
```
%% Cell type:code id: tags:
``` python
from sys import exit
import numpy as np
resultater = np.zeros(6)
def les_statistikk():
return np.loadtxt('Resultater.txt')
def lagre_statistikk():
tidligere_resultater = les_statistikk()
nye_resultater = resultater.copy()
nye_resultater += tidligere_resultater
np.savetxt('Resultater.txt', nye_resultater)
return nye_resultater
def lagre_og_skriv_statistikk():
arr = lagre_statistikk()
print('\nResultat av undersøkelse!')
print(f'Antall nye kvinner: {resultater[0]}. Totalt antall kvinner: {arr[0]}')
print(f'Antall nye menn: {resultater[1]}. Totalt antall menn: {arr[1]}')
print(f'Antall nye ikke-binære: {resultater[2]}. Totalt antall ikke-binære: {arr[2]}')
print(f'Antall nye personer som tar fag: {resultater[3]}. Totalt antall personer som tar fag: {arr[3]}')
print(f'Antall nye personer som tar ITGK: {resultater[4]}. Totalt antall personer som tar ITGK: {arr[4]}')
if resultater[3]:
print (f'Antall timer i snitt brukt på lekser denne undersøkelsen: {resultater[5] / (resultater[3])}')
if arr[3]:
print(f'Antall timer i snitt brukt på lekser totalt: {arr[5] / arr[3]}')
def sjekk_svar (spm):
svar = input (spm ).strip().lower()
if svar == "hade":
lagre_og_skriv_statistikk()
exit()
return svar
def les_streng (spm):
svar = ""
while svar == "":
svar = sjekk_svar ( spm)
return svar
def les_ja_nei (spm):
svar = ""
while not ( svar == "ja" or svar == "nei"):
svar = sjekk_svar ( spm)
return svar == "ja"
def les_tall (spm):
def sjekk_tall ( svar ):
#Returnerer True hvis svar kan konverteres til et positivt heltall (uten +); False ellers
if svar == "":
return False
for c in svar :
if not (ord("0") <= ord(c) <= ord("9")):
return False
return True
while True :
svar = sjekk_svar ( spm)
if sjekk_tall ( svar ):
return int( svar )
while True :
print ("\nVelkommen til spørreundersøkelsen!\n")
kjonn = les_streng (" Hvilket kjønn er du? [f/m]: ")
if not ( kjonn == "m" or kjonn == "f" or kjonn == "ib"):
continue
alder = les_tall (" Hvor gammel er du?: ")
if alder < 16 or alder > 25:
print("Du kan dessverre ikke ta denne undersøkelsen")
continue
resultater[0] += ( kjonn == "f" )
resultater[1] += ( kjonn == "m" )
resultater[2] += ( kjonn == "ib" )
fag = les_ja_nei (" Tar du et eller flere fag? [ja/nei ]: ")
resultater[3] += fag
if not fag :
continue
if alder < 22:
fag_ITGK = les_ja_nei (" Tar du ITGK? [ja/nei]: ")
else:
fag_ITGK = les_ja_nei (" Tar du virkelig ITGK?: ")
resultater[4] += fag_ITGK
timer_lekser = les_tall (" Hvor mange timer bruker du daglig (i snitt) på lekser?: ")
resultater[5] += timer_lekser
```
%% Cell type:markdown id: tags:
i)
%% Cell type:code id: tags:
``` python
import matplotlib.pyplot as plt
import numpy as np
def plot_resultater():
res = np.array([3, 4, 5, 12, 10]) # les_statistikk()[0:-1]
x = ('Menn', 'Kvinner', 'Ikke-binære', 'Fag', 'ITGK')
plt.bar(x, res, align='center', alpha=0.5)
plt.ylabel('Antall')
plt.title('Resultater fra spørreundersøkelse')
plt.show()
plot_resultater()
```
%% Cell type:code id: tags:
``` python
def gcd(a, b):
while b != 0: #kan også bruke 'while b:', siden betingelsen av et tall b blir sett på som True så lenge b!=0
# a, b = b, a % b
gammel_b = b
b = a % b
a = gammel_b
return a
def reduce_fraction (a, b):
divisor = gcd(a, b)
return a / divisor , b / divisor
print ("%d/%d" % reduce_fraction (5, 10))
print ("%d/%d" % reduce_fraction (4, 2))
print ("%d/%d" % reduce_fraction (42 , 13))
```
%% Cell type:code id: tags:
``` python
#######
# Del A
#######
GRAVITY = 9.81
def get_fall_time(distance):
return math.sqrt(2 * distance / GRAVITY)
def main():
distance = int(input('Antallet meter objektet skal ramle: '))
time = get_fall_time(distance)
print('Det tar', time, 'sekunder å ramle', distance, 'meter')
if __name__ == "__main__":
main()
#######
# Del B
#######
# Angående den gitte løsningen på problemet, står en liten diskusjon angående dette i tutorialen på toppen av siden.
# Endre funksjonen i forrige oppgave til noe som ligner dette
def get_fall_time(distance, gravity=GRAVITY):
return math.sqrt(2 * distance / gravity)
```
%% Cell type:markdown id: tags:
a)
%% Cell type:code id: tags:
``` python
def siksak():
print()
print("** ** ** ** ** ** ** ** **")
print(" ** ** ** ** ** ** ** **")
print()
print("Data fra spørreundersøkelse")
siksak()
print("Del 1: ... div. data her, ikke vist")
siksak()
print("Del 2: ... mer data ...")
siksak()
print("Del 3: ... enda mer data ...")
siksak()
print("Del 4: ... ytterligere data ...")
```
%% Cell type:markdown id: tags:
b) Løsningen her er definisjonen av superlativ() samt bruken av dette i en print midtveis, samt i kodefragmentet nederst. Disse tre er markert med ###
%% Cell type:code id: tags:
``` python
def komparativ(adj):
# GROVT FORENKLET; BLIR MINST 20 LINJER
if len(adj) >= 8: # unøyaktig
svar = "mer " + adj
else:
svar = adj + "ere"
return svar
def superlativ(adj): ###
if len(adj) >= 8:
svar = "mest " + adj
else:
svar = adj + "est"
return svar
#DEL AV KODEN HVOR SYSTEMET DISSER BRUKEREN
adj = input("Beskriv deg selv med et adjektiv: ")
print("Hah! Jeg er mye", komparativ(adj), "!")
print("Jeg er faktisk", superlativ(adj), "i hele verden!") ###
# DEL AV KODEN HVOR BRUKEREN TRENER PÅ Å GRADBØYE
adj = input("Skriv inn et adjektiv: ")
svar = input("Hva er komparativ for", adj, "? ")
fasit = komparativ(adj)
if svar == fasit:
print("Korrekt!")
else:
print("Feil, det var", fasit)
svar = input("Hva er superlativ for", adj, "? ") ### og videre nedover:
fasit = superlativ(adj)
if svar == fasit:
print("Korrekt!")
else:
print("Feil, det var", fasit)
```
%% Cell type:markdown id: tags:
EKSTRAOPPGAVE: Gitt likheten i if-else delene for komparativ og superlativ, lager vi en funksjon tilbakemelding() som dekker begge disse.
Som man kan se, benytter denne funksjonen seg av print() som tutorial sa ofte ikke er lurt. Her er det dog greit, siden hovedpoenget med funksjonen tilbakemelding() nettopp er å kommunisere med brukeren.
%% Cell type:code id: tags:
``` python
def komparativ(adj):
# GROVT FORENKLET; BLIR MINST 20 LINJER
if len(adj) >= 8: # unøyaktig
svar = "mer " + adj
else:
svar = adj + "ere"
return svar
def superlativ(adj):
if len(adj) >= 8:
svar = "mest " + adj
else:
svar = adj + "est"
return svar
def tilbakemelding(svar, fasit):
if svar == fasit:
print("Korrekt!")
else:
print("Feil, det var", fasit)
#DEL AV KODEN HVOR SYSTEMET DISSER BRUKEREN
adj = input("Beskriv deg selv med et adjektiv: ")
print("Hah! Jeg er mye", komparativ(adj), "!")
print("Jeg er faktisk", superlativ(adj), "i hele verden!")
# DEL AV KODEN HVOR BRUKEREN TRENER PÅ Å GRADBØYE
adj = input("Skriv inn et adjektiv: ")
svar = input("Hva er komparativ for", adj, "? ")
tilbakemelding(adj, komparativ(adj))
svar = input("Hva er superlativ for", adj, "? ")
tilbakemelding(adj, superlativ(adj))
```
%% Cell type:markdown id: tags:
c)
%% Cell type:code id: tags:
``` python
def komparativ(adj):
# GROVT FORENKLET; BLIR MINST 20 LINJER
if len(adj) >= 8: # unøyaktig
svar = "mer " + adj
else:
svar = adj + "ere"
return svar
def superlativ(adj):
if len(adj) >= 8:
svar = "mest " + adj
else:
svar = adj + "est"
return svar
def tilbakemelding(svar, fasit):
if svar == fasit:
print("Korrekt!")
else:
print("Feil, det var", fasit)
def main():
#DEL AV KODEN HVOR SYSTEMET DISSER BRUKEREN
adj = input("Beskriv deg selv med et adjektiv: ")
print("Hah! Jeg er mye", komparativ(adj), "!")
print("Jeg er faktisk", superlativ(adj), "i hele verden!")
# DEL AV KODEN HVOR BRUKEREN TRENER PÅ Å GRADBØYE
adj = input("Skriv inn et adjektiv: ")
svar = input("Hva er komparativ for", adj, "? ")
tilbakemelding(adj, komparativ(adj))
svar = input("Hva er superlativ for", adj, "? ")
tilbakemelding(adj, superlativ(adj))
main()
```
%% Cell type:markdown id: tags:
a) Kodesnutt 3 vil kjøre uten å krasje siden cakes-funksjonen som inneholder feilen aldri kalles. Dvs. at koden med feilen aldri blir prøvd kjørt, og dermed krasjer heller ikke programmet.
Feilen i kodesnutt 1: cake-variabelen i cakes-funksjonen blir definert etter at programmet har prøvd å kjøre kode som bruker den.
Feilen i kodesnutt 2: cakes-funksjonen prøver å bruke den lokale variabelen cupcake i cupcakes-funksjonen.
Feilen i kodesnutt 3: cake-variabelen blir aldri definert.
b)
%% Cell type:code id: tags:
``` python
def divide(x,y):
num = x//y
print("Heltallsdivisjon av",x,"over",y,"gir",num)
def square(x):
num = x**2
print("Kvadratet av",x,"er",num)
```
%% Cell type:markdown id: tags:
c) Det vil ikke ha noen innvirkning på koden, siden begge num-variablene er lokale variabler i hver sin funksjon, og vil dermed ikke ha noen innvirkning på hverandre.
%% Cell type:markdown id: tags:
a)
%% Cell type:code id: tags:
``` python
tol = float(input("Skriv inn tol: "))
def funksjon_produkt(tol):
count = 1
prod = 1
endring = prod*(1+(1/(count)**2)) - prod
while endring > tol:
prod = prod*(1+(1/(count)**2))
count += 1
endring = prod*(1+(1/(count)**2)) - prod
return prod, count
print("Produktet ble %.2f etter %.d iterasjoner" %(mult(tol)))
```
%% Cell type:markdown id: tags:
b)
%% Cell type:code id: tags:
``` python
def recursive_multi(tol, n = 1):
new = 1 + math.pow(1.0/n, 2.0)
if new > tol+1:
return new * recursive_multi(tol, n+1)
else:
print("Rekursjonsdybden er", n-1)
return new
print('Produktet ble:', format(recursive_multi(0.01),'.2f'))
```
%% Cell type:code id: tags:
``` python
#Dette er én mulig måte å løse oppgaven på
import random
def main():
dealer_c1 = draw_card()
dealer_c2 = draw_card()
vd = get_value(dealer_c1,dealer_c2)
print("Dealers cards are",dealer_c1,"and ?")
c1 = draw_card()
c2 = draw_card()
while True:
vp = get_value(c1,c2)
if is_Loss(c1,c2):
print("You got:",vp)
print("You lost")
return
print("Your score is:",vp)
s = input("Do you want another card? (J/N) ")
if s.upper() == 'J':
c2 = vp
c1 = draw_card()
continue
print("Dealers score is:",vd)
if is_Win(vp,vd):
print("You won!")
else:
print("You lost")
break
def draw_card():
c = random.randint(1,13)
if c > 10:
c = 10
return c
def is_Loss(c1,c2):
if get_value(c1,c2)>21:
return True
return False
def get_value(c1,c2):
if c1 == 1 and c2 == 1:
return c1+11
if c1 == 1 and not c2+11>21:
return c2+11
if c2 == 1 and not c1+11>21:
return c1+11
return c1+c2
def is_Win(value_player,value_dealer):
if value_dealer > 21 or value_player > value_dealer:
return True
return False
main()
```