Sprint 3 Β· Challenge β€” Routeplanner  Β·  Deel 1 van 3

Als conciΓ«rge, wil ik dat de drone zelf een inspectieronde door het lokaal vliegt en vanzelf terugkomt op zijn startpunt, zodat ik zonder vliegervaring de ruimte kan laten controleren.

Deel 1: Waypoints inlezen

De conciΓ«rge wil dat de drone een inspectieronde door het lokaal vliegt en daarna vanzelf terugkomt op het startpunt. In deel 1 zorg je dat de piloot de route kan invoeren.

Β±25 minlussen Β· break Β· continuelijsten Β· append
Zo werkt deze challenge. Er is geen theorie en geen stappenplan: je krijgt een doel, regels en testgevallen. Alles wat je nodig hebt, ken je uit sprint 1, 2 en 3. Loop je vast, open dan één hint tegelijk β€” het zijn vragen, geen antwoorden. De challenge bestaat uit drie delen van samen ongeveer anderhalf uur, en je bouwt steeds door in hetzelfde bestand inspection_route.py.

Doel

De piloot typt de route in, waypoint voor waypoint. Een waypoint is een richting plus een afstand in centimeters, bijvoorbeeld forward en 150. De piloot stopt door stop te typen als richting. Er kunnen hooguit 8 waypoints in één route.

Na het invoeren print het script een genummerd overzicht van de route en de totale afstand.

Regels voor deel 1

  • Je bewaart de route in twee lijsten: één met de richtingen en één met de afstanden. Op dezelfde plek in beide lijsten staat hetzelfde waypoint.
  • Het script gebruikt geen while: het aantal rondes is begrensd door het maximum van 8.
  • Is de afstand geen geheel getal, dan meldt het script dat en slaat het dit waypoint over. Het script crasht nooit op rare invoer.
  • Hoofdletters en spaties rond de richting maken niet uit: Forward is hetzelfde als forward.
  • Of een richting of afstand toegestaan is, controleer je nog niet. Dat is deel 2.

Test met deze invoer

TestWat de piloot typt
1forward 150 Β· left 100 Β· up 50 Β· stop
2FORWARD 100 Β· back tien Β· right 80 Β· stop
3stop (meteen)
4negen keer forward 20, zonder stop

Bedenk vΓ³Γ³r elke test wat er hoort te gebeuren. Er staat bewust geen verwachte uitvoer bij.

Hints

Hoe stop je een for-lus voordat hij klaar is?
Welk woord uit US1 Β· T3 zorgt ervoor dat een lus meteen ophoudt? En waar in de ronde moet de controle op stop staan: vΓ³Γ³r of na het vragen om een afstand?
Wat doe je met een afstand die geen getal is?
EΓ©n string-methode uit het sprint 2-project vertelt je of er alleen cijfers in een tekst staan. En met welk woord sla je de rest van deze ronde over, zonder de lus te stoppen?
Test 4 geeft negen waypoints op. Wat gebeurt er met de negende?
Hoeveel rondes doet je lus precies? Moet de piloot weten dat het maximum bereikt is? Wat print je dan?
Moet je voor elke test de hele route opnieuw typen?
Nee: voor deel 2 en 3 mag je de twee lijsten ook gewoon in je code klaarzetten. Hoe schakel je snel tussen "piloot typt" en "vaste testroute"?
Hoe maak je een genummerd overzicht van twee lijsten tegelijk?
Met enumerate() krijg je de plek én de waarde uit één lijst. Met die plek haal je de bijbehorende waarde uit de andere lijst.

Klaar als

  • De route staat in twee lijsten die altijd even lang zijn, ook na foute invoer.
  • Er is geen while; het script stopt bij stop of na 8 waypoints en zegt welke van de twee het was.
  • Een afstand die geen geheel getal is, wordt gemeld en overgeslagen; het script crasht op geen enkele testinvoer.
  • Het overzicht is genummerd vanaf 1 en toont per regel richting en afstand, gevolgd door de totale afstand.
  • Bij test 3 zegt het script iets zinnigs over een lege route, in plaats van een overzicht zonder regels.