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&orkunnen meerdere condities worden opgegeven bij een if-statement - Met
andmoeten beide condities (zowel links als rechts van het woordand) een True opleveren - Met
orhoeft maar 1 van de 2 condities een True op te leveren - Python voert
and-vergelijkingen altijd eerder uit danor-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
AI in de praktijk - Leads beoordelen
- In dit hoofdstuk heb je geleerd hoe je beslissingen neemt met
if,elifenelse - 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
- Welke variabele bevat het budget?
- Welke variabele bevat de interesse van de klant?
- Welke lijst bevat de beschikbare diensten?
- Welke lijst bevat de bestaande klanten?
- Welke regel controleert of de interesse beschikbaar is?
- Welke regel controleert of de klant al bestaat?
- Welke regel gebruikt
andofor? - Welke regel bepaalt of de lead hoge prioriteit krijgt?
- Gebruikt de AI technieken die in dit hoofdstuk behandeld zijn?
- 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
spoedverandert naarFalse