Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

1.1.1: Regnerekkefølge og potenser

Overbevis deg om rekkefølgen uttrykkene under beregnes i. Programmer hvert uttrykk og sjekk at det ble riktig.

a) 2+3*4+6/2

b) 1/2**3**2

c) 1/(1+1/(1+2))

d) (1+2**3)**(5-3*2)

e) 2**-1*3
Vis løsningsforslag
print(2+3*4+6/2)
print(1/2**3**2)
print(1/(1+1/(1+2)))
print((1+2**3)**(5-3*2))
print(2**-1*3)

som gir:

17.0
0.001953125
0.75
0.1111111111111111
1.5

Vi har for det meste vanlige regneregler her. Men i programmering er det viktig å huske at potensene alltid regnes ut først og fra høyre mot venstre i et uttrykk, f.eks. slik:

2**3**2 = 2**(3**2)=2**9 = 512

1.1.2: Regnerekkefølge

  1. Regn ut følgende uttrykk for hånd og i Python:
    alt text

  2. Hva er forskjellen på uttrykk 1 og 2?

  3. Lag en oppskrift over hvilke regneoperasjoner som utføres i hvilken rekkefølge.

  4. Lag et program som regner ut alt text. Var det noe du måtte passe spesielt på i koden din?

Vis løsningsforslag

Oppgave 1
pythonkode:

print(1 + 2*3)
print((1+2)*3)
print((1+2)/3)
print(3*(2+2/2)+4/2)
print(1+2/2)
print(2*(2+1)**2)

utskrift:

7
9
1.0
11.0
2.0
18

Det er viktig å passe på at det alltid står gangetegn mellom tall og parenteser (generelt må det alltid være regneoperatorer mellom tegn, tall og uttrykk), som i uttrykk 4 og 6.

Oppgave 2
I uttrykk 1 ganges det først og så legges det sammen: 1 + 2*3 = 7
I uttrykk 2 legges det sammen først, og så ganges det: (1+2)*3 = 9

Oppgave 3
Regnerekkefølgen i Python er:
Potenser -> Divisjon -> Multiplikasjon -> Addisjon og subtraksjon

Oppgave 4
pythonkode:

print(-3 + (1-9)/4 + 4/(12-3*2))

utskrift:

-4.333333333333333

Her er det viktig å passe på at uttrykk som står over eller under brøkstrek står i parentes, hvis ikke får vi samme problemstilling som vi diskuterte i oppgave 2.

1.1.3:Aritmetikk og variabler

Programmer ulike uttrykk og sjekk at du forstår hvorfor resultatet blir som det blir.

Noen eksempler:
1. Hvordan programmerer du brøken alt text?
2. Hva blir 2**3**2?
3. Hva blir 1+2*6/4*8-1?

Vis løsningsforslag

Opppgave 1
Det er viktig å være bevisst på hva som skal være under, og hva som skal være over brøkstreken. For å presisere dette i programmet, bruker vi parenteser som følger:

(a+b)/(c+d)

Nå blir det som er inne i parentesene, regnet ut først, og vi får det vi ønsker. Hadde vi ikke brukt parenteser, ville programmet fulgt vanlige regneregler (divisjon før addisjon) og regnet slik:

a+b/c+d = a+(b/c)+d

Oppgave 2
Siden programmet regner potenser først, fra høyre mot venstre, vil vi få:

2**3**2 = 2**9 = 512

Oppgave 3
Programmet regner alltid ut divisjon først, så multiplikasjon, deretter addisjon og subtraksjon. Programmet vil derfor regne som følger:

1+2*6/4*8-1 = 1+(2*(6/4)*8)-1 = 24.0

1.1.4: Produkt av variabler

  1. Hva er en variabel? Gi eksempler.

  2. Hva er variablene i uttrykket y = 2x + 1? Hva med i uttrykket a = b - 2c + 3?

  3. Lag et program som lagrer to tall i variabler, og skriver ut produktet av tallene som er lagret i variablene dine.

Vis løsningsforslag

Oppgave 1
En variabel i matematikken er et symbol som representerer et vilkårlig tall. I programmering kan en variabel være et tall, men også en tekst (streng).

Oppgave 2
y, x, a, b og c er variabler.

Oppgave 3

a = 2       #definerer først to variabler
b = 3

