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:

2.06: Mindre eller større enn

Navn: mindre_større.py

a) Lag et program som tar inn et tall fra brukeren og skriver ut om tallet er mindre eller større enn 10.
b) Legg deretter til en test til for å sjekke om tallet er mindre eller større enn 20.
c) Endre programmet slik at brukeren kun får én tilbakemelding per tall som er tastet inn.

Programmet skal kunne se slik ut under kjøring:

Tast inn et tall: 
> 13
Tallet er mellom 10 og 20

Tast inn et tall: 
> 9
Tallet er under 10

Tast inn et tall: 
> 22
Tallet er over 20
Vis løsningsforslag
inp = input("Tast inn et tall:\n> ")
tall = int(inp)

if tall < 10 :
    print("Tallet er under 10")
elif tall > 10 and tall < 20 : 
    print("Tallet er mellom 10 og 20")
elif tall == 10 or tall == 20 : 
    print("Tallet er", tall)
else:
    print("Tallet er over 20")

2.07: Skatt i Ruritania

Navn: skatt_Ruritania.py

I det fiktive landet Ruritania er skattereglene slik at hvis en person har inntekt < 10000, så betaler man 10% skatt på hele inntekten, og hvis inntekten >= 10000, så betaler man 10% skatt på de første 10000 kronene og 30% skatt på resten av inntekten. Lag et program som regner ut og skriver ut hvor mange kroner som skal betales i skatt. Programmet skal lese inntekten (som antas å være et desimaltall) fra terminal.

Vis løsningsforslag
inp = input("Tast inn din inntekt:\n> ")
inntekt = float(inp)

if inntekt < 10000 : 
    skatt = inntekt*0.1
else:
    skatt = 10000*0.1 + (inntekt - 10000)*0.3
print("Skatt:", skatt)

2.08: Kroppstemperatur

Navn: 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. Programmet skal lese kroppstemperaturen fra terminal.

(Hint: Her må du lese inn desimaltall fra terminalen! Vi kan bruke float() for å konvertere String til desimaltall).

Vis løsningsforslag
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")

2.09: Handletur

Navn: handletur.py

Programmet skal regne ut totalpris for en bruker etter å ha vært på handletur. De varene det er mulig å kjøpe er brød, melk, ost og youghurt.

Prisene er som følger:
Brød: 20 kr.
Melk: 15 kr.
Ost: 40 kr.
Youghurt: 12 kr.

Eksempel på interaksjon med programmet:

Hei! Velkommen til IFI-butikken.
Hvor mange broed vil du ha?
> 2
Hvor mange melk vil du ha?
> 1
Hvor mange ost vil du ha?
> 1
Hvor mange yoghurt vil du ha?
> 3
Du skal betale: 131 kr.
Vis løsningsforslag
pris_broed = 20
pris_melk = 15
pris_ost = 40
pris_youghurt = 12

sum = 0

print("Hei! Velkommen til IFI-butikken.")
inp = input("Hvor mange broed vil du ha?\n> ")
sum+= int(inp)*pris_brød

inp = input("Hvor mange melk vil du ha?\n> ")
sum+= int(inp)*pris_melk

inp = input("Hvor mange ost vil du ha?\n> ")
sum+= int(inp)*pris_ost

inp = input("Hvor mange youghurt vil du ha?\n> ")
sum+= int(inp)*pris_youghurt

print("Du skal betale:", sum, "kr.")

2.10: Høyde

Filnavn: hoyde.py

Du skal lage en program som gir tar inn en høyde i cm fra bruker, og skriver ut et av følgende alternativer:
- Du er lav.
- Du er middels.
- Du er høy.

Grensen for å være lav er om hoyde < 140 cm, og grensen for å være høy er om hoyde > 190 cm.

Vis løsningsforslag
inp = input("Oppgi hoyde i cm:\n> ")
hoyde = int(inp)

if hoyde < 140 : 
    print("Du er lav.")
elif hoyde > 190 : 
    print("Du er høy.")
else: 
    print("Du er middels")

2.11: Busstur

Filnavn: busstur.py

Du skal skrive et program som sjekker om det er plass på en buss på en bussrute med tre stopp. For hvert stopp, skal bruker taste inn hvor mange passasjerer som går på bussen. Det er plass til inntil 30 passasjerer i bussen. Dersom bussen er full, kan ingen gå på. Dersom flere ønsker å gå på, enn det er gjenværende plasser på bussen, får kun noen nye passasjerer plass.

Vi antar at alle passasjerer skal til endestasjonen, så vi behøver ikke ta høyde for at noen går av bussen underveis.

Eksempel på kjøring:

Stasjon 1! Hvor mange gaar paa bussen?
> 14
Stasjon 2! Hvor mange gaar paa bussen?
> 13
Stasjon 3! Hvor mange gaar paa bussen?
> 5
Bussen er full. 2 maa gaa til fots.
Vis løsningsforslag
passasjerer = 0


inp = input("Stasjon 1! Hvor mange går på bussen?\n> ")
nye = int(inp)

