Gå till innehållet

while-loopen (Python)

while upprepar kod så länge villkoret är sant. Den passar när du inte vet i förväg hur många varv som behövs.

Mål för denna sida

  • Förstå hur man skriver en while-loop
  • Veta när man ska använda break och continue
Python
1
2
3
4
5
# Upprepa tills rätt svar
svar = ""
while svar != "Minecraft":
   svar = input("Vad heter det mest spelade spelet? ")
   print("Ett försök till", svar)

Upprepa 10 gånger:

Python
1
2
3
4
i = 1
while i <= 10:
   print("Detta är rad", i)
   i += 1

Avbryt med break, hoppa till nästa varv med continue.

Vanliga misstag

  • Glömma att ändra variabeln i loopen (t.ex. i += 1) → oändlig loop.
  • Fel villkor: while i < 10 kör inte raden där i blir 10. Använd <= om du vill inkludera 10.

Uppgifter

1) Fråga “Vilket är Europas folkrikaste land?” tills användaren svarar rätt. Skriv “Rätt!” när det stämmer.

2) Läs ett lösenord i en loop tills det inte är tomt. Bekräfta korrekt inmatning.

3) Gissningslek: användaren får max 5 gissningar på rätt svar. Avsluta direkt med break när svaret är rätt.

4) Skriv ut talen 50 till 1, ett per rad, med en while-loop.

Extra:

5) Läs två heltal (a < b). Skriv alla heltal mellan a och b separerade med mellanslag.

6) Läs heltal flera gånger tills användaren säger nej. Skriv ut det största talet som matats in.


Små steg – bygg en räknare

Python
1
2
3
4
i = 1
while i <= 5:
   print("Varv", i)
   i += 1  # glöm inte detta!

Micro-övningar: - Ändra gränsen till 10. - Räkna baklänges från 5 till 1.

Mini-projekt: Gissa talet (med försök)

Python
import random
hemligt = random.randint(1, 50)
chanser = 5

while chanser > 0:
   g = int(input("Gissa (1-50): "))
   if g == hemligt:
      print("Rätt!")
      break
   elif g < hemligt:
      print("Högre!")
   else:
      print("Lägre!")
   chanser -= 1

if chanser == 0:
   print("Slut på chanser. Talet var:", hemligt)

Utmaningar: - Spara antalet gissningar och skriv ut i slutet. - Förhindra krasch vid felaktig input (se try/except under felsökning).

Felsökning

  • Oändlig loop: glömde du uppdatera variabeln i loopen?
  • Villkoret matchar aldrig: skriv ut variablerna för att se deras värden.
  • Fel inmatning (ValueError): använd try/except runt int(input(...)).

Hitta felen! (5 fel)

Koden ska fråga efter ett lösenord högst 3 gånger. Rätta fem fel.

Python
hemligt = "abc123"
försök = 0
while försök <= 3:
   s = input("Lösenord: ")
   if s = hemligt:
      print("Rätt!")
      break
   else:
      print("Fel. Försök igen.")
print("Slut på försök")

Facit

Python
hemligt = "abc123"
försök = 0

# Fix 1: Kör högst tre försök → villkor ska vara < 3
while försök < 3:
   s = input("Lösenord: ")

   # Fix 2: Använd jämförelseoperatorn ==
   if s == hemligt:
      print("Rätt!")
      break
   else:
      print("Fel. Försök igen.")

   # Fix 3: Öka räknaren varje varv
   försök += 1

# Fix 4: Visa slutmeddelande bara om man inte bröt med Rätt!
if försök == 3:
   print("Slut på försök")