Oppgave 1:


Du skal lage et program i Python som skriver ut navnet ditt, hvilken klasse du går i og navnet på skolen din.
Navn, klasse og skole skal være variabler slik at de kan endres.

navn = "Torgeir"         # oppretter en variabel med verdi Torgeir
alder = 10              # oppretter en variabel med verdi 10
klasse = "5A"           #oppretter en variabel med verdi 5A
skole = "Verket skole"   # oppretter en varabel med verdi Verket skole
print(navn)              # skriver verdien av variabelen til skjermen
print(alder)             # skriver verdien av variabelen til skjermen
print(klasse)            # skriver verdien av variabelen til skjermen
print(skole)             # skriver verdien av variabelen til skjermen

Kjør programmet og forklar hva som skjer.

Klarer du å gjøre om koden slik at programmet skriver til skjermen på denne måten:

Torgeir 10 5A Verket skole

Oppgave 2:


a)
Du skal lage et program som multipliserer to variabler a og b og skriver ut svaret til skjermen

a = 5       # oppretter variabelen a med verdi 5
b = 6   # oppretter variabelen b med verdi 6
print(a*b)  # multipliserer a og b og skriver produktet til skjermen.
  • Bytt variabelen a og b med andre heltall og skriv ut svarene til skjermen
  • Bytt variabelen a med et heltall og variabelen b med et desimaltall og skriv ut svaret til skjermen. I Python må du bruke  punktum som desimalskilletegn (7.5)

Skriv denne koden:

a = 5       # oppretter variabelen a med verdi 5
b = 3.5  # oppretter variabelen b med verdi 3,5
print(a*b)  # multipliserer a og b og skriver produktet til skjermen.
print(type(a)) # skriver ut hvilke type tall verdien til a er
print(type(b)) # skriver ut hvilke type tall verdien til b er


b)
Hva kalles heltall og hva kalles desimaltall i Python?

Oppgave 3:


Du skal lage et program som spør brukeren hva han/hun heter, alder, og favoritt rett.

navn = input("Hva heter du?")

Denne koden vil skrive dette til skjermen:

Hva heter du?

Nå kan brukeren skrive inn navnet sitt.

Skriv videre på koden slik at programmet også ber brukeren om input for alder og favorittrett.

Avslutt koden slik at programmet skriver følgende melding til brukeren:
Hei, Petter! Du er 46 år.  Favorittretten din er baconpølse.

Du kan skrive ut med denne koden:

print("Hei " + str(navn) + "! Du er " + str(alder) + " år. Favorittretten din er: " + str(rett))

Oppgave 4:


Skriv inn disse tre kodene og finn ut hva som er likt og hva som er ulikt:

tall = input("Skriv inn et tall: ")
svar = tall * 3
print("Tallet ditt ganger 3 er: ", svar)
tall = int(input("Skriv inn et tall: "))
svar = tall * 3
print("Tallet ditt ganger 3 er: ", svar)
tall = float(input("Skriv inn et tall: "))
svar = tall * 3
print("Tallet ditt ganger 3 er: ", svar)

Oppgave 5:


Denne koden fungerer ikke som den skal.
Kan du finne to feil og endre koden slik at den fungerer?

a = input("Hvor mange is skal du kjøpe? ")
svar = b * 15
print("Prisen blir: ", svar)

Oppgave 6:


Alexander har laget seg et Pythonprogram:

uker = 52
dager = 7
år = uker * dager
print(år)
  • Fortell hvordan Alexander har tenkt når han har laget programmet.
  • Hva skriver programmet ut til skjermen.
  • Lag et tilsvarende program som regner ut hvor mange timer det er i Juli.

Oppgave 7:


a = int(input("Hvor mange porsjoner skal lages? "))
b = a * 2.5
print("Du trenger", b, " dl mel. ")

a)
Hva gjør denne koden?
Hva blir skrevet ut til skjermen?

b)
Gjør om koden slik at den kan vise hvor mange dl saft du trenger dersom du skal lage 2, 3, 4 eller 5 liter ferdigblandet saft.
1 liter ferdigblandet saft: 1,5 dL saft
c)
Bytt input fra å være av type int til å bli av type float.

