Hoofdstuk 5 - IF-Statements

01 - Het IF-Statement
  • Met een IF-instructie kun je de actuele status van het programma bekijken en daarop reageren
  • De kern van elke IF-instructie is een conditie waaraan wordt voldaan of niet (True / False)
dinner = ['biefstuk', 'roomboter', 'zout', 'pepper']
for item in dinner:
    if item == 'biefstuk':
        print(item.upper())
    else:
        print(item.title())
BIEFSTUK
Roomboter
Zout
Pepper
  • == gebruik je om twee dingen te vergelijken
  • De enkele = maakt een toewijzing
# Kijkt of de variabele 'item' de waarde 'biefstuk' heeft. (True / False) 
item == 'biefstuk'

# Stelt de variabele 'item' in op de enkele string 'biefstuk'
item = 'biefstuk'
  • Net als bij een for-loop eindigt de regel met een dubbele punt
  • Een vergelijking met == is hoofdlettergevoelig
Als hoofdlettergevoeligheid uitmaakt
  • De .title( )-functie maakt tijdelijk de eerste letter, per woord, een hoofdletter
  • Maar de variabele blijft ongewijzigd zoals je kunt zien in het resultaat
dinner = ['biefstuk', 'roomboter', 'zout', 'pepper']
for item in dinner:
    if item.title() == 'Roomboter':
        print("tip:", item, "is geen optie, maar de standaard")    
tip: roomboter is geen optie, maar de standaard

Bij het gebruik van komma’s in print() voegt Python automatisch spaties toe. Bij string-concatenatie (+) niet



02 - Controleren op ongelijkheid
  • Als == staat voor IS GELIJK AAN, dan staat != voor IS ONGELIJK AAN
pizza_ingredients = "tomatensaus"
if pizza_ingredients != "witte chocola":
    print("Deze lus ik niet...")
Deze lus ik niet...
  • Het kan natuurlijk ook met integers
age = 16
if age != 18:
    print("Sorry, je moet precies 18 zijn")
Sorry, je moet precies 18 zijn

Nog een operator
age = 16
if age <= 17:
    print("Bestelling geweigerd")
else:
    print("Uw bestelling wordt verwerkt")
Bestelling geweigerd
03 - Meerdere voorwaarden controleren ( and / or )
  • Met de keywords and & or kunnen meerdere condities worden opgegeven bij een if-statement
  • Met and moeten beide condities (zowel links als rechts van het woord and) een True opleveren
  • Met or hoeft maar 1 van de 2 condities een True op te leveren
  • Python voert and-vergelijkingen altijd eerder uit dan or-vergelijkingen
age = 60
if age >= 18 and age <= 64:
    print("Uw bestelling wordt verwerkt")
else:
    print("Uw bestelling kan helaas niet worden verwerkt")
Uw bestelling wordt verwerkt

intolerance = True
allergy = False

if intolerance == True or allergy == True:
    print("Misschien is een chocolade pudding beter voor u.")
Misschien is een chocolade pudding beter voor u.

  • Soms kan het handig zijn om haakjes om je condities heen te zetten
  • Wat binnen haakjes staat wordt eerst opgelost
meal = "kaas"
money = 0

if meal == "kaas" or meal == "eieren" and money >= 2:
    print("Uw maaltijd wordt bezorgd. (De boter is gratis.)")
else:
    print("Sorry de maaltijd kan niet worden bezorgd")
Uw maaltijd wordt bezorgd. (De boter is gratis.)

Het resultaat is misschien onverwacht.
De logische and operator wordt eerst geëvalueerd en daarna pas de or.
De condities links en rechts van de and worden eerst afgehandeld en daaruit zal één antwoord komen (True / False).
Om dat ene antwoord te verkrijgen moeten in het geval van de and beide condities waar zijn.
Er staat eigenlijk:

meal == "kaas" or (meal == "eieren" and money >= 2)

De oplossing voor het gewenste resultaat kan verkregen worden door ( ) haakjes op de juiste plek te zetten


meal = "kaas"
money = 0

if (meal == "kaas" or meal == "eieren") and money >= 2:
    print("Uw maaltijd wordt bezorgd. (De boter is gratis.)")
else:
    print("Sorry de maaltijd kan niet worden bezorgd")
Sorry de maaltijd kan niet worden bezorgd
04 - Een lijst controleren op een waarde ( IN / NOT IN )
  • Een booleaanse waarde is een andere naam voor een True/False-test
  • Een boolean is ofwel True of False
requested_toppings = ['uien', 'salami', 'olijven']
print('uien' in requested_toppings)
True

available_toppings = ['witte chocola', 'rood bosfruit']
requested_extra_toppings = ['ananas']

if requested_extra_toppings[0] not in available_toppings:
    print('Helaas, de pizza is net uitverkocht')
else:
    print('Een prima keuze')
Helaas, de pizza is net uitverkocht

