Verdeel de leeftijden
Kies klein bij leeftijd < 4, jong bij leeftijd < 18, anders volwassen. Toon de groep op regel 1.
Een pakketdienst kan lichte, middelzware en zware pakketten verschillende tarieven geven. Een keuze tussen twee routes is dan niet genoeg. Je wilt meerdere mogelijkheden nalopen en precies één bijpassend resultaat kiezen.
Met elif, een afkorting van “else if”, voeg je een volgende voorwaarde toe aan dezelfde keuze. Python bekijkt die voorwaarde alleen als de eerdere voorwaarden in de keten onwaar waren. Een elif kan daarom niet zelfstandig beginnen: er staat eerst een if.
Zodra een voorwaarde waar is, voert Python het bijbehorende blok uit en slaat de overige routes van die keten over. Een afsluitende else vangt alles op wat niet eerder paste. Er wordt dus niet gezocht naar de “beste” route: de eerste passende route wint.
De volgorde van je voorwaarden is daardoor belangrijk. Controleer een kleine bovengrens vóór een grotere bovengrens als je oplopende groepen maakt. Anders kan de brede groep ook de waarden opvangen die je voor de kleinere groep bedoelde.
Een grenswaarde is een waarde waarop je regel van route kan wisselen. Bij weight < 3 hoort drie zelf niet meer bij de lichte groep. Zeg in gewone taal of je “minder dan” of “hoogstens” bedoelt voordat je het vergelijkingsteken kiest.
Voor dit fictieve tarief is een pakket onder drie kilo licht, vanaf drie tot acht kilo middelzwaar en vanaf acht kilo zwaar. De naam van de groep en de prijs horen steeds bij dezelfde route.
weight = 4
if weight < 3:
group = "licht"
price = 3
elif weight < 8:
group = "middel"
price = 5
else:
group = "zwaar"
price = 9
print(group)
print(price)middel 5
Vier is niet kleiner dan drie, dus Python slaat het eerste blok over. Vier is wel kleiner dan acht, waardoor het elif-blok wordt uitgevoerd. Daarna gaat Python direct verder bij de prints buiten de keten.
In de tweede voorwaarde hoef je niet nog eens te eisen dat het gewicht minstens drie is. Python komt daar alleen terecht als de eerste voorwaarde al onwaar was. Zo kun je aaneensluitende groepen met korte voorwaarden beschrijven.
Beide uitvoerwaarden worden in elk blok ingesteld. Dat voorkomt bijvoorbeeld een groepsnaam uit de ene route met een prijs die nog van een eerdere toekenning afkomstig is. Houd gegevens die samen één keuze vormen daarom bij elkaar.
Een veelgemaakte fout is om elif te vervangen door een nieuwe if. Daarmee begin je een tweede, onafhankelijke keuze.
weight = 2
if weight < 3:
group = "licht"
if weight < 8:
group = "middel"
else:
group = "zwaar"
print(group)middel
Het lichte pakket voldoet aan beide voorwaarden. Eerst krijgt group de waarde licht, maar daarna overschrijft de tweede if die met middel. Gebruik hier een if/elif-keten als je maar één categorie wilt kiezen.
Losse ifs zijn niet altijd fout. Ze passen wanneer verschillende acties allebei mogen plaatsvinden. Het verschil zit in je bedoeling: één route kiezen of meerdere onafhankelijke vragen beantwoorden.
Verdeel de ingelezen leeftijd over drie fictieve kaartjesgroepen en koppel er een prijs aan. Bereken daarna apart hoeveel jaren nog ontbreken tot achttien; een volwassen bezoeker krijgt daarvoor nul. De tests controleren beide grenzen en een leeftijd ruim boven achttien.
Je programma krijgt deze invoer automatisch. Elke variant begint opnieuw. Alle varianten moeten kloppen.
3
4
27
18
Kies klein bij leeftijd < 4, jong bij leeftijd < 18, anders volwassen. Toon de groep op regel 1.
Bewaar binnen dezelfde routes de prijs 0, 6 of 10. Toon price op regel 2.
Toon op regel 3 de jaren tot achttien, met nul voor leeftijd achttien of hoger.
Toon op regel 4 Groep: ...; prijs: ... met de gekozen groep en prijs.
Hierna maak je ingewikkeldere voorwaarden leesbaar met kleine, benoemde tussenstappen.
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.