Les 3: Vergelijkingen

If (wat als?)

Een van de handigste eigenschappen van een computer is dat deze in staat is om logische stappen te maken. Je kan een programma heel makkelijk sturen door een “als / dan” situatie te creëren. Bijvoorbeeld:

Als ik mijn schoen in mijn handen heb dan: Trek ik hem aan.

Als ik het koud heb dan: Pak ik mijn jas.

Dit soort situaties zijn heel handig, omdat je dan direct invloed hebt op oorzaak / gevolg. Bij de voorgaande voorbeelden was de oorzaak (wat moet er aan de hand zijn) steeds dik gedrukt, en het gevolg cursief (wat ga je dan doen?). Als de dik gedrukte situatie gebeurt, wordt de cursieve opdracht uitgevoerd. Bij programmeren doen we dit met een if-statement. Het if-statement wordt als volgt gebruikt:

x = 3
if x == 3: # '==' betekent precies gelijk aan
	print("x is gelijk aan 3")

In het voorgaande voorbeeld zien we dat x de waarde 3 toegewezen krijgt Na de vergelijking if x == 3: wordt de printopdracht uitgevoerd. Het dubbele is-teken (==) betekent hier ‘is hetzelfde als’. Als x dus niet 3 is, was de printfunctie na de if nooit uitgevoerd.

x = 4
if x == 3:
	print ("x is gelijk aan 3")

Nu zie je dus dat er niks geprint wordt.

Op deze manier hebben we er niet zoveel aan: we weten precies wat er gaat gebeuren. Maar als we dit combineren met de input()-functie kun je leuke dingen doen!

keuze = input("Wat wil je eten?")
if keuze == "tosti":
  print("O lekker! Tosti vind ik ook lekker!")

if  keuze == "soep":
  print("Ik heb geen zin in soep :(")

Opgave 1

Vraag de gebruiker om een stadsnaam. Als de gebruiker dan bijvoorbeeld "Amsterdam" invoert print je een boodschap zoals "Wat leuk! Dat is mijn favoriete stad!"

Opgave 2

Lees een getal in. Als het getal gelijk is aan 4 print je uit: "Je hebt precies 4 geraden!" Als het getal gelijk is aan 6 print je uit: "Zes is een perfect getal!" In alle andere gevallen doe je niets.

IF ELSE (als dan en anders?)

Je kunt nu met IF iets doen als de gebruiker bijvoorbeeld "soep" in voert. Maar wat nou als je iets wilt doen als de gebruiker NIET invoert wat je wilt? Dit kan je opvangen dat een else: statement te gebruiken. Hierbij zeg je “als keuze gelijk is aan "soep", voer de komende opdracht uit. En anders (keuze is niet gelijk aan "soep"), doe het volgende (iets anders)”. Dit werkt als volgt:

keuze = input("Wat wil je eten?")

if  keuze == "soep":
  print("Soep is inderdaad lekker!")
else: # Wat de keuze is maakt niet uit (het is geen soep)
  print("Weet je zeker dat je geen soep wilt?")

Op deze manier kan je dus alle situaties opvangen die je niet in je if gedeelte beschreven hebt. Het werkt natuurlijk ook met getallen:

getal = int(input("Geef een getal kleiner dan 10: "))

if getal < 10:
  print("Goed zo! Het getal " + str(getal) + " is kleiner dan 10.")
else:
  print("Helaas, " + str(getal) + " is niet kleiner dan 10!")

Opgave 3:

Schrijf een programma dat de gebruiker vraagt hoe warm het is. Als het 20 graden of warmer is, schrijf dan naar het scherm 'Dat is lekker warm!''. Als het kouder is, schrijf dan 'Dat is koud...'.

HINT: met behulp van >= controleer je of het groter dan of gelijk is.

Opgave 4:

Schrijf een programma dat de gebruiker vraagt hoe oud hij is. Als hij 18 of ouder is, dan zegt het programma: Gefeliciteerd, je bent volwassen! Anders zegt het programma: Helaas, nog niet volwassen.

Het programma wordt altijd afgesloten met de melding: “Bedankt voor je deelname!”.

If in een andere if (geneste if)

Je kunt ook een if-statement in een ander if-statement gebruiken. We geven hier een korte uitleg. In de volgende lesbrieven gaan we hier uitgebreider op in.

maaltijd = input("Wat wil je eten?")

if maaltijd == "soep":
  aantal = int(input("Hoeveel kopjes wil je?"))
  
  if aantal > 2: # inspringen is belangrijk!
    print("Je hebt zeker honger!")
  else:
    print("Alsjeblieft!")
else:
  print("Lekker toch die " + maaltijd + ".")

Je ziet dat we eerste vragen wat iemand wil eten. En alleen als het "soep" is vragen we hoeveel kopjes. Als het iets anders is vragen we niets anders meer.

Opgave 5:

Laat de gebruiker een getal raden onder de 10.

Als de gebruiker precies 9 raadt, heeft hij gewonnen en mag hij een prijs kiezen. V raag: "Je hebt gewonnen! Wil je een koekje?" Als de gebruiker "ja" zegt, zeg je: "Alsjeblieft!". Anders zeg je: "Ok, dan geen koekje."

Als de gebruiker NIET 9 heeft print je uit: "Jammer, niet gewonnen."

Opgave 6:

In een spel is er een geheim ingebouwd. Er zijn twee manieren om het te vinden. Als je eerst '+' invoert en daarna 'a' kom je bij het geheim. Je voert steeds een Enter in na ieder karakter.

Print eerst: Probeer de geheime code te raden: Zorg daarna dat je met de geheime code bij het geheim kan komen. Als je het geheim gevonden hebt print je: Je hebt het gevonden! Anders print je: Helaas dat klopt niet!

Print aan het einde van het programma een afscheidsboodschap: Doei!

Naast de > en < heb je nog meer vergelijkingsoperatoren. Hieronder een tabel van alle vergelijkingsoperatoren en de bijbehorende betekenis:

Vergelijking

Betekenis

not x == y

x is niet gelijk aan y

x > y

x is groter dan y

x < y

x is kleiner dan y

x >= y

x is groter dan of gelijk aan y

x <= y

x is kleiner dan of gelijk aan y

x == y

x is gelijk aan y

Opgave 7

Met 5-letter LINGO is het de bedoeling dat een gebruiker een woord invoert dat precies 5 karakters bevat. Zo niet, dan moet het programma aangeven dat het ingegeven woord incorrect is. Maak een programma (functie) die de gebruiker om een woord vraagt, vervolgens berekent hoeveel letters erin zitten. Als er meer of minder dan 5 letters inzitten, dan geeft hij een foutmelding. Zo niet, dan zegt het programma: “Goed zo, je hebt een 5 letter woord ingevoerd. (TIP: gebruik de functie len(), als je dan bijvoorbeeld woord_len = len(“broek”) komt er 5 in woord_len te staan)

Uitdaging: zorg dat je programma alleen letters accepteert (en niet bijvoorbeeld ‘+’ of ‘:’.

Last updated