05 - De if-elif-else keten
  • Een eenvoudig if-statement heeft één test (conditie) en één actie
  • Door een 'else' toe te voegen kan een actie worden uitgevoerd wanneer de test niet slaagt
  • De if-else structuur werkt goed in situaties waarin je wilt dat Python altijd één van de twee mogelijke acties uitvoert
  • Wil je meer dan twee verschillende dingen testen en daarbij verschillende acties uitvoeren dan kan een if-elif-else uitkomst bieden
weight = 600

if weight < 400:
    price = 7
elif weight < 800:
    price = 13
else:
    price = 18

print('Uw ribeye kost € ' + str(price) + ',-' )
Uw ribeye kost € 13,-
  • In de if-elif-else keten (zie hierboven) wordt maar één blok code uitgevoerd
  • In een reeks eenvoudige if-statements kunnen meerdere blokken code worden uitgevoerd
available_toppings = ['salami', 'olijven', 'ansjovis', 'jalapeno']
requested_extra_toppings = ['salami', 'uien', 'olijven']

if requested_extra_toppings[0] in available_toppings:
    print(requested_extra_toppings[0], 'toegevoegd')

if requested_extra_toppings[1] in available_toppings:
    print(requested_extra_toppings[1], 'toegevoegd')

if requested_extra_toppings[2] in available_toppings:
    print(requested_extra_toppings[2], 'toegevoegd')
salami toegevoegd
olijven toegevoegd

Een For-loop met een if-statement
  • Als je merkt dat je met herhaling bezig bent, probeer een loop
available_toppings = ['salami', 'olijven', 'ansjovis', 'jalapeno']
requested_extra_toppings = ['salami', 'uien', 'olijven']

for extra_topping in requested_extra_toppings:
    if extra_topping in available_toppings:
        print(extra_topping + " toegevoegd")
salami toegevoegd
olijven toegevoegd

Controleer ook of een lijst leeg is
available_toppings = ['salami', 'olijven', 'ansjovis', 'jalapeno']
requested_extra_toppings = []

if requested_extra_toppings:
    for extra_topping in requested_extra_toppings:
        if extra_topping in available_toppings:
            print(extra_topping + " toegevoegd")
        else:
            print(extra_topping + " niet beschikbaar")
else:
    print("Weet je zeker dat je geen extra toppings wilt?")
Weet je zeker dat je geen extra toppings wilt?

# Deze notatie is niet nodig om te controleren of een lijst leeg is
if len(requested_extra_toppings) == 0:
# Python heeft een andere regel daarvoor
if requested_extra_toppings:

Een lege lijst wordt gezien als False. Een gevulde lijst wordt gezien als True.


Oefening
Quiz

Vraag 1. Wat doet de dubbele is-teken == in dit stukje code?

item = 'biefstuk'

if item == 'biefstuk':
    print("LEKKER!")



Klopt. == is de vergelijking: is links gelijk aan rechts? (True of False).
Nee. === gebruik je om een variabele een waarde te geven.

Vraag 2. Wat print deze code?

item = 'roomboter'

if item == 'Roomboter':
    print("match 1")
elif item.title() == 'Roomboter':
    print("match 2")
else:
    print("geen match")



Goed gezien. item is 'roomboter', dus alleen via item.title() krijg je 'Roomboter'.
Let op. Vergelijkingen met == zijn hoofdlettergevoelig. 'roomboter' is niet gelijk aan 'Roomboter'.

Vraag 3. Wat doet de operator != in dit voorbeeld?

age = 16

if age != 18:
    print("Sorry, je moet precies 18 zijn")



Juist. != betekent “is ongelijk aan”.
Nee. != is geen groter-/kleiner-dan, maar betekent letterlijk “is niet gelijk aan”.

Vraag 4. Wanneer wordt de volgende boodschap geprint?

age = 60

if age >= 18 and age <= 64:
    print("Uw bestelling wordt verwerkt")



Klopt. Door and moeten beide voorwaarden waar zijn: groter of gelijk aan 18 én kleiner of gelijk aan 64.
Niet helemaal. Met and moeten beide delen van de voorwaarde True zijn.

Vraag 5. Wat wordt er geprint?

meal = "kaas"
money = 0

if meal == "kaas" or meal == "eieren" and money >= 2:
    print("Uw maaltijd wordt bezorgd.")
else:
    print("Sorry, de maaltijd kan niet worden bezorgd.")



Juist. and wordt eerst geëvalueerd, daarna pas or. De linkerzijde meal == "kaas" is al True.
Let op. In Python heeft and een hogere prioriteit dan or. De voorwaarde werkt dus als meal == "kaas" or (meal == "eieren" and money >= 2).

Vraag 6. Wat verandert deze versie van de code?

meal = "kaas"
money = 0

if (meal == "kaas" or meal == "eieren") and money >= 2:
    print("Uw maaltijd wordt bezorgd.")
else:
    print("Sorry, de maaltijd kan niet worden bezorgd.")



Precies. Met haakjes bepaal je expliciet welke condities eerst samen worden geëvalueerd.
Nee. Haakjes zijn wel degelijk belangrijk: ze bepalen de volgorde waarin and en or worden uitgevoerd.

Vraag 7. Wat print deze code?

