tisdag 4 september 2012

While-loopar

I en loop upprepas samma satser flera gånger. Vi ska här se på en av två vanliga loopar nämligen while-loopen

While-loopen

While-loopen upprepar satserna i loopen tills logiska uttrycket i while-satsen inte är sant. Precis som för if-satser används indrag för att markera vilka satser som ska loopas:

while logiskt uttryck:
   sats(er) 

Övning 1.12
Skriv och testa följande program.
#Gissa tal

import random #modulen random gör så att jag kan generera slumptal

a = random.randint(1, 10) #Genererar ett slumpmäsigt heltal 1 till 10
b = 0                     #Initierar gissat tal utanför intervallet
gissningar = 0            #Antal gjorda gissningar 
while a != b :
    b = int(input("gissa talet:"))
    gissningar = gissningar + 1 #Ökar antalet gissningar med 1
print("Du gissade rätt på " + str(gissningar) + " försök")

Det finns några saker att notera i detta program:
  • Användningen av random.randint(1, 10) som generar ett slumpat heltal från och med 1 till och med 10. Läs gärna mer om generering av slumptal här.
  • Initieringen av b före loopen. Variabeln b sätts till 0 som är utanför intervallet för slumptalet. Vad kunde ha hänt annars?
  • Initieringen av gissningar till 0 då den kommer att ökas med 1 efter den första gissningen.
  • Tilldelningen gissningar=gissningar+1 gör att gissningar ökas med 1 efter varje gissning. Lägg märket till att denna typ av =-användning är felaktig matematiskt men vanlig inom programmering.
Överkurs: Tilldelningen a = a + 1 kan skrivas mer kortfattat med operatorn += så som a += 1 . Ändra i programmet så att denna operator används.

Övning 1.13
Ändra programmet i övning 1.12 så att ett slumpat heltal mellan 1 och 100 genereras samt att användaren får reda på om gissningen var större eller mindre än rätt svar efter varje gissning.

Uppgift 1.3
Skriv ett program som för varje varv i en loop genererar ett slumpat heltal 1 till 6 och adderar det med föregående tal samt skriver ut summan. Programmet ska loopa tills summan blivit minst 100.


Oändlig while-loop och break

Nedanstående är en oändlig loop.

while True :
    print("loop the loop")

OBS! Ovanstående köres på egen risk. Prova ctrl+C för att bryta loopen men inga garantier ges.

Dessa kan vara användbara ibland men vanligen vill man ha något sätt att bryta loopandet. Då kommer kommandot break till hjälp. Med break bryts loopen och programmet fortsätter nedanför loopens satser.

Kommandot break kan användas i alla loopar för att hoppa ur loopen.

Övning 1.14
Skriv programmet nedan och testa funktionen

while True :
    a=int(input("Skriv in ett tal. (0 för att sluta) "))
    if a == 0 : break
print("Du skrev noll. Avslutar")

Uppgift 1.4
Genom att  använda en oändlig loop samt break  i stället för att göra testet om gissningen är korrekt i while-satsen kan programmet i övning 1.13 skrivas kortare och med färre variabler. Gör det.

Inga kommentarer:

Skicka en kommentar