print(a*b)  #skriver ut produktet slik:
            #alternativt kan du lagre produktet i en ny variabel, 
             og  printe den variabelen.

1.1.5:Oppdatering av variabler

Hva blir resultatet av de to operasjonene:

a = 10
a = a + 5
Vis løsningsforslag

Den første operasjonen tilegner a en verdi lik 10. Den neste operasjonen tilegner a en verdi som er summen av den tidligere definerte a-verdien og 5. Vi får altså at:

a=10
a=a+5 #Dette tilsvarer a= 10+5

Hver gang du har en variabel på venstre siden av et likhetstegn, så gir du variabelen en ny verdi. Hvis du har samme variablen på hver siden av likhetstegnet, så vil programmet bruke den tidligere definerte verdien for a. Dette er grunnen til at hvis du bare kjører andre linjen alene, altså:

a=a+5

vil du få en feilmelding som sier at a ikke er definert. Dette er fordi det ikke er noen tidligere definisjon for a.

1.1.6: Flytte variabelverdier

Du har to variabler a og b som begge inneholder verdier. Skriv et program som flytter innholdet i a til b, og innholdet i b til a.

Vis løsningsforslag

For å flytte verdien fra a til b, og b til a, må vi innføre en tredje variabel c.

a = 3
b = 4

c = b   #lagrer verdien til b i c
b = a   #setter b = a
a = c   #setter a = c som er lik den originale b

1.1.7: Variabler av variabler

Gi variablene a, b og c verdier med tilordningene a=1, b=2 og c=3.0. Hva er verdien av a etter at hver av de følgende operasjonene er utført i Python? Regn for hånd først!

  1. a = a/c

  2. a = b**+c

  3. a = b/c*c/b

Vis løsningsforslag

Vi skriver følgende program:

a=1
b=2
c=3.0


#deloppgave 1)
a= a/c
print(a)

#deloppgave 2)
a=b**+c
print(a)

#deloppgave 3)
a= b/c*c/b
print(a)

Dette gir oss løsningen:

0.3333333333333333 #svar 1)
8.0 #svar 2)
1.0 #svar 3)

Fordi vi hele tiden skriver "a=", så oppdaterer vi variablen a, og a endrer verdi gjennom programmet.

a=1; b=2; c=3.0 #a får verdi =1

#linjen under oppdaterer a til "gamle a"/c = 1/3= 0.33333...
a= a/c 
print(a)

#linjen under oppdaterer a til b**+c = 8**1=8
a=b**+c
print(a)

#Linjen under oppdaterer a til b/c*c/b = 1/3*3/1 = 1
a= b/c*c/b
print(a)

Kommentar:
Når man skriver brøker i Python, er det lurt å bruke parenteser slik at du vet at uttrykket er som du vil ha det. Siste deloppgave viser godt at det kan bli forvirrende når man ikke har parenteser.

1.1.8:Variabler og potenser

Skriv et program som regner ut tallene alt text, alt text og c=b/a. Forsøk å forklare hva som skjer? (Størrelsen på c er omtrent alt text)

Vis løsningsforslag

I denne oppgaven må vi først definere variablene a og b før vi kan regne ut variabelen c. Dette er fordi c er avhengig av både a og b. Vi må bruke print() for å kunne se verdien til c. Potenser regnes ut med "**", så vi definerer a og b på følgende måte:

#definerer a og b
a= 2**1000
b= 3**1000

c=b/a #definerer c

print(c) #printer c i terminalen

Vi får da ut at:

1.2338405969061735e+176

Siden e+176 er en annen måte å skrive 10^176, kan vi se at tallet vårt er i riktig størrelsesorden.

1.1.9: Irrasjonale tall og maskinnøyaktighet

Programmer følgende:

b = 2**0.5
a = b*b
print(a)
print(a-2)

Forklar resultatet!

Vis løsningsforslag

I denne oppgaven ser vi en typisk unøyaktighet på datamaskinen. Første operasjonen setter b lik roten av to. Siden roten av to er et irrasjonalt tall, har det uendelig mange desimaler. Datamskinen må derfor runde av tallet med maskinnøyaktighet. Dette er grunnen til at a=b*b (altså roten av to ganger roten av to) ikke blir nøyaktig lik to. Dette er også grunnen til at vi får et veldig lite tall når vi tar a-2. a-2 ville vanligvis gitt 0, men på grunn av unøyaktigheter på datamaskinen får vi et veldig lite tall i størrelsesorden 10^(-16). Dette er altså størrelsesordenen til unøyaktigheten.