a = float(input...........

Hvor mange dL saft trenger du dersom du skal ha: 2.5, 4.5 eller 6.5 liter ferdigblandet saft?

Oppgave 8:


Anne har laget et program som skal regne ut hvor mye mel ho trenger til å lage a antall liter vaffelrøre.

a = int(input("Hvor mange liter vaffelrøre skal lages? "))
b = a * 4
print("Du trenger", b, " dl mel. ")

Anne prøver å taste inn 4.5 liter vaffelrøre, men programmet skriver ut en feilmelding til skjermen.
Hjelp Anne med koden slik at den vil fungere også med desimaltall.

Oppgave 9:


Kari har gjort en undersøkelse i klassen sin og spurt klassekameratene hvilke type kjæledyr de har hjemme.
Svarene ble:
Katt: 7
Hund: 5
Fugl: 3
Andre dyr: 4
Ingen:6

Kari ønsker å lage et Python- program der ho kan taste inn frekvensene til de ulike observasjonene og hun vil at programmet skal skrive ut et stolpediagram til skjermen.

from matplotlib import pyplot # importerer et bibliotek som kan lage diagrammer
x = ["katt", "hund","fugl","andre dyr","ingen dyr"] #lager en liste x med 5 elementer 
y = [7,5,3,4,6] #lager en liste y med frekvensene til elementene i liste x
pyplot.bar(x,y) # lager stolpediagram  med elementene fra x og y
pyplot.show() # skriver diagrammet til skjermen

Lag et stolpediagram ev en undersøkelse i klassen der du undersøker hvor mange som har ulike merker mobiltelefoner.
(Samsung, I-phone, Huawei, Nokia, Sony, andre merker).

En dag i Moss var det følgende temperaturer:
Klokkeslett – grader
kl 06.00 – 12
kl 12.00 – 14
kl 18.00 – 20
kl 22.00 – 21
Lag et linjediagram over temperaturutviklingen.
Tips: Bruk det du har lært i koden over i tillegg til det under.

x = []  # lag en liste for klokkeslett
y = []  # lag en liste for temperaturen
pyplot.plot(x,y) # lager linjediagram med elementene fra x og y 

Oppgave 10:


Birger skal på ferie til Barcelona. Der bruker de Euro (EUR), og han vil lage et program som raskt kan fortelle hvor mye ulike kjøp vil koste i norske kroner (NOK).

eur = 100 # antall Euro han skal betale
kurs = 10.5  # hvor mange NOK han må betale for 1 Euro
svar = eur * kurs
print(eur, "Euro koster kr: ", svar)

Anders og Eva i klassen til Birger hadde kjøpt billetter til en fotballkamp og betalt i Euro. Billettene kostet 75 EUR.
Anders hadde fått kurs: 10.95
Eva hadde fått kurs: 11.05
Hvor mye måtte Anders og Eva betale i norske kroner for billettene?

Oppgave 11:


a)

I Python er det lett å lage et program som gjentar en kode flere ganger.

for i in range(6): # en løkke der koden gjenras 6 ganger
    print(" koding er kult!")

Kjør programmet og sjekk hva det gjør.
Gjør om koden slik at det skriver ut Python er gøy! 10 ganger.

b)

for tall in range(12):
    print(tall)

Kjør programmet og forklar hva det gjør.
Prøv å skriv ut heltall fra 0 til og med 20

c)

for tall in range (4,19):
    print(tall)

Kjør programmet og forklar hva det gjør.
Prøv å skriv ut heltall fra og med 7 til og med 32
Prøv å skriv ut heltall fra og med -10 til og med 10

d)

for tall in range(2,20,2):
    print(tall)


Kjør programmet og forklar hva det gjør.
Kan du forandre koden slik at den skriver ut svarene i 2-gangen fra og med 2 til og med 40?
Gjør om slik at koden skriver ut tall i 3-gangen fra og med 3 til og med 60.

e)

for tall in range(4):
    print(tall)
    print("ferdig")

