Uendelige gentagelser

I forrige afsnit, så du, hvordan et stykke Python kode kan blive gentaget et bestemt antal gange. I andre situationer ved vi ikke, hvormange gange et stykke kode skal gentages. Vi vil altså fortsætte imens et bestemt betingelse er opfyldt (eller ikke opfyldt).

Det kan vi gøre med while sætning. Prøv at se følgende eksempel, som også skriver tallene 0 til 4 ud:

# Python: eks2-6-1.py

slut = "nej"
i = 0

while slut == "nej":
  print(i)
  i = i + 1
  if i == 5: slut = "ja"

print("slut!")

I den første linje efter kommentarer får variablen slut værdien “nej”. Vi bruger slut til at holde status på om koden efter while skal fortsætte, og en sådan variable er også kaldt for et statusflag. Senere ser du at det kan gørs lidt smartere end vist her,

I den næste linje bliver variablen i sat 0. Det er den variable, som bliver talt op i while koden.

Herefter starter while løkken, som kører så længe slut har værdien “nej”. De næste to linjer er set før. Først bliver variablen i udskrevet, hvorefter den bliver talt en op.

Den sidste linje i while blokken checker Python om i = 5. Hvis ja, ændrer vi variablen slut til “ja”, så while løkken standse og Python kan fortsætte i programmet.

Hvad sker i følgende meget lille Python program?

# Python: eks2-6-2.py

while 1 == 1:
  print("Hej")

På dansk betyder det: sålænge 1 er 1 skriv hej. Sådan er det altid, så Python vil blive ved med at skrive hej i al evighed (du kan dog stoppe det ved at trykke ctrl-tasten og c på samme tid.) Det hedder en uendelige løkke, og den vil køre i al uendelig, hvis den ikke bliver stoppet.

En while løkke er ofte anvendt i et program, hvor programmet venter på input fra brugeren. Se dette program.

# eks2-6-3.py

slut = "nej"

while slut == "nej":
    print("Spoerg mig om dyr")

    print("1) Hvad siger en ko?")
    print("2) Hvad siger en hund?")
    print("3) Hvad siger et kat?")
    print("0) Ikke mere")

    valg = str(input("Hvad vil du spoerge om (0,1,2,3)? "))

    if valg == "0":
        print("Farvel!")
        slut = "ja"
    elif valg == "1":
        print("Den siger muh!")
    elif valg == "2":
        print("Den siger vov!")
    elif valg == "3":
        print("Den siger miav!")
    else:
        print("Jeg forstaar ikke et ", valg)

    print("\n")