1.2.1: Input

1. Skriv et program som tar navnet til bruker som input og skriver ut "hei" og navnet til brukeren.
2. Prøv nå å kjøre programmet nedenfor:

fodsel = input("Når ble du født?")

tid_siden = 2019-fodsel

print("Det er",tid_siden,"år siden")

Hvorfor får du feilmelding når du kjører programmet? Hva må du endre på for at programmet skal kjøre?

Vis løsningsforslag

Oppgave 1
Vi starter med å skrive:

Navn = input("Hva er navnet ditt?")     #Henter input fra bruker

print("Hei", Navn)                      #Skriver "Hei", så navnet til bruker

Nå har vi et program som spør bruker om navn, og deretter skriver "Hei + navn". Når vi bruker input()-funksjonen, tas denne alltid inn som en streng (tekst).

Oppgave 2
Når vi kjører programmet får vi en feilmelding som ser noe slik ut:

TypeError: unsupported operand type(s) for -: 'int' and 'str'

Dette er fordi input() alltid lagrer variabler som streng. For å kunne regne med dem, må vi først konvertere dem til flyttall ved hjelp av float()-funksjonen. Vi må da skrive:

fodsel = input("Når ble du født?")

fodsel = float(fodsel)      #Denne linjen konverterer til flyttall

tid_siden = 2019-fodsel

print("Det er",tid_siden,"år siden")

Hvis du skal bruke tallet til å indeksere eller i en løkke, må du heller konvertere til heltall. For å konvertere til heltall må du bruke int()-funksjonen.

1.2.2: Input og potenser

  1. Hva betyr alt text? Hvordan skriver du dette i Python?

  2. La n og a være tilfeldige tall. Hva betyr alt text?

  3. Lag et program som tar et grunntall a og en eksponent n som input og som skriver ut hva alt text blir. Bruk passende matematiske begreper når du lager variabler og skriver ut svaret.

Vis løsningsforslag

Oppgave 1
2^4=2*2*2*2, det skrives som 2**4 i python.

Oppgave 2
a^n betyr at vi ganger a med seg selv n ganger.

Oppgave 3
pythonkode:

a = input("Grunntall = ? ") #får tall fra bruker
a = float(a)                #konverterer streng til flyttall
n = input("Eksponent = ? ")
n = float(n)

print(a**n)                 #printer ut 

Husk at når du får input, blir det lagret som streng, selv om du skriver et tall. Derfor må vi konvertere string til float.

utskrift:

Grunntall = ? 2     #jeg skrev inn 2     
Eksponent = ? 3     #jeg skrev inn 3
8.0                 #får til svar at 2^3=8

1.2.3: Kvadrattall og kvadratrøtter

  1. Lag et program som tar et tall som input. Programmet skal kvadrere tallet og skrive ut dette. I tillegg skal det skrive ut rota av dette kvadratet.

  2. Hva er sammenhengen mellom tallene som kvadreres og kvadratrota av dette igjen?

Vis løsningsforslag

Oppgave 1
I koden under har vi brukt sqrt(). Da må vi først importere pylab. Alternativt kan du opphøye i 1/2, da trenger du ikke importere pylab. Det er viktig å huske at når vi får et tall som input, blir det lagret som streng. Derfor må vi konvertere ved hjelp av float().

from pylab import *  #importerer pylab fordi vi bruker sqrt() under

tall = input("Hvilket tall vil du kvadrere? ")  #får input
tall = float(tall)                              #konverterer til tall

kvad = tall**2                                  #kvadrerer
print("Kvadratet av ditt tall er: ", kvad)

rot = sqrt(kvad)                                #eller: kvad**(1/2)
print("Roten av kvadratet er: ", rot)

Oppgave 2
Sammenhengen mellom tallene som kvadreres og roten av dette igjen er at tallverdien er lik, men fortegnet kan variere.

1.3.1: Fra input til output

