IN1000 høst2024
Introduksjon til objektorientert programmering (Python)
02.16: Skatt i Ruritania
Filnavn: 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 gitt inntekten. Programmet skal lese inntekten (som antas å være et flyttall) fra terminal.
Kjør programmet ditt og sjekk at du får riktig resultat.
Tast inn din inntekt:
> 5000
Skatt: 500.0
Tast inn din inntekt:
> 20000
Skatt: 4000.0
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 Kalkulator
Filnavn: kalkulator.py
a) Skriv en prosedyre kalkulator()
som ber brukeren å taste inn et tall, en operasjon (f.eks. +, -, * og /), og et annet tall. Prosedyren skal skrive ut beregningen og resultatet. Her er et eksempel på hvordan en kjøring av programmet kan se ut:
Første tall: 4.5
Operasjon: +
Andre tall: 7
4.5 + 7.0 = 11.5
b) Utvid programmet slik at hvis brukeren taster inn en ulovlig operasjon, skrives det ut en advarsel.
def kalkulator():
tall1 = float(input("Første tall: "))
operasjon = input("Operasjon: ")
tall2 = float(input("Andre tall: "))
if operasjon == "+":
print(tall1, "+", tall2, "=", tall1 + tall2)
elif operasjon == "-":
print(tall1, "-", tall2, "=", tall1 - tall2)
elif operasjon == "*":
print(tall1, "*", tall2, "=", tall1 * tall2)
elif operasjon == "/":
print(tall1, "/", tall2, "=", tall1 / tall2)
else: # b
print("advarsel: operasjon", operasjon, "eksisterer ikke")
kalkulator()
02.18: Handletur
Filnavn: handletur.py
Lag et programm som regner ut totalprisen 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.
Yoghurt: 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.
pris_broed = 20
pris_melk = 15
pris_ost = 40
pris_yoghurt = 12
total_sum = 0
print("Hei! Velkommen til IFI-butikken.")
antall = input("Hvor mange broed vil du ha?\n> ")
total_sum = total_sum + int(antall) * pris_broed
antall = input("Hvor mange melk vil du ha?\n> ")
total_sum = total_sum + int(antall) * pris_melk
antall = input("Hvor mange ost vil du ha?\n> ")
total_sum = total_sum + int(antall) * pris_ost
antall = input("Hvor mange yoghurt vil du ha?\n> ")
total_sum = total_sum + int(antall) * pris_yoghurt
print("Du skal betale:", total_sum, "kr.")
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. Det er plass til inntil 30 passasjerer i bussen. For hvert stopp skal bruker taste inn hvor mange passasjerer som venter på å gå på 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.
I tillegg skal det skrives ut hvor mange personer går ombord bussen på hvert stopp. Om bussen er full, skal det skrives ut en beskjed og antall personer som må gå til fots. Til slutt skal det skrives ut at bussen har kommet frem til endestasjonen med antall passasjerer.
Under finner du et eksempel på hvordan kjøringen kan se ut:
Stasjon 1! Hvor mange venter på bussen?
> 14
14 personer går ombord i bussen.
Stasjon 2! Hvor mange venter på bussen?
> 13
13 personer går ombord i bussen.
Stasjon 3! Hvor mange venter på bussen?
> 5
Bussen er full. 2 må gå til fots.
Bussen er fremme med 30 personer ombord!
passasjerer = 0 # Antall passasjerer
inp_nye = input("Stasjon 1! Hvor mange venter på bussen?\n> ")
antall_nye = int(inp_nye)
if passasjerer + antall_nye >= 30:
print("Bussen er full.", passasjerer + antall_nye - 30, "må gå til fots.")
passasjerer = 30
else:
passasjerer += antall_nye
print(antall_nye, "personer går ombord i bussen.")
inp_nye = input("\nStasjon 2! Hvor mange venter på bussen?\n> ")
antall_nye = int(inp_nye)
if passasjerer + antall_nye >= 30:
print("Bussen er full.", passasjerer + antall_nye - 30, "må gå til fots.")
passasjerer = 30
else:
passasjerer += antall_nye
print(antall_nye, "personer går ombord i bussen.")
inp_nye = input("\nStasjon 3! Hvor mange venter på bussen?\n> ")
antall_nye = int(inp_nye)
if passasjerer + antall_nye >= 30:
print("Bussen er full.", passasjerer + antall_nye - 30, "må gå til fots.")
passasjerer = 30
else:
passasjerer += antall_nye
print(antall_nye, "personer går ombord i bussen.")
print("\nBussen er fremme med", passasjerer, "personer ombord!")
02.23 Is eller pizza
Filnavn: pizza_eller_is.py
a) Lag en prosedyre spoer_is()
som spør brukeren hvor mange kuler is de vil ha og skriver ut totalprisen. En kule koster 30 NOK.
b) Lag en annen prosedyre spoer_pizza()
som spør om hva slags pizza brukeren vil ha. Hvis svaret er "ost", er prisen 80kr. Ellers koster pizzaen 100kr. Skriv så ut hva slags pizza brukeren bestillte og hvor mye pizzaen koster.
c) Lag en tredje prosedyre spoer_spise()
som spør om hva brukeren ønsker spise. Hvis svaret er "is", kall spoer_is()
, hvis svaret er "pizza", kall spoer_pizza()
, og hvis svaret er noe annet skriv ut en melding som sier at vi ikke selger dette.
d) Kall spoer_spise()
og se om alt fungerer.
a)
def spoer_is():
antall_kuler = int(input("Hvor mange kuler ønsker du? "))
pris = 30 * antall_kuler
print("Din is koster", pris, "kr.")
b)
def spoer_pizza():
pizza = input("Hva slags pizza ønsker du? ")
if pizza == "ost":
pris = 80
else:
pris = 100
print("Din pizza med", pizza, "koster", pris, "kr.")
c)
def spoer_spise():
ønsket_mat = input("Hva vil du spise? ")
if ønsket_mat == "pizza":
spoer_pizza()
elif ønsket_mat == "is":
spoer_is()
else:
print("Vi selger ikke", ønsket_mat)
d)
spoer_spise()
Hele programmet i pizza_eller_is.py:
def spoer_is():
antall_kuler = int(input("Hvor mange kuler ønsker du? "))
pris = 30 * antall_kuler
print("Din is koster", pris, "kr.")
def spoer_pizza():
pizza = input("Hva slags pizza ønsker du? ")
if pizza == "ost":
pris = 80
else:
pris = 100
print("Din pizza med", pizza, "koster", pris, "kr.")
def spoer_spise():
ønsket_mat = input("Hva vil du spise? ")
if ønsket_mat == "pizza":
spoer_pizza()
elif ønsket_mat == "is":
spoer_is()
else:
print("Vi selger ikke", ønsket_mat)
spoer_spise()
02.24: ASCII-art med feil
Filnavn: asciitegn.py
Kopier prosedyrene under til filen asciitegn.py.
# Du skal ikke å endre disse prosedyrene
def skriv_ascii_1():
print(" |\---/|\n | ,_, |")
def skriv_ascii_2():
print(" - |``__)/\n--.'(_, | |\, |")
def skriv_ascii_3():
print("(__..._(_,..,_..__.'/|\n ' __\_)/'.....+")
def skriv_ascii_4():
print(" \_`_/-..----.\n ___/ ` ' ,""+ \\")
def skriv_ascii_5():
print("(__...' __\ |`.___.';\n (_,...'(_,.`__)/'.....+")
def skriv_ascii_6():
print("(__.._\ .(_,.`__);\n ../'..' _ __\_)/+")
a) Finn åtte feil i prosedyren skriv_ascii()
.
1 | def skriv_ascii:
2 | a = true
3 | b = int("3)
4 | c = 5
5 |
6 | if a
7 | skriv_ascii_1()
8 | else:
9 | skriv_ascii_2()
10 |
11 | if b + 3 = c:
12 | skriv_ascii_3()
13 | elif c > b:
14 | skriv_ascii_4("")
15 |
16 | fi not a == False:
17 | skriv_asci_5()
18 | else:
19 | skriv_ascii_6()
20 |
21 | skriv_ascii()
b) Kopier også skriv_ascii()
til filen asciitegn.py. Fiks feilene du fant i a) og prøv å kjøre koden. Hva ser du?
a) Feil i skriv_ascii()
:
1. Linje 1: parentes mangler
2. Linje 2: true
må være True
3. Linje 3: "3
må være "3"
4. Linje 6: :
mangler
5. Linje 11: =
må være ==
6. Linje 14: ""
må fjernes
7. Linje 16: fi
må være if
8. Linje 17: skriv_asci_5
er feilstavet, må være skriv_ascii_5
b) Fiks feilene:
def skriv_ascii(): # 1
a = True # 2
b = int("3") # 3
c = 5
if a: # 4
skriv_ascii_1()
else:
skriv_ascii_2()
if b + 3 == c: # 5
skriv_ascii_3()
elif c > b:
skriv_ascii_4() #6
if not a == False: #7
skriv_ascii_5() #8
else:
skriv_ascii_6()
skriv_ascii()
Utskrift: en katt!
|\---/|
| ,_, |
\_`_/-..----.
___/ ` ' ,+ \
(__...' __\ |`.___.';
(_,...'(_,.`__)/'.....+