Ett sätt att lista ut vad som händer är att helt enkelt titta på koden och följa den i huvudet, kanske med ett skrivpapper till hjälp. Om jag som exempel tar koden:
i = 9
while i > 1:
print(i)
i -= 2
Vad kommer detta skriva ut? Om man läser koden och hänger med så blir det:
När vi når `while`-villkoret första gången så är `i`=9, och 9 är större än 1 — alltså går vi in i loopen.
Vi skriver ut "9".
Vi minskar `i` med 2, så nu är `i`=7.
Vi kommer tillbaka till loopvillkoret. 7 är större än 1, så vi går in igen.
Vi skriver ut "7".
Vi minskar `i` med 2, så nu är `i`=5.
Vi kommer tillbaka till loopvillkoret. 5 är större än 1, så vi går in igen.
Vi skriver ut "5".
Vi minskar `i` med 2, så nu är `i`=3.
Vi kommer tillbaka till loopvillkoret. 3 är större än 1, så vi går in igen.
Vi skriver ut "3".
Vi minskar `i` med 2, så nu är `i`=1.
Vi kommer tillbaka till loopvillkoret. 1 är inte större än 1, så vi avslutar.
Svar: Vi skriver ut
Alla som har lärt sig programmera har gjort sådana tankeexperiment, antingen strukturerat genom lektioner eller automatiskt när liknande situationer dyker upp. När man övat på ett par sådana så märker man att man kan ta "genvägar" i tanken. En van programmerare ser direkt att ovanstående skriver ut alla udda tal från 9 till (men inte inklusive) 1. På samma sätt så ser man direkt att exempelvis:
i = 9
while i != 0:
print(i)
i -= 2
kommer gå åt skogen, för loopvillkoret ("`i` inte lika med 0) kommer alltid vara sant.
Så, gällande dina originalexempel: titta på dem och försök följa med på ett papper och se vad som händer. Du behöver inte skriva upp alla 100 steg som behövs; vanligen kan man hoppa över alla i "mitten" där man vet att saker bara kommer upprepa sig med små skillnader ("iterera"), så det räcker att studera de första och sista iterationerna och lista ut vad som hände däremellan. Exempel:
i = 100
while i >= 16:
print(i)
i -= 4
Skriver ut "100".
Minskar `i` till 96.
Skriver ut "96".
… (tankegång: vi kommer följa "fyrans tabell" utan några överraskningar ett tag, och vi hamnar förr eller senare på exempelvis `i`=20) …
Skriver ut "20".
Minskar `i` till 16.
Loopvillkoret stämmer precis, skriver alltså ut även "16", men sedan är det stopp.
Svar: Vi skriver ut alla multiplar av 4 från 100 till (inklusive) 16.