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:

02.09 Fakta om sauer

I denne oppgaven skal du printe ut 5 fakta om sauer i en prosedyre. Dette skal skje på 5 forkjellige linjer.

Forslag til saue fakta

Sauer er dumme dyr.
Sauer er myke dyr.
Sauer kan lofte 12 ganger sin egen vekt.
Sauer lukter litt som geiter.
Sauen er din venn.

Vis løsningsforslag
def sauFakta():
    print("Sauer er dumme dyr.")
    print("Sauer er myke dyr.")
    print("Sauer kan lofte 12 ganger sin egen vekt.")
    print("Sauer lukter litt som geiter.")
    print("Sauen er din venn.")

02.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")

02.11: Tekstutskrift med formatering

  1. Les om formatering av utskrift på side 54-57 i læreboken (Python for Everyone) eller i Python-dokumentasjonen .
  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
Vis løsningsforslag
navn1 = "Arne"
navn2 = "Dag"
navn3 = "Ellen"

print("Navn 1: {n1:>10}".format(n1=navn1))
print("Navn 2: {n2:>10}".format(n2=navn2))
print("Navn 3: {n3:>10}".format(n3=navn3))

02.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!" i en annen print.
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()

02.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 brukeren skriver inn, vil én av to tilfeller skje:

  1. Vi havner i if-blokken - dette skjer hvis brukeren har skrevet et tall mindre enn 12 eller større enn 67.

  2. Vi havner i else-blokken - dette skjer hvis brukeren har skrevet et tall mellom 12 og 67 (12 og 67 inkludert).

02.14 Hva printes ut?

Hvilket tall blir printet ut etter følgende kodesnutt blir kjørt?

print(1+5*2)
print(2*5+2*2)
print(4*5+2*3/2)
Vis løsningsforslag
11
#Tilsvarer 1+(5*2)
14
#Tilsvarer (2*5)+(2*2)
23.0
#Tilsvare (4*5)+((2*3)/2)

02.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 med metoden int() 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.

02.16: 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)

02.17: 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

02.18: 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 yoghurt.

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.")

02.19: Utskrift av sirkelberegning

  1. Les om formatering av utskrift på side 54-57 i læreboken (Python for Everyone) eller i Python-dokumentasjonen.

  2. Skriv et program som tar imot en flyttall radius fra bruker.

  3. Beregn så diameter, areal og omkrets av sirkelen i tre nye variabler.

  4. Skriv ut disse verdiene, men vis kun 2 desimaler. Sørg også for at tallene blir plassert like langt til høyre. Se under for eksempel på utskrift:

Diameter:    12.00
Areal:      113.10
Omkrets:     37.70
Vis løsningsforslag
import math

inp = input("Skriv inn en radius:\n")
radius = float(inp)

diameter = 2*radius
areal = math.pi*radius*radius
omkrets = diameter*math.pi

print("Diameter: % 10.2f" % diameter)
print("Areal: % 13.2f"  % areal)
print("Omkrets: % 11.2f" % omkrets)

02.20: 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")

02.21: Finn ut om siste siffer er felles

Navn: siste_siffer.py

Gitt tre heltallsvariable, a, b og c med ikke-negative verdier som du velger selv, sjekk om to eller flere har felles siste siffer, og skriv eventuelt ut disse til skjerm.

Hint: se om du kan bruke modulo-operatøren (%)!

Vis løsningsforslag
a = 43
b = 123
c = 324

if a % 10 == b % 10:
    print("a og b har like siste siffer")

if a % 10 == c % 10:
    print("a og c har like siste siffer")

if b % 10 == c % 10: 
    print("b og c har like siste siffer")

Operatoren % som er brukt her, kalles "modulo". Den beregner resten av det første tallet delt på det andre tallet. I 10-tallssystemet vil resten av et tall delt på 10 alltid være det siste sifferet i tallet (prøv selv!).

Merk at vi bruker if hele veien, og ikke elif. Årsaken er at det er mulig at flere tall har felles siste siffer -- og da vil vi ha ut alle!

02.22: 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.

02.23: Feil i små 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.

03.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)

03.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")

03.04: 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()

03.05: Bakeri

a) Lag en tom ordbok kalt bakeri.

b) Legg til en og en av følgende varer i bakeri-et, slik at navnet på bakervaren er nøkkelen, og dens tilhørende pris er verdien:

"Croissant" 25
"Grovbroed" 40
"Kneippbroed" 20
"Rosinbolle" 20
"Baguette" 10

c) Skriv ut innholdet i hele bakeri-et som en meny med en linje per vare, med navn og pris

d) Øk prisen på croissant med 10, uten å endre tidligere kode.

e) Skriv ut ordboken på nytt og sjekk at croissantens pris er endret riktig.

f) Lag en prosedyre meny(ordbok) som du kan kalle på for å utføre c) og e) og endre programmet ditt til å kalle på denne.

Vis løsningsforslag

a)

bakeri = {}

b)

bakeri["Croissant"] = 25
bakeri["Grovbroed"] = 40
bakeri["Kneippbroed"] = 20
bakeri["Rosinbolle"] = 20
bakeri["Baguette"] = 10

c)

for vare in bakeri:
    print (vare + ": " + str(bakeri[vare]) + " kr")

d)

bakeri["Croissant"] += 10

e)

for vare in bakeri:
    print (vare + ": " + str(bakeri[vare]) + " kr")

f)

def meny(ordbok):
    print("\nMeny")
    for vare in ordbok:
        print (vare + ": " + str(ordbok[vare]) + " kr")

bakeri = {}

bakeri["Croissant"] = 25
bakeri["Grovbroed"] = 40
bakeri["Kneippbroed"] = 20
bakeri["Rosinbolle"] = 20
bakeri["Baguette"] = 10

meny(bakeri)

bakeri["Croissant"] += 10
meny(bakeri)

03.06 Mengder

Hva blir printet ut når følgende kodesnutt blir kjørt

frukt = {"banan", "eple", "banan", "appelsin", "Banan", "banan"}
print(frukt)
Vis løsningsforslag
{'banan', 'Banan', 'eple', 'appelsin'} 
#Men ikke nødvendigvis i den rekkefølgen. Dette kan varriere fra hver gang programmer kjøre