requested_toppings = ['uien', 'salami', 'olijven']

if 'uien' in requested_toppings:
    print("uien toegevoegd")



Klopt. De string 'uien' staat in de lijst, dus de voorwaarde is True en de tekst wordt geprint.
Let op. Met in kun je prima testen of een waarde in een lijst voorkomt.

Vraag 8. Welke prijs wordt gekozen in deze if-elif-else keten?

weight = 600

if weight < 400:
    price = 7
elif weight < 800:
    price = 13
else:
    price = 18



Juist. 600 is niet kleiner dan 400, maar wel kleiner dan 800, dus de elif-tak wordt uitgevoerd.
Niet goed. In een if-elif-else keten wordt de eerste voorwaarde die True is uitgevoerd, de rest wordt overgeslagen.

Vraag 9. Wat wordt er geprint?

available_toppings = ['salami', 'olijven']
requested_extra_toppings = []

if requested_extra_toppings:
    print("We voegen extra toppings toe")
else:
    print("Weet je zeker dat je geen extra toppings wilt?")



Helemaal goed. Een lege lijst wordt gezien als False, dus de else-tak wordt uitgevoerd.
Nee. In een if wordt een lege lijst als False behandeld; daarom kom je in de else.

Vraag 10. Welke van de onderstaande uitspraken over booleans en if-statements zijn waar?




Goed gedaan. Booleans zijn altijd True of False en een lege lijst telt als False in een if-test.
Niet helemaal. In dit hoofdstuk heb je gezien dat booleans alleen True of False zijn en dat een lege lijst als False wordt beschouwd.


AI in de praktijk - Leads beoordelen
  • In dit hoofdstuk heb je geleerd hoe je beslissingen neemt met if, elif en else
  • In de praktijk worden if-statements vaak gebruikt om klanten, leads, bestellingen, bestanden of meldingen automatisch te beoordelen
  • In deze opdracht gebruiken we eenvoudige verkoopgegevens om te bepalen welke lead prioriteit krijgt
  • Voorbeeld van een lead:
naam: Jansen
budget: 12000
interesse: website
spoed: True
  • Gebruik onderstaande prompt in een AI-tool
Je bent een Python-assistent voor beginners.

Maak een eerste versie van een Python-script dat een saleslead beoordeelt.

Gebruik variabelen voor:
- klantnaam
- budget
- interesse
- spoed
- bestaande_klanten

Het script moet:
- controleren of het budget hoog genoeg is
- controleren of de interesse voorkomt in een lijst met beschikbare diensten
- controleren of de klant al voorkomt in een lijst met bestaande klanten
- met if, elif en else een prioriteit printen
- een duidelijke tekst printen voor de salesmedewerker

Gebruik deze regels:
- budget van 10000 of hoger is hoge prioriteit
- spoed is ook hoge prioriteit
- bestaande klanten krijgen minimaal normale prioriteit
- als de interesse niet beschikbaar is, print dan dat de lead niet passend is
- anders krijgt de lead lage prioriteit

Gebruik uitsluitend:
- variabelen
- strings
- integers
- booleans
- lists
- if
- elif
- else
- and
- or
- in
- not in
- print()

Gebruik geen:
- input()
- loops
- dictionaries
- functies
- classes
- externe modules

Geef alleen de Python-code terug.
  • Kopieer de prompt naar ChatGPT, Claude, Gemini of een andere AI-tool
  • Kopieer de gegenereerde code naar de editor
  • Voer de code uit
  • Controleer of de prioriteit logisch wordt bepaald
  • Verander daarna zelf:
    • het budget
    • de waarde van spoed
    • de interesse van de klant
    • de klantnaam
Reflectievragen
  1. Welke variabele bevat het budget?
  2. Welke variabele bevat de interesse van de klant?
  3. Welke lijst bevat de beschikbare diensten?
  4. Welke lijst bevat de bestaande klanten?
  5. Welke regel controleert of de interesse beschikbaar is?
  6. Welke regel controleert of de klant al bestaat?
  7. Welke regel gebruikt and of or?
  8. Welke regel bepaalt of de lead hoge prioriteit krijgt?
  9. Gebruikt de AI technieken die in dit hoofdstuk behandeld zijn?
  10. Begrijp je elke regel van de code?
Extra uitdaging
  • In de praktijk wil je vaak meerdere redenen tonen waarom een lead prioriteit krijgt
  • Vraag aan AI om de code aan te passen zodat er ook een korte reden wordt geprint
Pas de code aan zodat naast de prioriteit ook een korte reden wordt geprint.

Voorbeelden:

Hoge prioriteit
Reden: hoog budget

Hoge prioriteit
Reden: spoedaanvraag

Niet passend
Reden: gevraagde dienst is niet beschikbaar

Gebruik een eenvoudige Python-oplossing.
Gebruik geen input(), loops, functies, classes, dictionaries of externe modules.
  • Begrijp je welke voorwaarden bepalen welke reden wordt geprint?
  • Controleer of de code nog steeds werkt als je het budget verlaagt
  • Controleer of de code nog steeds werkt als je spoed verandert naar False