Du skal nå lage tre forskjellige program som krever et input, tar en beslutning og gir et output.

  1. Lag et program som spør brukeren om alderen til brukeren. Skriv ut en kommentar som avhenger av om alderen er under eller over 30. Utvid programmet til å skille mellom flere alderskategorier.

  2. Lag et program som tar et tall som input. Programmet skal så vurdere og skrive ut om tallet er et positivt tall, negativt tall eller null.

  3. Lag et program som tar to tall som input. Programmet skal skrive ut hvilket av tallene som er minst.

Vis løsningsforslag

Se i bunnen av feltet for en kommentar om konvertering av tekst til tall.

Oppgave 1
Først skal vi skille de over og under 30 år. Det gjør vi med en if-else-statement:

alder = input("Hvor gammel er du? ") #henter inputverdi
alder = float(alder)                 #konverterer streng til float

if alder < 30:  #under 30?           #under 30?
    print("Under 30")                #printes hvis under 30
else:                                #30 eller eldre
    print("Over 30")                 #printes hvis 30 eller eldre

For å skille mellom flere aldersgrupper må vi legge inn flere beslutninger. Dette gjør vi ved hjelp av elif. Vi kan ha så mange elif vi vil, men i dette eksempelet bruker vi bare én.

alder = input("Hvor gammel er du? ")
alder = float(alder)

if alder < 18:                      #bruker under 18?
    print("Ungdom")
elif alder >= 18 and alder < 67:    #bruker mellom 18 og 67?
    print("Voksen")
else:                               #67 eller eldre
    print("Pensjonist")

Oppgave 2
Nå skal vi vurdere om et tall er negativt, positivt eller null. Da kan vi lage en if-elif-else-statement. Oppgaven løses på samme måte som oppgave 1, men med andre betingelser og utskrifter.

tall = input("Hvilket tall vil du vurdere? ")
tall = float(tall)

if tall < 0:
    print("Tallet er negativt")
elif tall > 0:
    print("Tallet er positivt")
else:
    print("Tallet er null")

Oppgave 3
Denne oppgaven er veldig lik oppgave 2, bortsett fra at vi får input av to tall, og bruker andre betingelser og utskrifter..

tall1 = input("Skriv inn ett tall: ")
tall1 = float(tall1)
tall2 = input("Skriv inn enda ett tall: ")
tall2 = float(tall2)
if tall1 < tall2:
    print(tall1, "er minst")
elif tall1 > tall2:
    print(tall2, "er minst")
else:
    print("Tallene er like store")

Kommentar
Når vi ber om alder som input, får vi et tall i tekstformat, som må konverteres til tallformat. Dette er de to første linjene i koden. Disse to linjene kan enkelt skrives på en linje ved å bruke float() rundt input(). Eksempel:

alder = float(input("Hvor gammel er du? ")) #får input og konverterer

1.3.2: Faktorer

  1. Hva menes med at 3 er en faktor i 27?

  2. Lag et program som tar et tall som input og avgjør om 3 er en faktor i dette tallet.

  3. Hvorfor gir det lite mening å spørre om 1 er en faktor i tallet?

Vis løsningsforslag

Oppgave 1
At 3 er en faktor i 27 betyr at 27 er delelig på 3.

Oppgave 2
Vi tester, ved hjelp av modulus. Modulus gir rest 0 hvis tallet er delelig på 3.

tall = input("Skriv inn et tall: ") #input av tall (string)
tall = float(tall)                  #konverterer string til float
if tall%3 == 0:           #sjekker om tall er delelig med 3
    print("3 er en faktor i dette tallet")
else:
    print("3 er ikke en faktor i dette tallet")

Oppgave 3
Det gir lite mening å spør om 1 er en faktor i tallet, fordi å dele på 1 endrer ikke tallet. Vi kan også si at 1 er en faktor i alle tall.

1.3.3: Mount Everest

1.
Lag et program som spør hvor mange meter over havet noen befinner seg, og deretter printer "n er m% av høyden til Mount Everest".

for eksempel: "345.60 m er 3.91 prosent av Mount Everest"

2.
Utvid nå dette programmet til å kommentere brukerens høyde over havet, med flere forskjellige kommentarer avhengig av hvor høyt vedkommende befinner seg.

Vis løsningsforslag

oppgave 1

hoyde = input("Hvor høyt(i meter) sitter du?")
hoyde = float(hoyde)    #konverterer hoyde til flyttall

everest = 8848 #høyden til Everest
prosentAndel = (hoyde/everest)*100  #regner om til %

