Hopp til innhald
Oppgåve

Programmering med while-lykkjer

While-lykkjer treng vi mellom anna for å fange opp når brukaren av programmet skriv noko anna enn forventa.

AP-40

a) Koding

Programmet nedanfor gir feilmelding. Kva er feil i kodelinjene?

svar = "nei"
while svar =! "ja"
svar = input("Skriv ja")
print("Flott, du skreiv ja.)

Fasit
  1. Operatoren for "ikkje lik" på linje 2 skal vere "!=".
  2. Det manglar eit kolon på slutten av linje 2.
  3. Linje 3 må rykkjast inn.
  4. Det manglar eit hermeteikn på linje 4 før den siste parentesen.

b) Algoritme

Skriv algoritmen til programmet over.

Løysingsforslag
  • Set variabelen svar lik "nei".
  • Så lenge variabelen svar ikkje er lik "ja": Skriv til skjermen "Skriv ja", ta imot svaret frå brukaren, og lagre det i variabelen svar.
  • Skriv til skjermen "Flott, du skreiv ja.".

c) Forklaring

Forklar med ord korleis programmet fungerer.

Løysingsforslag

Programmet gjer eigentleg ingen ting anna enn å skrive ut setninga "Flott, du skreiv ja." i linje 4, men det blir ikkje gjort før brukaren av programmet skriv "ja".

AP-41

a) Algoritme

Skriv algoritmen til kodelinjene nedanfor.

tal = 10
while tal > 1:
    tal = tal - 1
    print(f"Talet er no {tal}.")

Løysingsforslag
  • Set variabelen tal lik 10.
  • Så lenge variabelen tal er større enn 1:
    • La verdien av tal minke med 1.
    • Skriv til skjermen "Talet er no <tal>.".

b) Forklaring

Forklar kva programmet gjer utan å køyre det først.

AP-42

På sida Vegval – if-elif-else lagar vi eit program der brukaren av programmet skal skrive om hen er norsk eller svensk. Vi ser no på ein variant der brukaren skal skrive "s" dersom hen er svensk eller "a" dersom hen ikkje er svensk. I tillegg vil vi at dersom brukaren er uheldig og skriv noko anna enn "s" eller "a", skal hen få ein ny sjanse til å skrive rett.

a) Algoritme

Skriv algoritmen til eit slikt program.

Løysingsforslag
  • Set variabelen svar lik "noko anna".
  • Så lenge variabelen svar har andre verdiar enn "s" eller "a":
    • Skriv til skjermen "Dersom du er svensk, skriv 's'. Dersom du ikkje er svensk, skriv 'a'.".
    • Ta imot svaret frå brukaren, og lagre det i variabelen svar.
    • Dersom svar er lik "s": Skriv til skjermen "Du er svensk.".
    • Dersom svar ikkje er lik "s", men "a": Skriv til skjermen "Du er ikkje svensk.".
    • Dersom svar er lik noko anna enn "s" eller "a": Skriv til skjermen "Du skreiv noko som programmet ikkje forstod. Prøv ein gong til!".

b) Koding

Skriv koden til algoritmen over, og test at programmet fungerer som det skal.

Løysingsforslag

svar = "noko anna"
while svar != "s" and svar != "a":
    print("Dersom du er svensk, skriv 's'.")
    svar = input("Dersom du er ikkje er svensk, skriv 'a'.")
    if svar == "s":
        print("Du er svensk.")
    elif svar == "a":
        print("Du er ikkje svensk.")
    else:
        print("Du skreiv noko som programmet ikkje forstod. "
        "Prøv ein gong til!")