Denne koden skriver dette til skjermen:

0
ferdig
1
ferdig
2
ferdig
3
ferdig
for tall in range(4):
    print(tall)
print("ferdig")

Denne koden skriver dette til skjermen:

0
1
2
3
ferdig

Hvorfor blir utskrift til skjerm ulikt i de to programmene?
Lag et program som skriver ut tall fra og med 1 til og med 10, og som avslutter med å skrive ut: Dette er de ti første positive heltallene.

f)

for m in range (10):
    print(m, 3*m)

Kjør programmet og forklar hva det gjør.
Endre 3 tallet til andre tall og se hva som skjer.

g)

tall = 0
while tall < 40:
    print(tall)
    tall = tall + 1

Kjør koden og forklar hva som skjer.
Bytt 40 i koden med andre tall og forklar hva som skjer.
Bytt rekkefølge på linje 3 og 4 i koden og forklar hva som skjer.

h)

sum = 0
tall = float(input("Tast inn et tall: "))
sum = sum + tall
print(sum)

Test programmet og se hva det gjør.
Sett inn ulike verdier for sum og kjør koden. Fungerer den slik som du tenkte?

Gjør om koden slik:

sum = 0
for j in range(8):
    tall = float(input("Tast inn et tall: "))
    sum = sum + tall
    print(sum)

Kjør programmet og prøv å forstå hva som skrives til skjermen.
Hva gjør programmet for å legge sammen 8 tall?
Hva hadde skjedd dersom linje 1 hadde ligget inne i løkka (linje 3)?
Kan du endre programmet til å legge sammen ti tall?

i)

Arne vil lage et program som multipliserer 5 tall. Han har skrevet denne koden, men programmet fungerer ikke som han ønsker:

produkt = 0
for j in range(5):
    tall = float(input("Tast inn et tall: "))
    produkt = produkt * tall
    print(produkt)

Programmet skriver dette til skjermen:

Tast inn et tall:  2
0.0
Tast inn et tall:  4
0.0
Tast inn et tall:  7
0.0
Tast inn et tall:  10
0.0
Tast inn et tall:  6
0.0

Det er en liten logisk feil i koden til Arne. Kan du hjelpe han å finne den slik at programmet hans virker?

Oppgave 12:

Ali kan disse formlene for et rektangel:
areal = lenge * bredde
omkrets = lengde + bredde + lengde + bredde = 2 lengder + 2 bredder

Ali lager et program som regner ut areal og omkrets av ulike rektangler:

l = 0                     # l = lengde
b = 0                     # b = bredde
a = l * b                 # a = areal
o = 2 * l + 2 * b         # o = omkrets
print(a,o)                # skiver verdien av a og o til skjermen

Skriv koden og finn areal og omkrets av et rektangel med:
a) lengde = 5, bredde = 3
b) lengde = 20, bredde = 4

Ali ønsker å lage et program som kan regne ut areal og omkrets av en sirkel. Han kan formlene, men han får det ikke helt til.
Areal = pi * radius * radius
Omkrets = pi * diameter

c)
Kan du hjelpe han videre i koden?

pi = 3.14
radius = 4
diameter = 2 * radius
omkrets = 
areal = 
print(,)

d)
Bruk koden til Ali og finn omkrets og areal av en sirkel med radius = 2 og radius = 10.

Oppgave 13:

Ove har laget en kode der han skal vurdere hvilken verdi et ukjent tall t må ha for at to uttrykk skal bli like store.

print("5 + t = 25")   # skriver ut de to uttrykkene som bli like store
t = 0                 # det ukjente tallet t
vs = 5 + t           # venste side av uttrykket
hs = 25                  # høyre side av uttrykket
print(vs," = ", hs)      # skriver ut verdi av venstre side = verdi av høyre side

Skriv koden og hjelp Ove med å finne verdien av det ukjente tallet som gjør at venstre og høyre side får lik verdi.

Lag nye uttrykk for venstre og høyre side, og finn tallet som gir sidene lik verdi.

Oppgave 14:

Etter å ha jobber lenge med likninger så har Ove laget et program der brukeren kan taste inn et forslag til løsning.

print("5x + 4 = 24")
x = int(input("Tast inn løsningsverdien for x: "))
vs = 5 * x + 4
hs = 24
if vs == hs:
    print("Du fant riktg løsning!")
else:
    print("Det var ikke riktig, prøv igjen!")

Forklar hva som skjer i hver linje fra linje 1 til linje 8.

Lag et likt program for likningen 4x – 3 = 12 – x

Oppgave 15:

Ove skulle finne løsningen på 5x -3 = 2x +12.
Han synes det ble vanskelig så han ville lage et program som testet ut flere løsningsforslag ved å bruke en løkke.

print("5x - 3 = 2x + 12")
fra = int(input("hvilken x- verdi vil du starte fra?"))
til = int(input("hvilken x- verdi vil du slutte med?"))
for x in range(fra, til + 1):
    vs = 5 * x -3
    hs = 2 * x + 12
    if vs == hs:
        print("løsning: x = ", x)

Kjør programmet og forklar hvordan det virker.
Hvordan tenker du når du skal bestemme verdier for variablene fra og til?
Hvilke type tall kan brukeren taste inn?
Hva gjør programmet dersom det ikke finner en løsning?

Oppgave 16:

På en kino er det følgende priser:

  • Barn (2-12 år) : 80 kroner
  • Ungdom (13-17 år): 100 kroner
  • Voksen(over 18 år): 120 kroner

Familiene Olsen skal på kino. Familiene består av: far, mor, Bent(9), Astrid (11), Kari(12), Espen(15), Gunnar(17).

Kari har jobbet en del med programering på skolen og hun lager et program som kan regne ut hvor mye man må betale på kinoen avhengig av hvem som skal være med.

b = 80  # pris for en billett barn(2-12 år)
u = 100 # pris for en billett ungdom(13-17)
v = 120 # pris for en billett voksen
print(3b+2u+2v, "kroner")

Kari har tenkt riktig, men programmet fungerer ikke som det skal. Hun får denne feilmeldingen til skjermen:

File «/tmp/sessions/3c11ed60d010e419/main.py», line 4 print(3b+2u+2v, «kroner») ^ SyntaxError: invalid syntax

Kan du hjelpe Kari med å finne feilen i kodelinje 4?

Bruk programmet til å regne ut hva det vil koste for en familie med: to voksne, to barn og en ungdom dersom alle prisene har økt med 10 kroner.


Oppgave 17:

Kari har laget et program der bruker kan taste inn alder å få skrevet ut pris på kinobillett til skjermen.

b = 80  # pris for en billett barn(6-12 år)
u = 100 # pris for en billett ungdom(13-17)
v = 120 # pris for en billett voksen
g = 0   # under 6 år er gratis
alder = int(input("Tast inn alder: "))
if alder <= 5:
  pris = g
elif alder > 5 and alder < 13: 
  pris = b
elif alder > 12 and alder < 18:
  pris = u
else:
  pris = v
print("Prisen blir", pris, "kroner. ")

Kjør programmet og forklar hvordan det fungerer.

Kinoen kommer med en tilbud til de mellom 18 og 25 år på 110 kroner per billett.
Gjør endringer på koden slik at det blir tilpasset tilbudet.

Oppgave 18:

Når vi programmerer så kan vi lage ulike funksjoner som kan utføre ulike oppgaver når vi bruker funksjonen i koden. Vi kan også sende verdier inn i funksjonen.

Vi skal lage en funksjon som multipliserer til tall, og vi kaller vår funksjon for: mul
Under ser du to ulike måter å bruke funksjonen på.
Du skal kode både 1 og 2.
1:

def mul(a,b):       #Oppretter funksjonen mul som tar imot to argumenter/variabler a og b
  produkt = a * b   # produkt inneholder svaret på a * b
  print(produkt)    # funksjonen skriver ut verdien av produkt til skjermen
mul(3,6)           #sender 3 og 6 til funksjonen mul. 3 blir a og 6 blir b.

2:

def mul(a,b):        #funksjonen mul tar i mot to argumenter a og b
  produkt = a * b    # produkt inneholder svaret på a * b
  return(produkt)    # funksjonen returnerer svaret til linje 4
print(mul(3,6))      # sender 3 og 6 til funksjonen mul og skriver svaret til skjem
  • Kjør programmet og send ulike faktorer for a og b inn i funksjonen mul 1 og 2 ved å bytte ut tallene i kodelinje 4.
  • Hva er forskjellen på kode 1 og kode 2?

Oppgave 19:

Dersom du skal lage et program der du kan regne mellom strekning, fart og tid, så kan funksjoner i Python være lurt. I koden under er det brukt funksjoner for vei fart og tid. Funksjonene tar i mot variabler fra brukeren, gjør utregninger og sender svar tilbake som skrives ut til skjermen.

def fart(s,t):
  v = s / t
  return(v)
def strekning(v,t):
  s = v * t
  return(s)
def tid(s,v):
  t = s / v
  return(t)
inn = input("vil du finne fart(v), strekning(s) eller tid(t) ?")
if inn == "v":
  s = float(input("Tast inn strekning i km: "))
  t = float(input("Tast inn tid i timer"))
  print(fart(s,t), "km/t")
elif inn == "s":
  v = float(input("Tast inn fart i km/t: "))
  t = float(input("Tast inn tid i timer"))
  print(strekning(v,t), "km")
else:
  s = float(input("Tast inn strekning i km: "))
  v = float(input("Tast inn fart i km/t: "))
  print(tid(s,v)," timer")

Bruk programmet til å finne sammenhenger mellom strekning, fart og tid.
a)
Hva blir farten dersom du kjører 50 km på 2.5 timer?
b)
Hva blir strekningen dersom du kjører med en snittfart på 35 km/t i 2.5 timer?
c)
Hvor lang tid vil du bruke til skolen dersom strekningen er 4 km og du sykler med en snittfart på 18km/t?
d)
Hvorfor er det ulike typer input i feks linje: 10 og 12?
e)
Hvilken type input blir linje 10 og 12?

Oppgave 20:

Lars og Aisha har laget en kode som skal skiver ut de 10 første partallene:

for tall in range(1,10):
  print(tall,tall*2)

Kjør koden og se om det fungerer helt som de har tenkt.
Kan du hjelpe dem?

Lag en kode som skriver ut de 10 første kvadrattallene.

Oppgave 21:

Pål har begynt å selge aviser på lørdager. Han har laget en et program med en funksjon som regner ut lønnen avhengig av hvor mange aviser han selger og fortjenesten han får per avis.

def lonn(x,y):
  lonn = x * y
  return(lonn)
x = 20      #antall sogte aviser
y = 10      # fortjeneste per avis
print(lonn(x,y), "kroner")     #sender x og y til funksjonen og skriver ut funksjonsverdien til skjerm
  

a)
Hvor mye tjente Pål på å selge 20 aviser.
b)
Hva vil han tjene dersom han selger 30 aviser og fortjenesten er 15 kr per avis?
c)
Hvor mange aviser må han selge for å tjene mer enn 750 kr dersom fortjenesten er 15 kr per avis?

Oppgave 22:

Pål har lest at en funksjon på formen: y = ax + b blir en rett linje i et koordinatsystem.
Dersom Pål får en ny avisjobb der han tjener 10 kr per avis og 50 kroner fast hver dag han jobber så blir: lønn = 10*x+50
Pål ville prøve å lage et program som viser sammenheng mellom hvor mange aviser han selger og hva lønna blir. Han ville også bruke pyplot til å lage grafen til lønnsfunksjonen.

from matplotlib import pyplot
def lonn(x):
    return(10 * x + 50)
x = []
y = []
for i in range(1,30):
    x.append(i)
    y.append(lonn(i))
pyplot.plot(x,y)
pyplot.show()

Bruk diagrammet og se hva han vil tjene dersom han selger 20 aviser.

Oppgave 23:

Petter har laget seg en kode som skriver en tallfølge til skjermen:

for n in range(10):
  print("tall",n,"-", n*2)


tall 0 - 0
tall 1 - 2
tall 2 - 4
tall 3 - 6
tall 4 - 8
tall 5 - 10
tall 6 - 12
tall 7 - 14
tall 8 - 16
tall 9 - 18

a)
Hvilke type tall er det programmet til Petter skriver til skjermen?
b)
Petter ønsker at programmet skal skrive ut fra tall 1 til tall 10. Kan du hjelpe han med koden?

Petter fikk hjelp av en i klassen. De gjorde endringer på koden og fikk denne utskriften til skjermen:

tall 1 - 0
tall 2 - 1
tall 3 - 4
tall 4 - 9
tall 5 - 16
tall 6 - 25
tall 7 - 36
tall 8 - 49
tall 9 - 64
tall 10 - 81

c)
Hvordan endret de koden?

Oppgave 24:

Geir ønsker å lage en kode som kaster en tilfeldig terning hver gang han kjører programmet. Han får hjelp av Linn.

import random
terning = random.randint(1,6)
print(terning)

a)
Kjør programmet og sjekk om det genererer nye terningsverdier mellom 1 og 6.

import random
while True:
  svar = input(" Trykk enter for å kaste terning. ")
  terning = random.randint(1,6)
  print(terning)


b)
Nå er koden endret slik at de kan trykke enter hver gang det skal kastes en ny terning. Hva er endret i koden?


c)
Geir og Linn ønsker å ta vare på alle terningsverdiene i en liste de kaller for res.

import random
res = []
while True:
  svar = input(" Trykk enter for å kaste terning. ")
  terning = random.randint(1,6)
  res.append(terning)
  print(terning)
  print(res)


De jobber videre med koden og får hjelp av læreren:

import random
res = []
while True:
  svar = input(" Trykk enter for å kaste terning. Trykk a for å vise oversikt ")
  if svar == "":
    terning = random.randint(1,6)
    res.append(terning)
    print(terning)
    print(res)
  elif svar == "a":
    for i in range(1,7):
      print((i),": " + str(res.count(i)))

d)
Kast 20 kast ved å trykke enter. Trykk så tasten a + enter og se hva som skjer.

Klassen mener at det er like stor sannsynlighet får å få alle utfallene på en terning (1-2-3-4-5-6). Dersom de kaster mange ganger så skal de få tilnærmet like mange av hver verdi. Klassen ønsker å sjekke dette med en algoritme i Python.

import random
res = []
for i in range(100):
  terning = random.randint(1,6)
  res.append(terning)
print(res)
for j in range(1,7):
  print((j),": " + str(res.count(j)))

e)
Kjør koden noen ganger å se om dere får like mange av hver verdi.


f)
Linje 3 gjør at programmet kaster en tilfeldig terning 100 ganger. Prøv med 1000- 10000-100000 kast.

for i in range(1000):

Da lønner det seg å kommentere ut linje 6. Hvorfor det?

#print(res)

Hundre tusen kast ga dette resultatet:

1 : 16812
2 : 16599
3 : 16599
4 : 16727
5 : 16600
6 : 16663

Det er fremdeles ikke nøyaktig like mange av hver. Hvor for ikke?

Klassen ønsket å bruke dette programmet til å se på statistikk over resultatene. De ville lage et program som skriver ut gjennomsnitt, median og typetall av datamaterialet i lista res.

import random
import statistics
res = []
while True:
  svar = input(" Trykk enter for å kaste terning. Trykk a for å vise oversikt ")
  if svar == "":
    terning = random.randint(1,6)
    res.append(terning)
    print(terning)
    print(res)
  elif svar == "a":
    for i in range(1,7):
      print((i),": " + str(res.count(i)))
  print("Gjennomsnitt: " + str(round(sum(res)/len(res),2)))
  print("Median: " + str(statistics.median(res)))
  print("Typetall: " + str(statistics.mode(res)))


g)
Kjør programmet og snakk sammen om hva som menes med disse sentralmålene.

h)
Hvilke biblioteker måtte vi importere for å bruke koden som ga oss sentralmålene?

