10 svar
67 visningar
destiny99 behöver inte mer hjälp
destiny99 Online 7905
Postad: 26 okt 10:15 Redigerad: 26 okt 10:15

While loop och indentering

Hej!

det verkar som att det spelar roll för while hur print är indenterad. Jag tänkte att den ska skriva ut alternativ B, C ,D och E vilket den gör om print(i) står under while loopen ,men jag förstår inte varför svaret blir 9. Är det för att den tolkar som att vi ska summera ihop alla tal som uppfyller villkoret och sen printa ut slutgiltigt svar än om vi ska skriva ut varje tal för sig som jag tänkte mig?

Calle_K 2285
Postad: 26 okt 10:18

Det spelar roll om print-satsen är identerad.

Eftersom den inte är det är den inte en del av while-loopen och därmed kommer enbart värdet på i efter den sista iterationen skrivas ut. Och denna har du ju visat att du vet är E.

destiny99 Online 7905
Postad: 26 okt 10:21 Redigerad: 26 okt 10:24
Calle_K skrev:

Det spelar roll om print-satsen är identerad.

Eftersom den inte är det är den inte en del av while-loopen och därmed kommer enbart värdet på i efter den sista iterationen skrivas ut. Och denna har du ju visat att du vet är E.

Asså facit säger att det är E men jag tänkte på B, C, D och E. Min tanke var såhär att den ska göra:

3

5

7

Okej jag förstår att den inte är en del av while loop funktion pga identeringen,men varför skriver den ut endast sista värdet ? Hur tänker programmet ? Tänker den att nu har vi fått värdet 9 och 9 är inte mindre än eller lika med 7 så vi skriver ut värdet ( den körs inte mer) ?

Calle_K 2285
Postad: 26 okt 10:25

while-loopen körs klart först. Värdet på iterationsvariabeln i kommer få det värde som den ges i sista iterationen, vilket är 9. Detta värde skrivs sedan ut.

destiny99 Online 7905
Postad: 26 okt 10:29
Calle_K skrev:

while-loopen körs klart först. Värdet på iterationsvariabeln i kommer få det värde som den ges i sista iterationen, vilket är 9. Detta värde skrivs sedan ut.

Jag förstår att while-loopen kommer köras klart tills villkoret är uppfylld , men jag tänker att den inte kommer köras vid sista iterationen då i=9 för 9 är inte mindre än eller lika med 7 , det stämmer eller?

thedifference 373
Postad: 26 okt 10:34 Redigerad: 26 okt 10:35

Nej, den kommer inte köras när i är 9. 

destiny99 Online 7905
Postad: 26 okt 10:38
thedifference skrev:

Nej, den kommer inte köras när i är 9. 

Okej det var en bra illustration av koden. Tack för det! Så om i <=7 och det är sant så ökar den med 2 och sen går den tillbaka till villkoret med det nya värdet som i har fått och kollar om i<=7 , annars om svaret är nej så skriver den ut värdet på i ?

thedifference 373
Postad: 26 okt 10:40

Ja. Eller egentligen är det att om villkoret inte uppfylls så går den bara ur while loopen och vidare med koden, vilket råkar vara en print. Kunde gjort det där schemat lite bättre.

destiny99 Online 7905
Postad: 26 okt 10:41 Redigerad: 26 okt 10:45
thedifference skrev:

Ja. Eller egentligen är det att om villkoret inte uppfylls så går den bara ur while loopen och vidare med koden, vilket råkar vara en print. Kunde gjort det där schemat lite bättre.

Jaha okej. Du kunde ha gjort ett schema när print finns med under while loop och utanför while loop. Det är 2 scenarios som jag ser på det.

En scenario där print finns med i while loop indenterad och den skriver 

3

5

7

En annan scenario där print är inte indenterad och den skriver ut bara sista iterationsvärdet

thedifference 373
Postad: 26 okt 10:45

Om printen var med i while-loopen hade schemat sett ut så här:

destiny99 Online 7905
Postad: 26 okt 11:08
thedifference skrev:

Om printen var med i while-loopen hade schemat sett ut så här:

Tack för schemat!  

Svara
Close