if passasjerer + nye >= 30:
    print("Bussen er full.", passasjerer + nye - 30, "må gå til fots")
    passasjerer = 30
else:
    passasjerer += nye
    print(nye, "personer gaar ombord i bussen")


inp = input("Stasjon 2! Hvor mange gaar paa bussen?\n> ")
nye = int(inp)

if passasjerer + nye >= 30:
    print("Bussen er full.", passasjerer + nye - 30, "maa gaa til fots")
    passasjerer = 30
else:
    passasjerer += nye
    print(nye, "personer gaar ombord i bussen")


inp = input("Stasjon 3! Hvor mange gaar på bussen?\n> ")
nye = int(inp)

if passasjerer + nye >= 30:
    print("Bussen er full.", passasjerer + nye - 30, "maa gaa til fots")
    passasjerer = 30
else:
    passasjerer += nye
    print(nye, "personer gaar ombord i bussen")


print("Bussen er fremme med", passasjerer, "personer ombord")

2.12: Min utskriftsprosedyre

Navn: min_prosedyre.py

a) Lag en prosedyre min_prosedyre som printer "Hei student!" til terminalen.
b) Endre programmet slik at min_prosedyre også skriver ut "Velkommen til et nytt semester!"
c) Lag en ny prosedyre linjeskift som printer ut et tomt linjeskift.
d) Kall på min_prosedyre to ganger, men mellom kallene skal du også kalle på prosedyren linjeskift, slik at det blir et linjeskift mellom hilsenene.

Vis løsningsforslag
def min_prosedyre():
    # Oppgave a og b
    print("Hei student!")
    print("Velkommen til et nytt semester!")

def linjeskift():
    # Oppgave c
    print()

# Oppgave d
min_prosedyre()
linjeskift()
min_prosedyre()

2.13: Kodeflyt

Dette er en penn- og papiroppgave

Beskriv programflyten i dette programmet:

pris = 50
tekst = input("Skriv inn alder: ")
alder = int(tekst)

if alder < 12 or alder > 67:
    print("Du må betale", pris*0.5, "kr")
else:
    print("Du må betale", pris, "kr")
Vis løsningsforslag

Avhengig av hva bruker taster, vil vi enten havne i if-blokken, eller else-blokken. Taster bruker et tall lavere enn 12, eller høyere enn 67, havner vi i if-blokken. Ellers havner vi i else.

2.14: Tekstutskrift med formatering

  1. Les om formatering av utskrift på side 54-57 i læreboken (Python for Everyone) eller i Python-dokumentasjonen (https://docs.python.org/3/tutorial/inputoutput.html).
  2. Skriv et program som inneholder tre forskjellige navn inneholdt i tre forskjellige variabler. Pass på at navnene er av forskjellig lengde.
  3. Skriv ut navnene, men sørg for at navnene blir skrevet ut justert til høyre. Se under for eksempelutskrift:
Navn 1:      Arne
Navn 2:       Dag
Navn 3:     Ellen

2.15: Kodeforståelse

Filnavn: sammenslaaing.py

Under følger tre kodesnutter. For hver av dem, svar på følgende spørsmål:

  • Er dette lovlig kode?
  • Hva skjer når vi prøver å kjøre programsnuttene hver for seg?

a)

a = 10
b = "hei!"
c = a+b
print(c)

b)

x = "10"
y = "hei!"
print(x + y)

c)

i = 10
j = "12"
print(i + j)

d) Forsøk å kjøre de tre kodesnuttene hver for seg, og sjekk om du hadde rett.

e) Bruk str() for å konvertere variabel a i oppgave a). Konverter variabel j fra oppgave c til en int på samme måte og kjør programmet på nytt. Hva skrives ut nå?

Vis løsningsforslag

Oppgave a: Det er ikke tillatt, og vi får feilmelding når vi prøver å kjøre programmet fordi vi prøver å slå sammen en tekststreng og et heltall.

Oppgave b: Dette er lov. Anførselstegn rundt x sin verdi viser at det er en tekststreng. Utskriften blir dermed "10hei".

Oppgave c: Dette er ikke lov, fordi j ikke tolkes som et tall. Selv om det bare inneholder siffere gjør anførselstegnene at j tolkes som en tekststreng, og vi får dermed samme feilmelding som i oppgave a.

Oppgave e: Utskriften fra oppgave a blir nå 10hei, mens utskriften fra oppgave c blir 22.

3.01: Min liste

Filnavn: min_liste.py

  1. Opprett en liste med navnet min_liste, som skal inneholde tallverdiene [3, 132 14].

  2. Bruk print() for å skrive ut det første elementet i min_liste (altså element 0).

  3. Lag en ny liste med et valgfritt navn. La den være tom.

  4. bruk append() for å legge til strengene "hei" og "verden!" i den siste listen.

  5. Bruk print() for å skrive ut hele lista.

Vis løsningsforslag
min_liste = [3, 132, 14]

print(min_liste[0])

liste2 = []