Oppgave 25:

Nå skal vi bruke litt av koden fra oppgave 24 der programmet kastet terninger og viste oversikt over hvor mange det ble av de ulike verdiene.

import random
res = []
for i in range(100):
  terning = random.randint(1,6)
  res.append(terning)
for j in range(1,7):
  print((j),": " + str(res.count(j)))

a)
Kjør programmet noen ganger slik at du forstår hva det gjør.

Nå skal du utvide programmet med kode som viser denne oversikten som et stolpediagram.
Da må du importere pyplot fra biblioteket matplotlib.

import random
from matplotlib import pyplot
x = [] # oppretter en liste x, som skal inneholde treningene 1-2-3-4-5-6 på x-akesn i diagrammet.
y = [] # oppretter en liste y, som skal inneholde frekvensen til de ulike terningsverdiene.
res = []
for i in range(100):
  terning = random.randint(1,6)
  res.append(terning)
for j in range(1,7):
  x.append(j) # legger verdiene 1,2,3,4,5,6 i lista x.
  y.append(res.count(j)) # teller hvor mange det er av hver verdi i lista res, og legger antallaet i lista y.
  print((j),": " + str(res.count(j)))
  pyplot.bar(x,y) # viser stolpadiagram over dataene i x og y
pyplot.show() # aktiverer funksjonen pyplot

b)
Kjør programmet fem ganger og studer stolpene/frekvensene. Snakk med hverandre om hva dere observerer.
Er stolpene jevne? Forklar.
c)
Gjør endringer i linje 6 og la programmet gjøre 1000, 10000, 100000, 1000000 antall kast.
Hvordan er fordelingen mellom stolpene nå? Forklar.

Oppgave 26:

Geir og Linn har lest at forventningsverdien til en terning er 3,5. Geir sier at det ikke går an å få 3,5 når en kaster en terning. Det er helt riktig, men Linn sier at det gjelder ved de store talls lov: dersom man kaster en terning mange nok ganger så vil vi få like mange enere, toere, treere, firere, femmere og seksere.

Linn vil vise Geir en kode som finner hva gjennomsnittet blir da:

terning = [1,2,3,4,5,6]
print(sum(terning)/len(terning))

Koden får denne utskriften:

3.5

Dette gjelder da også dersom du får flere av de ulike verdiene, så lenge du får like mange av hver.

terning = [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6]
print(sum(terning)/len(terning))
3.5

a)
Sjekk at forventningsverdien(gjennomsnittet) blir 3,5 dersom du får 6 av hver verdi.

Arne i klassen fant en annen måte å finne gjennomsnittet på ved å importere biblioteket numpy:

import numpy
terning = [1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6]
print(numpy.mean(terning))

b)
Test denne koden også.

Vi kan teste ut de store talls lov ved å la Python kaste et høyt antall terninger og regne ut gjennomsnittet.

import random
res = []
for i in range(100):
  t = random.randint(1,6)
  res.append(t)
print(sum(res)/len(res))

c)
Sjekk hva gjennomsnittet blir ved 100, 1000, 10000, 100000, 1000000 kast.

Dere vil se at vi kommer nærmere og nærmere 3,5.
Dersom vi legger inn denne koden i linje 6, så runder vi av svaret til to desimaler:

print(round(sum(res)/len(res),2))

La oss tenke at vi har terninger med 4-6-8-10-12-14-16-18-20 sider.
Hvordan utvikler forventningsverdien(gjennomsnittet) seg da?

d)
Sjekk med denne koden:

terning = [1,2,3,4] # terning med 4 sider
print(sum(terning)/len(terning))
terning = [1,2,3,4,5,6,7,8] # terning med 8 sider
print(sum(terning)/len(terning))

Snakk sammen: forklar hvorfor gjennomsnittet utvikler seg som det gjør.

Sjekk også ved å bruke koden som kaster mange ganger for oss:

import random
res = []
for i in range(100000): #endrer antall kast
  t = random.randint(1,20) #endrer antall sider på terningen
  res.append(t)
print(round(sum(res)/len(res),2))