Selecteer het juiste spoor
Stop boven stop en sla veelvouden van drie over. Toon de overgebleven getallen op regel 1.
Je verwerkt genummerde tickets, maar één ticket is ingetrokken en verderop moet je stoppen voor een pauze. Het ingetrokken ticket overslaan is iets anders dan al het resterende werk laten liggen. Python heeft voor die twee bedoelingen verschillende opdrachten.
Met break verlaat je de lus waarin je op dat moment zit. De resterende opdrachten van die ronde en de volgende rondes van die lus worden overgeslagen. Het programma gaat daarna verder bij de code ná de lus.
Met continue sla je alleen de rest van de huidige ronde over. In een for-lus gaat Python vervolgens door naar de volgende beschikbare waarde. De opdrachten die eerder in die ronde al zijn uitgevoerd, worden daardoor niet ongedaan gemaakt.
De plaats van de controles is dus belangrijk. Als je een ticket niet wilt verwerken, controleer dat dan voordat je het afdrukt of bij een totaal optelt. Anders kan een overgeslagen ticket toch al in je overzicht terechtgekomen zijn.
In het voorbeeld is ticket drie ingetrokken. Zodra ticket zes aan de beurt komt, stopt de medewerker met deze reeks; één, twee, vier en vijf kunnen wel worden afgehandeld.
for ticket in range(1, 8):
if ticket == 6:
break
if ticket == 3:
continue
print(ticket)
print("Pauze")1 2 4 5 Pauze
Bij drie voert Python continue uit en bereikt de print eronder niet. De volgende ronde met vier gaat gewoon verder. Bij zes voert Python break uit, waardoor ook zeven niet meer aan bod komt.
Het bericht Pauze staat buiten de lus. Het verschijnt dus nadat het werk met break is onderbroken. Break stopt hier de lus, niet het hele programma.
Lees de voorwaarden van boven naar beneden zoals Python dat doet. De stopcontrole bepaalt of je überhaupt verder wilt met deze reeks. Daarna beslist de tweede controle of de huidige waarde bruikbaar is.
Als je voor een ingetrokken ticket per ongeluk break gebruikt, verdwijnen ook de latere tickets uit de verwerking. Dit voorbeeld moet alleen drie overslaan, maar doet dat niet.
for ticket in range(1, 6):
if ticket == 3:
break
print(ticket)1 2
Je ziet alleen één en twee. Het programma verlaat bij drie de hele lus en bereikt vier en vijf nooit. Vervang de onderbreking door continue wanneer je de volgende tickets nog wel wilt behandelen.
Dat verschil zie je niet altijd bij het laatste getal van een reeks. Kies daarom bij het controleren van je code een over te slaan waarde met nog andere waarden erachter. Dan kun je vaststellen of die volgende rondes werkelijk doorgaan.
Een teller voor afgehandelde tickets hoort na de controles te staan, net als de optelling bij een som. count += 1 telt één verwerkt item; total += number telt de waarde van dat item erbij. Dat zijn verschillende samenvattingen van dezelfde verwerking.
Voor de opdracht moet je veelvouden van drie herkennen. Met number % 3 == 0 vraag je of delen door drie geen rest oplevert. Zo kun je de bekende restbewerking gebruiken om een groep getallen over te slaan.
Doorloop de ingelezen reeks, stop boven de opgegeven grens en sla veelvouden van drie over. Houd het tekstspoor, het aantal, de som en de laatste verwerkte waarde bij. Als niets verwerkt wordt, blijven de vooraf ingestelde beginwaarden gelden.
Je programma krijgt deze invoer automatisch. Elke variant begint opnieuw. Alle varianten moeten kloppen.
8 5
2 0
6 9
1 2
Stop boven stop en sla veelvouden van drie over. Toon de overgebleven getallen op regel 1.
Toon op regel 2 hoeveel getallen werkelijk in het spoor terechtkomen.
Toon op regel 3 de som van de verwerkte getallen.
Toon op regel 4 het laatst verwerkte getal, of nul bij een leeg spoor.
Hierna bouw je met zulke tussenresultaten een volledig overzicht van een reeks.
Voer je code uit en ontdek
wat je hebt gemaakt.
Je hoeft het niet in één keer goed te doen. Na het uitvoeren zie je hier welke stappen al kloppen.