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.

Filtrering:

02.06: Differansen mellom to heltall

Filnavn: differanse.py

Lag en prosedyre som ber om og leser inn to heltall. Prosedyren skal deretter regne ut differansen mellom de to tallene og skrive ut svaret. Kjør programmet for å sjekke at alt fungerer som det skal.

Her er et eksempel på hvordan en kjøring av programmet kan se ut:

Oppgi verdien til x: 
> 25
Oppgi verdien til y: 
> 19
Differansen mellom x og y er 6.

Du behøver ikke tenke på at det første tallet kan være mindre enn det andre. Det er ikke nødvendig å regne ut absoluttverdien av differansen (men prøv gjerne å finne ut hvordan det gjøres, dersom du ønsker en ekstra utfordring).

def differanse():
    inp = input("Oppgi verdien til x:\n> ")
    x = int(inp)

    inp = input("Oppgi verdien til y:\n> ")
    y = int(inp)

    print("Differansen mellom x og y er", x - y)

differanse()    # Husk å kalle prosedyren!

02.08: Kroppstemperatur

Filnavn: kroppstemperatur.py

Hos friske mennesker varierer kroppstemperaturen vanligvis mellom 36.5 og 37.5 grader. Lag et program som avgjør om en persons kroppstemperatur ligger henholdsvis under, innenfor eller over normal kroppstemperatur og skriver ut en passende melding. Programmet skal lese kroppstemperaturen fra terminal.

Hint

Her må du lese inn et flyttall fra terminalen! Bruke den riktige funksjonen for å konvertere en streng til et flyttall.


inp = input("Oppgi kroppstemperatur:\n> ")
temp = float(inp)

if temp < 36.5 : 
    print("Du har lavere kroppstemperatur enn normalen")
elif temp > 37.5 :
    print("Du har høyere kroppstemperatur enn normalen")
else:
    print("Du har normal kroppstemperatur")

02.10: Forenkle sannhetsverdier

Du skal nå forenkle noen sannhetsverdier.
For eksempel kan sannhetsverdien not True forenkles til False.

Skriv uttrykk som er kortere, og logisk sett ekvivalente:

Prøv å løse oppgavene uten å kjøre kodesnuttene først!

a)

b == True

b)

b == False

c)

not b == True

d)

not b == False

e)

True and False

f)

b or True

g)

b and False

a) b

b) not b

c) not b

d) b (not og False nuller hverandre ut)

e) False

f) True (det er bare sannhetsverdien av b som spiller en rolle)

g) False (noe og False er alltid False)

02.14 Kodeflyt igjen

Dette er en penn- og papiroppgave

Forklar i hvilken rekkefølge de forskjellige linjene utføres når vi kjører programmet, ved å skrive tall foran linjene i programmet.
Hvis en linje kjøres flere ganger (for eksempel ved flere kall på samme funksjon) kan du skrive flere tall ved siden av setningen.

def kvadrat():
    tall = input("Tall: ")
    tall = int(tall)

    print(tall, "*", tall, "=", tall * tall)

a = True 
b = False

if a:
    kvadrat()

if b:
    kvadrat()

print("En gang til:")
kvadrat()

Visualisering med Python Tutor

5,12| def kvadrat():
6,13|     tall = input("Tall: ")
7,14|     tall = int(tall)
    |     
8,15|     print(tall, "*", tall, "=", tall * tall)
    | 
   1| a = True 
   2| b = False
    | 
   3| if a:
   4|     kvadrat()
    | 
   9| if b:
    |     kvadrat()
    | 
  10| print("En gang til:")
  11| kvadrat()

NB: Merk at programmet egentlig leser inn def kvadrat() først slik at når prosedyren er kalt, vet programmet hvilket linje å hoppe tilbake til. Derfor ville det også vært riktig å skrive '1' ved den første linjen. Det viktigste med oppgaven er å vise at du har forstått hvordan og hvor koden flyter inn i prosedyren.

02.15: Feil i små program

Finn fire feil i programmet under.

Prøv å løse oppgavene uten å kjøre kodesnutt først (og så kan du prøve å kjøre/fikse koden)

1 | tall = input(Tast inn et siffer: )
2 | dobbelt = 2 * tall
3 | print("Det dobbelte er" dobbel)
  1. Linje 1: Vi mangler anførselstegn rundt tekststrengen vi gir input.
  2. Linje 2: Vi har ikke gjort om tekststrengen vi får av input til et tall og får tekststrengen to ganger.
  3. Linje 3: Vi har glemt komma etter tekststrengen vi gir til print.
  4. Linje 3: Vi har skrevet dobbel istedenfor dobbelt.

02.21: Kodeflyt med prosedyrer

Dette er en penn- og papiroppgave

Forklar i hvilken rekkefølge de forskjellige linjene utføres når vi kjører programmet, ved å skrive tall foran linjene i programmet.
Hvis en linje kjøres flere ganger (f.eks. ved flere kall på samme prosedyre) kan du skrive flere tall ved siden av linjen.

def prosedyre_a():
    navn = input("Navn: ")
    print("Hei,", navn)

def prosedyre_b():
    alder = int(input("Alder: "))
    print("Om ti år er din alder", alder)

def start():
    a = 5
    b = 5

    if a > b:
        b = 10
    elif b > a:
        prosedyre_a()
    else:
        prosedyre_b()

    print(a + b)

start()
prosedyre_a()

PythonTutor

14|def prosedyre_a():
15|    navn = input("Navn: ")
16|    print("Hei,", navn)
  |
 9|def prosedyre_b():
10|    alder = int(input("Alder: "))
11|    print("Om ti år er din alder", alder)
  |
 2|def start():
 3|    a = 5
 4|    b = 5
  |    
 5|    if a > b:
  |        b = 10
 6|    elif b > a:
  |        prosedyre_a()
 7|    else:
 8|        prosedyre_b()
  |    
12|    print(a + b)
  |
 1|start()
13|prosedyre_a()

NB: Merk at programmet egentlig leser inn definisjonene av prosedyrene først slik at når en prosedyre er kalt, vet programmet hvilket linje å hoppe tilbake til. Derfor ville det også vært riktig å skrive '1' ved def prosedyre_a():, '2' ved def prosedyre_b():, og '3' ved def start():. Det viktigste med oppgaven er å vise at du har forstått hvordan og hvor koden flyter inn i prosedyren.

02.24: Feil som ikke gir feilmelding

Hva er feilen i følgende programkode som skal summere to tall?

x = 0
y = 0

x = int(input("Tast inn et heltall: "))
x = int(input("Tast inn et heltall til: "))

print("Summen av tallene er:", x+y)

Vi lagrer til variabelen x begge ganger vi leser inn fra brukeren og vi leser aldri inn en verdi til variabelen y! Derfor blir verdien til x det andre tallet og verdien til y blir 0. Dette kalles en logisk feil, og vil ikke gi noen feilmelding.