Tidigare har du använt kommandot for
som kör en loop ett begränsat antal gånger.
Ett annat kommando är while
som körs så länge ett villkor uppfylls, t.ex. att summan är mindre än 10.
while
har fördelen att den fungerar för alla sorts loopar, medan for
bara fungerar när man redan från start vet antalet gånger loopen ska köras. Å andra sidan kan man med while
hamna i situationen att loopen snurrar i all evighet (lätt hänt vid felkodning). Då måste man avbryta körningen, t.ex. med CTRL/C eller att stänga ner webbfönstret.
Med en while
-sats upprepar du alltså ett block med kod så länge ett logiskt villkor är sant.
Grundkoden är:
while villkor:
<en eller flera rader kod som upprepas så länge villkor är sant>
tal = 100
antal_loop = 0
while tal <= 1000:
print(tal)
tal = tal + 100
antal_loop = antal_loop + 1
print("Loopen kördes",antal_loop,"gånger.")
Du ska skriva en kod som summerar alla heltal mellan ett godtyckligt start- och sluttal. 1. Ta bort all kod i fönstret och skriv eller kopiera in nedanstående (kontrollera att indraget blir korrekt):
print("Programmet summerar alla heltal mellan två valda heltal")
tal = int(input("Ange ett heltal som starttal: "))
sluttal = int(input("Ange ett högre heltal som sluttal: "))
while tal <= sluttal:
tal = tal + 1
Kommentar: Här har vi kombinerat två koder - input()
och int()
så att det skrivs på en rad i stället för två.
Programmet körs så att det som är i den innersta parentesen input()
körs först och därefter det i den yttre parentesen int()
.
Kommandot input
skriver ut en textsträng på skärmen och väntar på att användaren skriver in ett tal. Värdet på talet lagras i variabeln starttal
. Variabeln blir automatiskt satt till en textsträng.
Kommandot int()
gör om textsträngen till ett tal (fungerar bara om texten består av siffror).
2. Lägg till en tom rad efter första raden kod och skapa variabeln summa som ges värde 0.
3. Lägg till en rad överst i loopen (ovanför raden tal = tal + 1
).
Där skriver du en kod som ändrar värdet på variabeln summa
genom att addera värdet på variabeln tal
med variabeln summa
.
4. Programmet avslutas med att skriva ut texten Summan av talen är XXX
. (XXX ersätts med korrekt summa). Här får du tänka lite extra, du vill ju inte att summan ska skrivas ut varje gång loopen körs, utan enbart slutsumman. Vad behöver du tänka på då?
5. Kör programmet med talen 2
och 6
som input och kontrollera att summan är 20.