Hopp til innhold
Oppgave

Programmering med while-løkker

While-løkker trenger vi blant annet for å fange opp når brukeren av programmet skriver noe annet enn forventet.

AP-40

a) Koding

Programmet nedenfor gir feilmelding. Hva er feil i kodelinjene?

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

Fasit
  1. Operatoren for "ikke lik" på linje 2 skal være "!=".
  2. Det mangler et kolon på slutten av linje 2.
  3. Linje 3 må rykkes inn.
  4. Det mangler et hermetegn på linje 4 før den siste parentesen.

b) Algoritme

Skriv algoritmen til programmet over.

Løsningsforslag
  • Sett variabelen svar lik "nei".
  • Så lenge variabelen svar ikke er lik "ja": Skriv til skjermen "Skriv ja", ta imot svaret fra brukeren, og lagre det i variabelen svar.
  • Skriv til skjermen "Flott, du skrev ja.".

c) Forklaring

Forklar med ord hvordan programmet fungerer.

Løsningsforslag

Programmet gjør egentleg ingen ting annet enn å skrive ut setningen "Flott, du skrev ja." i linje 4, men det blir ikke gjort før brukeren av programmet skriver "ja".

AP-41

a) Algoritme

Skriv algoritmen til kodelinjene nedenfor.

tall = 10
while tall > 1:
    tall = tall - 1
    print(f"Tallet er nå {tall}.")

Løsningsforslag
  • Sett variabelen tall lik 10.
  • Så lenge variabelen tall er større enn 1:

    • La verdien av tall minke med 1.
    • Skriv til skjermen "Tallet er nå <tall>.".

b) Forklaring

Forklar hva programmet gjør uten å kjøre det først.

AP-42

På siden Veivalg – if-elif-else lager vi et program der brukeren av programmet skal skrive om hen er norsk eller svensk. Vi ser nå på en variant der brukeren skal skrive "s" dersom hen er svensk eller "a" dersom hen ikke er svensk. I tillegg vil vi at dersom brukeren er uheldig og skriver noe annet enn "s" eller "a", skal hen få en ny sjanse til å skrive riktig.

a) Algoritme

Skriv algoritmen til et slikt program.

Løsningsforslag
  • Sett variabelen svar lik "noe annet".
  • Så lenge variabelen svar har andre verdier enn "s" eller "a":

    • Skriv til skjermen "Dersom du er svensk, skriv 's'. Dersom du ikke er svensk, skriv 'a'.".
    • Ta imot svaret fra brukeren, og lagre det i variabelen svar.
    • Dersom svar er lik "s": Skriv til skjermen "Du er svensk.".
    • Dersom svar ikke er lik "s", men "a": Skriv til skjermen "Du er ikke svensk.".
    • Dersom svar er lik noe annet enn "s" eller "a": Skriv til skjermen "Du skrev noe som programmet ikke forsto. Prøv en gang til!".

b) Koding

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

Løsningsforslag

svar = "noko anna"
while svar != "s" and svar != "a":
    print("Dersom du er svensk, skriv 's'.")
    svar = input("Dersom du er ikke er svensk, skriv 'a'.")
    if svar == "s":
        print("Du er svensk.")
    elif svar == "a":
        print("Du er ikke svensk.")
    else:
        print("Du skrev noe som programmet ikke forsto. "
        "Prøv en gang til!")