IN1000 høst2024
Introduksjon til objektorientert programmering (Python)
01.12: Utskrift med formatering
Filnavn: formatert_utskrift.py
a) Les om formatering av utskrift i læreboka s. 54-57 eller i Python-dokumentasjonen.
b) Skriv et program hvor du definerer to flyttallsvariabler: lengde
og bredde
. Gi disse variablene verdiene 10.101 og 3.843.
c) Skriv ut følgende setning ved å bruke formatering av utskrift og de to variablene:
Rektangelet er 10.1 cm langt og 3.8 cm bredt.
Eldre løsning:
lengde = 10.101
bredde = 3.843
print("Rektangelet er %.1f cm langt og %.1f cm bredt." % (lengde, bredde))
Annen løsning (mer om str.format()):
lengde = 10.101
bredde = 3.843
print("Rektangelet er {0:.1f} cm langt og {1:.1f} cm bredt.".format(lengde, bredde))
Moderne løsning (mer om f-strings):
lengde = 10.101
bredde = 3.843
print(f"Rektangelet er {lengde:.1f} cm langt og {bredde:.1f} cm bredt.")
01.14 Quiz
I denne oppgaven skal du utvikle en enkel quiz. Skriv et program som stiller et spørsmål til brukeren og tar inn et svar på ett eller flere trivia-spørsmål. Om svaret er riktig skal programmet skrive ut "Helt rett!". Hvis ikke skal programmet skrive ut "Beklager, svaret var <...>" og deretter det riktige svaret.
Hvis du sitter fast, her er et forslag.
- Tenk på et spørsmål og lagre det riktige svaret i en variabel. Hvis du ikke kommer på et spørsmål får du et gratis her: "Hva heter hovedstaden i Marokko?" (svaret er "Rabat").
- Skriv ut spørsmålet i terminalen og ta inn svaret fra brukeren. Husk å lagre svaret i en variabel!
- Skriv en if-sjekk for å finne ut om svaret var riktig.
- Hvis brukerens svar var riktig, skriv ut "Helt rett!"
- Ellers skriv ut "Beklager, svaret var <...>"
NB: Her kan du gjøre så mye som du vil, men her et løsningsforslag til eksemplet over:
svar = input("Hva heter hovedstaden i Marokko? ")
rett_svar = "Rabat"
if svar == rett_svar:
print("Helt rett!")
else:
print("Beklager, svaret var", rett_svar)
01.15 Test matte
Skriv et program som ber brukeren gi svaret på enkle matteoppgaver.
For eksempel: 1 + 1 5 * 4 10 / 2
Hvis brukeren gir det riktige svaret, skriv ut "Riktig!" og still det neste spørsmålet. Hvis brukeren gir et feil svar, skriv ut "Beklager, det var feil! Spillet er over." Hvis brukeren svarer på alle spørsmålene riktig, skriv ut "Gratulerer, du vant!"
Programmet skal bestå av minst 3 spørsmål og skal avslutte hvis brukeren svarer feil.
# Spørsmål 1
bruker_svar = input("1 + 1 = ")
if bruker_svar == "2":
print("Riktig!")
# Spørsmål 2
bruker_svar= input("5 * 4 = ")
if bruker_svar == "20":
print("Riktig!")
# Spørsmål 2
bruker_svar = input("10 / 2 = ")
if bruker_svar == "5":
print("Riktig!")
print("Gratulerer, du vant!")
else:
print("Beklager, det var feil! Spillet er over.")
# Feil svar på spørsmål 2
else:
print("Beklager, det var feil! Spillet er over.")
# Feil svar på spørsmål 1
else:
print("Beklager, det var feil! Spillet er over.")
01.18 Største verdi (vanskelig oppgave!)
I denne oppgave skal du skrive et program som ber brukeren om tall og skriver ut informasjon om det største tallet. Du kan anta at brukeren bare skriver inn heltall.
Programmet skal ta inn tre heltall og skrive ut den største verdien.
Her er et eksempel på hvordan en kjøring av programmet kan se ut:
Første tall: 3
Andre tall: 1
Tredje tall: 2
Største verdien er:
3
NB: Det er flere måter å løse dette på.
Hint
Verdien av en variabel kan kopieres til en annen variabel.
For eksempel når vi skriver:
a = 1
b = a
b
inneholder verdien 1 også.
Utfording: Utvid programmet slik at det skriver ut hvor mange av de tre tallene er lik den største verdien.
Her er et eksempel på hvordan en kjøring av programmet kan se ut:
Første tall: 3
Andre tall: 1
Tredje tall: 3
Største verdien er:
3
2 verdier er lik den største verdien.
a = input("Første tall: ")
b = input("Andre tall: ")
c = input("Tredje tall: ")
print("Største verdien er: ")
if a >= b and a >= c:
print(a)
elif b >= a and b >= c:
print(b)
else:
print(c)
Utfordring
lang løsning med nøstete if-else:
a = input("Første tall: ")
b = input("Andre tall: ")
c = input("Tredje tall: ")
print("Største verdien er: ")
if a >= b and a >= c:
print(a)
stoerst = a
elif b >= a and b >= c:
print(b)
stoerst = b
else:
print(c)
stoerst = c
if a == stoerst:
if b == stoerst:
if c == stoerst:
print("3 verdier er lik den største verdi.")
else:
print("2 verdier er lik den største verdi.")
else:
if c == stoerst:
print("2 verdier er lik den største verdi.")
else:
print("1 verdi er lik den største verdi.")
else:
if b == stoerst:
if c == stoerst:
print("2 verdier er lik den største verdi.")
else:
print("1 verdi er lik den største verdi.")
else:
if c == stoerst:
print("1 verdi er lik den største verdi.")
# ingen else her, fordi dette er ikke mulig å ha 0 verdier lik den stoerste verdi
kort løsning med tellervariabel:
a = input("Første tall: ")
b = input("Andre tall: ")
c = input("Tredje tall: ")
print("Største verdien er: ")
if a >= b and a >= c:
print(a)
stoerst = a
elif b >= a and b >= c:
print(b)
stoerst = b
else:
print(c)
stoerst = c
teller = 0
if a == stoerst:
teller = teller + 1
if b == stoerst:
teller = teller + 1
if c == stoerst:
teller = teller + 1
if teller == 1:
print("1 verdi er lik den største verdi.")
else:
print(teller, "verdier er lik den største verdi.")