For och while loop
Jag har trott att man enbart avänder sig av for looper på tal som innefattar sannolikhet (eftersom alla uppgifter jag fått har varituppbyggda så) men hittade nu en uppgift där man ska använda sig av en while loop på en uppgift som handlar om sannolikhet. Sökte upp skillnaden mellan dem för att förstå det, men tycker förklaringen är lite luddig. Någon som skulle kunna förklara detta för mig?
for
En for-loop har ett litet annat sätt att skriva sitt villkor, man kan se på det som en uppräknande loop där man kan sätta en variabel, ett villkor och en stegning av variabelns värde.
while
En while-loop utförs 0 eller flera gånger, beroende om villkoret är uppfyllt. Villkoret fungerar på samma sätt som i en if-sats.
(Skulle man kunna säga att while används tex när man plockar flera kort ur en kortlek? Medan for enbart är när man vill ta rea på p(av att något sker en gång)? tex att få en 3 på en tärning?)
En slinga (loop) används när något behöver repeteras. Den är inte kopplad till något visst matematiskt område eller något visst område alls. Om en eller flera instruktioner behöver repeteras så läggs de lämpligen i ett kodblock i en slinga.
I Python finns nyckelorden while
och for
för att skapa en slinga. De ser olika ut men de fungera i grunden likadant. Man behöver ange vilket/vilka villkor som behöver vara uppfyllda för att slingan ska fortsätta. En slinga kan utföras 0, 1 eller flera gånger. Det finns även slingor som alltid fortsätter, sådana kallas oändliga, men de är oftast oönskade och beror då på programmeringsfel.
En while
-slinga påbörjas och fortsätter sedan om villkoret är sant. Den kan alltid användas om man behöver en slinga.
En for
-slinga påbörjas och fortsätter sedan om villkoret är sant. Den är ett smidigt sätt att skapa repetitioner om man vet hur många repetitioner som ska utföras, t ex om alla tal mellan 1 och 10 ska läggas i en lista eller om alla värden i en tuple ska skrivas ut.
En slinga kan även avbrytas med instruktionen break
.
"Temat" på en uppgift har väldigt lös koppling till hur koden ser ut. Det blir lätt fel att försöka hitta recept som "aha, en medelvärdesuppgift, då ska det vara for-loop". Fundera istället på hur problemet ska lösas, och vilken loop som passar för det ändamålet.
En for-loop passar när det är på förhand bestämt hur många iterationer som ska göras. T.ex. göra nånting 5 gånger, eller en gång för varje element i en lista.
En while-loop passar i det motsatta fallet, när du inte vet hur många iterationer som krävs. Istället för antalet iterationer vet man då ett stoppvillkor. Som i födelsedagsproblemet du postade: "sluta leta när sannolikheten nått 50%". Man vet inte hur många iterationer som krävs (det är det man vill ta reda på), så man använder en while-loop.