In het onderstaande schema wordt een complexere vorm van selectie getoond. Er zijn nu drie mogelijk paden die het programma kan bewandelen.

Meervoudige selectie

Van zodra een conditie of booleaanse expressie evalueert naar True, worden de bijhorende statements uitgevoerd. Hieronder vind je de vertaling van dit schema naar pseudocode.

if booleaanse expressie:
    python statement
    python statement
elif booleaanse expressie:
    python statement
    python statement
else:
    python statement
    python statement

python statement

Meervoudige selectie

Bij meervoudige selectie worden statements uitgevoerd afhankelijk van welke van de vele mogelijke voorwaarden waar is. Enkel de code onder de eerste voorwaarde die naar True evalueert, wordt dan uitgevoerd. Het is een uitbreiding van de tweevoudige selectie en maakt het mogelijk om complexere beslissingen te nemen in een programma.

Dit betekent dat in een meervoudige selectie meerdere keren het sleutelwoord elif kan voorkomen. Een else-blok is dan weer niet verplicht.

Een voorbeeld

In de herfstvakantie betalen groepen vrienden van hoogstens 12 jaar of minstens 65 jaar € 5,00. Voor andere leeftijdscategorieën geldt een verminderde prijs van € 6,25 indien ze met meer dan 10 vrienden zijn. In alle andere gevallen betaal je € 7,50.

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

if leeftijd <= 12 or leeftijd >= 65:
    ticketprijs = 5.00
elif aantal > 10:
    ticketprijs = 6.25
else:
    ticketprijs = 7.50

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

Welk statement wordt uitgevoerd wanneer een 14 vrienden van 68 jaar oud tickets willen kopen? Je overloopt alle (samengestelde) booleaanse expressies. De statements onder de eerste expressie die naar True evalueert, worden uitgevoerd. Omdat de leeftijd van de vrienden minstens 65 jaar is, krijg je een ticketprijs van € 5,00.

Ook de booleaanse expressie aantal > 10 na het sleutelwoord elif evalueert naar True maar wordt in dit geval niet uitgevoerd. Erboven werd al een booleaanse expressie gevonden die naar True evalueert. Er wordt dus steeds slechts één code-blok uitgevoerd!

Ten slotte nog opmerken dat je het else-blok kan vermijden. Weet je nog hoe?