Geneste selectie

Stel dat in de grote vakantie uitsluitend een groep vrienden van minstens 10 personen die hoogste 12 jaar zijn, een verminderde prijs van € 5,00 krijgt. Alle overige bezoekers betalen € 7,50.

Met wat je tot nu toe geleerd hebt, kan je dit als volgt programmeren:

leeftijd = int(input("Geef je leeftijd: "))
aantal = int(input("Hoe groot is vriendengroep? "))
ticketprijs = 7.50

if leeftijd <= 12:
    if aantal >= 10:
        ticketprijs = 5.00
        
totale_prijs = ticketprijs * aantal

print(f"De toegangsprijs voor de groep van {aantal} vrienden bedraagt € {totale_prijs}.")

Wanneer je een if-statement in een if-statement gebruikt, noemt men dat geneste selectie.

Geneste selectie

Geneste selectie is een controlestructuur waarbij een selectie-statement (zoals een if-statement) binnen een andere selectie-statement voorkomt. Zo kunnen in een programma dan complexere beslissingen genomen worden.

Code met geneste selectie is soms moeilijk leesbaar. Maar hoe kan je in één if-statement meerdere booleaanse expressies evalueren?

Logische operatoren

Om complexere voorwaarden te programmeren en geneste selectie te vermijden, gebruik je logische operatoren.

Logische operatoren

Logische operatoren werken in op booleaanse waarden (True of False) en geven een booleaanse waarde als resultaat. Ze worden gebruikt om complexe voorwaarden te creëren door booleaanse waarden of booleaanse expressies met elkaar te combineren. Logische operatoren worden gebruikt om samengestelde booleaanse expressies te programmeren.

In Python zijn er drie logische operatoren:

Veronderstel dat vw_1 en vw_2 twee booleaanse expressie zijn. De waarheidstabel voor de drie logische operatoren ziet er dan als volgt uit:

vw_1 vw_2 vw_1 and vw_2 vw_1 or vw_2 not vw_1
True True True True False
True False False True False
False True False True True
False False False False True

Selectie met logische operatoren

Je kan nu het voorbeeld met geneste selectie herschrijven door gebruik te maken van logische operatoren:

leeftijd = int(input("Geef je leeftijd: "))
aantal = int(input("Hoe groot is vriendengroep? "))
ticketprijs = 7.50

if leeftijd <= 12 and aantal >= 10:
    ticketprijs = 5.00
        
totale_prijs = ticketprijs * aantal
    
print(f"De toegangsprijs voor de groep van {aantal} vrienden bedraagt € {totale_prijs}.")

Voorbeelden van de andere logische operatoren vind je in de oefeningen.