liste2.append("Hei")

liste2.append("verden!")

print (liste2)

3.02: Enkel tegning

Filnavn: enkel_tegning.py

For å løse denne oppgaven må du først laste ned modulen ezgraphics.py, som du finner her. Legg filen i samme mappe som enkel_tegning.py.

De følgende tre stegene er beskrevet i detalj på side 64 i Python for Everyone.

a) Øverst i programmet skal du importere GraphicsWindow fra modulen ezgraphics.

b) Opprett et grafikkvindu og lagre det med navnet win.

c) Opprett et kanvas og lagre det med navnet canvas.

d) Så skal du bruke kode til å tegne et enkelt rektangel. Gjør det ved å skrive følgende linje inn i programmet ditt:

canvas.drawRect(20, 20, 100, 75)

e) Hvis du kjører programmet nå vil tegningen du lager forsvinne med en gang. For å unngå dette kan du skrive følgende linje nederst i koden:

win.wait()

f) Test programmet ditt. Du kan lukke vinduet du får opp ved å trykke på krysset øverst i høyre hjørne. Prøv å endre verdiene til drawRect() og se hvordan det forandrer tegningen din.

Vis løsningsforslag
# Oppgave a
from ezgraphics import GraphicsWindow

# Oppgave b
win = GraphicsWindow()

# Oppgave c
canvas = win.canvas()

# Oppgave d
canvas.drawRectangle(20, 20, 100, 75)

# Oppgave e
win.wait()

3.03: String-liste med måneder

Navn: maaneder.py

a) Skriv et program som inneholder en String-liste som inneholder alle månedsnavnene.
b) Ta imot et heltall fra brukeren og skriv ut hvilken måned dette tilsvarer.
c) Legg til en feilmelding dersom tallet ikke er et gyldig valg.

Vis løsningsforslag
maaneder = ["Januar", "Februar", "Mars", "April", "Mai", "Juni", 
           "Juli", "August", "September", "Oktober", "November", "Desember"]
inp = input("Oppgi maanedsnummer:")
nr = int(inp)

if nr > 0 and nr < 13 :
    print(nr, "-", maaneder[nr-1])
else:
    print("Ugyldig maanedsnr")

3.04: Tegn en snømann

Bruk modulen ezgraphics.py til å tegne en snømann! For å få til dette må du lage flere sirkler og farger og prøve deg frem med plassering av de forskjellige elementene.

Hint: Hvis du ikke har brukt ezgraphics.py kan du først prøve deg på oppgave 3.02.

3.05: Volum med feil

Navn: volum.py

Finn feilene i dette programmet:

lengde = 3
volum = lengde * bredde * høyde
print("Volumet er:" volum)
Vis løsningsforslag
  1. Linje 3: vi har glemt komma etter tekststrengen.
  2. Linje 2: bredde er ikke definert.
  3. Linje 2: høyde er ikke definert.

3.06: Hønsegården

Filnavn: honsegard.py

Du skal skrive et program som simulerer en natt i hønsegården. Hva som skjer, avhenger av om reven kommer, og om bonden sover eller ei.

Programmet skal lese inn fra terminal hvor mange høner som i bor i gården, om reven kommer i løpet av natten, og om bonden sover.

  1. Dersom reven kommer og bonden sover, blir én høne spist av reven.
  2. Dersom reven kommer og bonden ikke sover, blir ingen høner spist, og bonden selger reveskinnet for 190 kr.
  3. Dersom reven ikke kommer, skjer ingenting.

Eksempel på kjøring:

Hvor mange hoener bor i gaarden?
> 15
Kommer reven?
> Ja
Sover bonden?
> Ja
Det bor naa 14 hoens i gaarden.

Eksempel 2:

Hvor mange hoener bor i gaarden?
> 15
Kommer reven?
> Ja
Sover bonden?
> Nei
Det bor nå 15 hoens i gaarden. Bonden selger ett reveskinn, og tjener 190 kr.

3.07: Feil i program

Finn fire feil i programmet under:

tall = input(Tast inn et siffer: )
dobbelt = 2 * tall
print("Det dobbelte er" dobbel)
Vis løsningsforslag
  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.

3.08: 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)
Vis løsningsforslag

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

3.09: Sannhetsverdier

Gitt at verdien av b er False, og verdien av x er 0. Hva er sannhetsverdien til følgende uttrykk?

  1. b and x == 0
  2. b or x == 0;
  3. not b and x == 0
  4. not b or x == 0
  5. b and x != 0
  6. b or x != 0
  7. not b and x != 0
  8. not b or x != 0
Vis løsningsforslag
  1. False
  2. True
  3. True
  4. True
  5. False
  6. False
  7. False
  8. True

3.10: Forenkle sannhetsverdier

Du skal nå forenkle noen sannhetsverdier. Skriv uttrykk som er kortere, og logisk sett like:

a) b == True

b) b == False

c) not b == True

d) not b == False

Vis løsningsforslag

a) b

b) not b

c) not b

d) b