print("Du er på ",round(prosentAndel,2)," prosent av Mount Everest ved ",round(hoyde,2)," meter")

Det er lurt å unngå spesiealtegn som æ,ø og å i variabelnavn ettersom dette ofte kan føre til feil.

Programmet over kunne alternativt bli skrevet slik:

hoyde = float(input("Hvor høyt(i meter) sitter du?"))   #konverterer input til float

prosentAndel = (hoyde/8848)*100 #regner om til %

print("Du er på ",round(prosentAndel,2)," prosent av Mount Everest ved ",round(hoyde,2)," meter")

Vi kjører programmet og får:

Hvor høyt sitter du? 345.6
Du er på 3.91 prosent av Mount Everest ved 345.60 meter

Oppgave 2

For å kunne kommentere høyden til personen, må vi legge til flere beslutninger. Desto flere beslutninger vi har, desto flere kommentarer kan vi ha. Vi skriver følgende program:

hoyde = input("Hvor høyt(i meter) sitter du?")
hoyde = float(hoyde)

everest = 8848 #høyden til Everest
prosentAndel = (hoyde/everest)*100#regner om til %

if hoyde < 0:
    print("Er du i en tunnel?")
elif hoyde==0:
    print("Du sitter på bakken eller vannet")
elif hoyde > 0 and hoyde<2:
    print("Går du deg en tur?")
elif hoyde>2 and hoyde<100:
    print("Er du i en bygning")
elif hoyde>100 and hoyde<8000:
    print("Du er er over 100 m")
elif hoyde>8000: 
    print("Er du på flytur?")
else:
    print("Du er på ",round(prosentAndel,2)," prosent av Mount Everest ved ",round(hoyde,2)," meter")

Vi kan ha så mange beslutninger vi ønsker etter hverandre. Når vi lager flere beslutninger, må alltid den første beslutningen være en if-statement. Alle beslutninger som kommer etter if burde være elif(else if) hvis vi vil at de ikke skal testes hvis if-statementet inntreffer. elif gjør det samme som if og sjekker om noe er sant eller ikke.

Programmet vil alltid gå inn i den første if- eller elif-beslutningen som er sann. Så hvis vi for eksempel hadde hatt:

if hoyde>100
    print("Du er er over 100 m")
elif hoyde>8000:
    print("Er du på flytur?")

ville programmet aldri spurt om du er på flytur. Grunnen til dette er at hvis tallet er over 8000, vil det først sjekke om det er over 100, dette vil alltid være sant, og programmet vil derfor printe at du er over 100 m. Dette er grunnen til at vi bruker nøkkelordet and. Når vi bruker and kan vi sjekke om tallet ligger mellom to andre tall. Det begrenser altså hvor ofte en beslutning er sann.

Det er alltid lurt å avslutte beslutninger med en else-statement. else er alltid sann, så hvis ingen tidligere beslutninger har vært sanne, vil programmet gå inn i else. Hvis ikke du har noe fornuftig å skrive under else-statementen, kan du bruke det som en feilmelding.

Vi kjører programmet med et tall og får:

Hvor høyt(i meter) sitter du? 324523465
Er du på flytur??

1.3.4: Partall og oddetall

  1. La n være et tilfeldig heltall (1, 2, 3, 4 osv.). Forklar hvorfor formelen 2n alltid gir partall, mens formelen 2n + 1 alltid gir oddetall.

  2. Lag et program som tar et heltall som input og avgjør om tallet er partall.

  3. Modifiser programmet slik at det også gir beskjed om tallet er oddetall.

Vis løsningsforslag

Oppgave 1
Et partall er et tall som er delelig med 2. Formelen 2n tar et tall n, og ganger med to, som vil si at alle tall som kommer ut av formelen er delelig med 2. Ved å endre formelen til 2n + 1 endrer vi det da fra partall til oddetall.

Oppgave 2
For å finne ut om et tall er et partall, kan vi sjekke med modulus om tall%2 = 0. Hvis resten er 0, er tallet et partall.

tall = input("Skriv inn et tall: ") #input av tall (string)
tall = float(tall)                  #konverterer string til float
if tall%2 == 0:                     #partallsjekk
    print("Tallet er et partall")

Oppgave 3
Legger til en else-statement for å skrive ut om det er et oddetall:

tall = input("Skriv inn et tall: ")
tall = float(tall)
if tall%2 == 0:                 
    print("Tallet er et partall")
else:
    print("Tallet er et oddetall")

1.3.5: Andregradslikningen

1.
Skriv et Python-program som løser andregradsligningen ax²+bx+c=0 ved hjelp av formelen:

alt text

Programmet skal lese inn de tre koeffisientene a, b og c ved hjelp av input()-funksjonen. Deretter skal det skrive ut de to røttene funnet med formelen over. Test programmet på noen eksempler.

2.
Kan du identifisere tilfeller der andregradsformelen bryter sammen? Utvid programmet slik at det oppfører seg fornuftig også i disse situasjonene.

Vis løsningsforslag

oppgave 1
Vi henter inn variablene a, b og c ved hjelp av input og bruker likningen oppgitt i oppgaven. Vi skriver det følgende programmet:

from pylab import * #for å kunne bruke sqrt()

#henter inn variable
a = input("Hva er a?") #henter inn input som string
a = float(a) #konverterer variabel a til flyttall
b = input("Hva er b?") 
b = float(b) 
c = input("Hva er c?") 
c = float(c) 

#regner ut likningen for både pluss og minus
svar1 = (-b+sqrt((b**2.0)-(4.0*a*c)))/(2.0*a)
svar2 = (-b-sqrt((b**2.0)-(4.0*a*c)))/(2.0*a)

print("Likningen har løsningen",round(svar1,3),"og",round(svar2,3))

Funksjonen input() tar alltid inn variabler som en string. Vi må derfor bruke float() i tillegg for å konvertere variablen om til et flyttall.

Alternativt kunne vi erstattet:

a = input("Hva er a?") #tar inn input som string
a = float(a) #konverterer variabel a til flyttall

med:

a = float(input("Hva er a?")) #tar inn input som string og konverterer til flyttall

Dette kunne vi gjort for variablene a,b og c.

Når vi printer bruker vi round()-funksjonen for å runde av tallet til tre desimaler.

En alternativ løsning er å erstatte siste linje med:

print(svar1)
print(svar2)

Vi kjører nå programmet to ganger med forskjellige tall og får:

Hva er a?1
Hva er b?3
Hva er c?1

Likningen har løsningen -0.382 og -2.618


Hva er a?2
Hva er b?4
Hva er c?1

Likningen har løsningen -0.293 og -1.707

Oppgave 2

Etter å ha kjørt programmet flere ganger med forskjellige variabler, legger vi merke til at programmet bryter sammen for noen tall. Når programmet bryter sammen, får vi en feilmelding som ser noe slikt ut:

RuntimeWarning: invalid value encountered in sqrt
  svar1 = (-b+sqrt((b**2.0)-(4.0*a*c)))/(2.0*a)

Fra matematikk vet vi at roten av negative tall gir et imaginært tall. Det finnes altså ingen reell løsning. Vi må derfor introdusere en beslutning som gjør at vi kun regner ut for positive tall under rottegnet. Hvis vi får et negativt tall, skal vi printe ut en feilmelding. Vi kan også justere programmet slik at det bare skriver ut én løsning dersom uttrykket under rotuttrykket blir 0.

Vi gjør dette på følgende måte:

from pylab import sqrt

a = float(input("Hva er a?"))
b = float(input("Hva er b?"))
c = float(input("Hva er c?"))

mintest= ((b**2)-(4.0*a*c))

if mintest>0:
    svar1 = (-b+sqrt((b**2.0)-(4.0*a*c)))/(2.0*a)
    svar2 = (-b-sqrt((b**2.0)-(4.0*a*c)))/(2.0*a)
    print("Likningen har løsningen",round(svar1,3),"og",round(svar2,3))
elif mintest==0:
    svar = (-b/(2*a))
    print("Likningen har løsningen",round(svar,3))
else:
    print("Det finnes kun imaginære løsninger")

Variablen mintest er nå definert som alt under rottegnet. if-betingelsen tester altså om det under rottegnet er positivt eller ikke. Hvis(if) mintest er større enn 0, kjører den koden som står med innrykk. Hvis den er lik 0, kjører elif. Ellers(else) printer den bare en tekststreng som sier at det kun finnes imaginære løsninger.

