Werkboek — Hoofdstuk 3: Selecties (if / elif / else)
Let op: alle programmacode schrijf je in het Engels (zoals in het boek). De uitleg en opdrachten zijn in het Nederlands.
Doel van dit hoofdstuk
- Voorwaarden schrijven met vergelijkings- en logische operatoren.
- Beslissingen nemen met if/elif/else en met de voorwaardelijke expressie (ternary).
- Begrijpen van truthiness (lege waarden zijn onwaar) en valkuilen vermijden.
Richtlijnen
- Gebruik duidelijke variabelenamen (Engels).
- Houd je aan de grenswaarden zoals gevraagd; benoem je keuzes in comments.
- Print duidelijke output zodat een gebruiker begrijpt wat er gebeurt.
Oefening 1 — Basis if
Schrijf een script dat een geheel getal n leest en print:
- "even" als
ndeelbaar is door 2, - anders "odd". Gebruik een enkele if/else.
Oefening 2 — Leeftijdscategorieën
Vraag een leeftijd (integer) en print precies één van: "minor" (< 18), "adult" (18–64), "senior" (65+). Gebruik elif in de juiste volgorde.
Oefening 3 — Rapportcijfer naar label Lees een decimaal cijfer 0–10 en print: "insufficient" (< 5.5), "sufficient" (5.5–6.9), "good" (7.0–8.4), "excellent" (8.5–10). Zorg dat elke invoer in 0..10 in precies één categorie valt.
Oefening 4 — Login-indicatie (zonder echte beveiliging)
Vraag username en password en print "Welcome!" als ze exact "admin" en "secret" zijn, anders "Access denied". Gebruik een enkele if/else met and.
Oefening 5 — Korting met lidmaatschap
Lees een bedrag amount (float) en vraag of iemand lid is (antwoord yes of no). Regels:
- 10% korting als lid én
amount >= 100. - Anders 5% korting als
amount >= 150. - Anders 0%. Print het kortingspercentage en het bedrag na korting (2 decimalen).
Oefening 6 — Truthiness en invoer Vraag een zoekterm (string). Print:
- "Empty query" als de invoer leeg is (na
strip()), - anders "Searching for '
'...". Gebruik de ternary expression.
Oefening 7 — Kettingvergelijking
Lees een integer x en print True of False of x in het bereik 10..20 (inclusief) ligt, met een kettingvergelijking. Print geen extra tekst.
Oefening 8 — Guard clause (functie)
Schrijf een functie shipping_cost(country: str, weight_kg: float) -> float met regels uit het boek:
- Als
weight_kg <= 0:raise ValueError. - NL: 4.50 (<= 2 kg) anders 6.75; BE: 5.20 (<= 2 kg) anders 7.40; overige: 9.90.
Schrijf een klein
__main__-blok dat 2–3 voorbeelden print.
Oefening 9 — Wachtwoordsterkte-indicatie (eenvoudig) Lees een wachtwoord (string) en geef één label:
- "weak" als lengte < 6,
- "medium" als lengte 6–9,
- "strong" als lengte >= 10. Gebruik alleen lengte als criterium in deze oefening. Toon ook de lengte in de output.
Oefening 10 — Netto prijs met btw‑optie
Lees amount (float) en type (string: incl of excl). Als type == "incl", haal 21% btw eraf en toon netto; als excl, tel 21% btw erbij. Gebruik duidelijke prints en formatteer met 2 decimalen. Vang geen invoerfouten in deze oefening; focus op selecties.
Uitdaging (optioneel) — Kalenderdag naar type dag
Vraag een dagnaam (bijv. "monday"/"tuesday" etc., case-insensitive). Print "weekend" voor zaterdag/zondag, anders "weekday". Gebruik normalisatie (lower()) en een compacte voorwaarde (bijv. in op een set of tuple).