Skrivet av Märta:
Känner att jag inte är någon naturbegåvning på detta, har inte kommit in i det än och det blir bara fel.... Har Schell men får ingen av dessa att fungera. Har Mac och problem med hakparanteser. Kan skriva { och } men det verkar inte fungera och hittar inget annat sätt när jag testar och söker på det. Får väl se om jag kan låna min sambos PC och testa...
Öppna ett textdokument (eller en terminal) och testa alla Shift- och Alt-kombinationer systematiskt för att se om inte [ och ] dyker upp någonstans. { och } betyder fundamentalt olika saker i Python (och troligen alla programspråk), så det fungerar inte som substitut som du märkt.
Notera om du ska testa koden i en Python-tolk att dina exempel förutsätter att du använder Python 3, och inte Python 2. När tolken öppnas så säger den vilken version som körs. Exempel på min dator, med relevanta versionsnummer rödmarkerade:
$ python
Python 2.7.6 (default, Feb 26 2014, 06:42:04)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
$ python3
Python 3.3.5rc2 (default, Mar 5 2014, 10:38:26)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Övrig text kommer skilja sig lite, men se till att du kör rätt huvudversion.
Skrivet av Märta:
<= är jag med på att man inte kan använda här, men n=1? En annan uppgift här nedan, men här går det ju att ha n=1 eller i detta fallet m=1. Borde man inte kunna skriva om det som jag postade innan på samma sätt?
Skriver ut alla 95 ord som finns i listan ”ord”:
m = 1
sum = ord[0]
while m < 95:
sum += ord[m]
m += 1
print(sum)
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.