Programmet kjører nå fornuftig i alle situasjoner.

1.3.6: Fra sekunder til minutter, timer og dager

Lag et program som tar et antall sekunder som input. Programmet skal ta tallet, og regne det om til dager, timer, minutter og sekunder. Til slutt skal du skrive ut hvor mange dager, timer, minutter og sekunder det ble.

Prøv å lag koden slik at kun det som er relevant, blir oppgitt. For eksempel, hvis det bare er 34 minutter og 10 sekunder, trenger vi ikke få oppgitt at det er 0 dager og timer.

Vis løsningsforslag

For å løse denne oppgaven må du ha kontroll på heltallsdivisjon og rest.
Eksempler:
27 // 6 = 4
27 % 6 = 3

Da kan vi skrive koden slik:

input = input("Hvor mange sekunder?: ")     #får input
input = int(input)  #konverterer til float

sek = input         #vi har så mange sekunder

min = sek // 60     #fra sekundene får vi så mange minutter
sek = sek % 60      #da har vi så mange sekunder igjen

timer = min // 60   #fra minuttene får vi så mange timer
min = min % 60      #da har vi så mange minutter igjen

dager = timer // 24 #fra timene får vi så mange dager
timer = timer % 24  #da har vi så mange timer igjen

For å skrive ut kun relevant info må vi bruke beslutninger.

if (dager==0 and timer==0 and min==0):
    print(input, "sekunder er", sek,"sekunder")
elif (dager==0 and timer==0):
    print(input, "sekunder er", min, "minutter og", sek,"sekunder")
elif dager==0:
    print(input, "sekunder er", timer, "timer,", min, "minutter og", sek,"sekunder")
else:
    print(input, "sekunder er", dager,"dager,", timer, "timer,", min, "minutter og", sek,"sekunder")

2.1.1: While-løkker

  1. Lag en while-løkke som skriver ut alle tall fra og med 0 til og med 10

  2. Lag et program som først tar et tall som input. Deretter skal programmet spørre om et nytt tall helt til summen av alle tallene som er gitt som input, er større enn 50. Skriv til slutt ut hva summen ble for å se hvor nærme du kom 50.

Vis løsningsforslag

Oppgave 1

i = 0               #Definerer en tellevariabel i=0
while i <= 10:      #Kjører så lenge i er mindre eller lik 10
    print(i)        #Skriver ut i, første verdi vil bli 0
    i = i + 1       #Øker i med 1 hver runde

Oppgave 2

summen = 0                 #Definerer en "tom" variabel, summen
while summen < 50:         #Løkken kjører så lenge summen er mindre enn 50
    tall = input("Legg til et tall i summen: ")     #Får input av tall
    tall = float(tall)  #Konverterer input til float
    summen = summen + tall    #Ny sum = gammel sum + tall

print("Summen din ble", summen)    #Skriver ut melding

2.1.2: Gjette tall

  1. Lag et program hvor brukeren blir bedt om å gjette et tall mellom 1 og 10. Programmet skal kjøre frem til brukeren gjetter riktig tall, du velger selv hvilket tall det skal være.

  2. Utvid programmet i oppgave 1, slik at brukeren får en melding om de gjettet for høyt, for lavt eller riktig.

Vis løsningsforslag

Oppgave 1

gjett = 0   #Definerer en variabel som lagrer tallet som blir gjettet
fasit = 7   #Definerer en variabel med det riktige tallet
while gjett != fasit:       #Kjører så lenge gjett er ulik fasit
    gjett = input("Gjett et tall mellom 1 og 10: ")
    gjett = float(gjett)    #Endrer gjett til tallet fra input

Oppgave 2
For å få ut en melding etter hver gang brukeren gjetter et tall, må vi legge en if-statement inni while-løkken. I if-statementen må vi sjekke om gjetningen er lik fasiten, og dermed skrive ut en melding. Hvis det ikke er riktig, skriver vi ut en annen melding:

gjett = 0
fasit = 7
while gjett != fasit:
    gjett = input("Gjett et tall mellom 1 og 10: ")
    gjett = float(gjett)
    if gjett < fasit:       #sjekker om gjett er mindre enn fasit
        print("For lavt")
    elif gjett > fasit:     #sjekker om gjett er større enn fasit
        print("Før høyt")
    else:                   #ellers
        print("Riktig!")