Condities

Waar of niet waar?

In dit hoofdstuk zal je vaak moeten controleren of iets waar of niet waar is. Softwareontwikkelaars spreken dan van True of False.

Vaak vertrekken we dan vergelijkingen. We kunnen waarden vergelijken met de hulp van vergelijkingsoperatoren. Je zag al wiskundige operatoren zoals + en -. Maar er zijn nog andere operatoren.

getal1 > getal2 # waar als getal1 groter is dan getal2
getal1 < getal2 # waar als getal1 kleiner is dan getal2
getal1 >= getal2 # waar als getal1 groter of gelijk is aan getal2
getal1 <= getal2 # waar als getal1 kleiner of gelijk is aan getal2
getal1 == getal2 # waar als getal1 gelijk is aan getal twee

Je kan zelfs voorwaarden combineren:

getal1 > getal2 or getal1 > getal3 # het eerste OF het tweede deel moet waar zijn
getal1 > getal2 and getal1 > getal3 # het eerste EN het tweede deel moet waar zijn
getal1 < getal2 and getal1 >= getal2 # wat denk je zelf?

Wat zijn condities?

Een conditie in Python gebruik je om een bepaalde actie uit te voeren alleen als aan een bepaalde voorwaarde is voldaan. Dit doe je met de sleutelwoorden if, elif en else.

If

if gebruik je om een blok code alleen uit te voeren als een bepaalde conditie waar is. De syntax ziet er als volgt uit:

if conditie:
    # code die uitgevoerd wordt als de conditie waar is

Laten we dit illustreren met een voorbeeld:

leeftijd = 18

if leeftijd >= 18:
    print("Je bent een volwassene.")

In dit voorbeeld wordt de zin “Je bent een volwassene.” alleen afgedrukt als de waarde van leeftijd groter dan of gelijk aan 18 is.

Else

else gebruik je om een blok code uit te voeren als de if-conditie niet waar is. Dit ziet er als volgt uit:

if conditie:
    # code die uitgevoerd wordt als de conditie waar is
else:
    # code die uitgevoerd wordt als de conditie niet waar is

Een voorbeeld:

leeftijd = 16

if leeftijd >= 18:
    print("Je bent een volwassene.")
else:
    print("Je bent een minderjarige.")

Hier wordt de zin “Je bent een minderjarige.” afgedrukt omdat de waarde van leeftijd kleiner is dan 18.

Elif

elif (else if) gebruik je om meerdere condities te testen. Als de eerste if-conditie niet waar is, test de elif-verklaring een nieuwe conditie. Je kunt meerdere elif’s gebruiken om verschillende condities te testen.

De syntax ziet er als volgt uit:

if conditie1:
    # code die uitgevoerd wordt als conditie1 waar is
elif conditie2:
    # code die uitgevoerd wordt als conditie2 waar is
else:
    # code die uitgevoerd wordt als geen van de condities waar is

Een voorbeeld:

score = 75

if score >= 90:
    print("Uitstekend!")
elif score >= 75:
    print("Goed gedaan!")
elif score >= 50:
    print("Voldoende.")
else:
    print("Onvoldoende.")

In dit voorbeeld wordt “Goed gedaan!” afgedrukt omdat de waarde van score 75 is, wat de tweede conditie (score >= 75) waar maakt.

Belangrijk om te onthouden

  1. Indentatie: De codeblokken binnen if, elif en else moeten ingesprongen (geïndenteerd) zijn. Dit betekent dat je een tab of vier spaties gebruikt om aan te geven dat de code binnen de voorwaarde hoort.
  2. Voorwaarden: Voorwaarden binnen if moeten een waar of niet waar zijn. Dit kan bijvoorbeeld een vergelijking zijn (zoals >=, <=, ==), maar je zal later zeker andere mogelijkheden tegenkomen.

Wat niet kan is iets dat niet waar of niet waar is. Bijvoorbeeld:

value = 3
if value:
    # ???

Volg de les Conditionals op Brilliant.org

Maak de oefening Practice Conditionals op Brilliant.org

Input

Om je programma interactiever te maken, is het handig om invoer van de gebruiker te vragen. Hierdoor kan je programma reageren op verschillende invoerwaarden en dynamischer werken. In Python doe je dit met de input() functie.

Wat is de input() functie?

De input() functie wordt gebruikt om tekstinvoer van de gebruiker te krijgen. Wanneer je deze functie aanroept, pauzeert het programma en wacht het op de gebruiker om iets in te voeren. Zodra de gebruiker op Enter drukt, retourneert de functie de ingevoerde waarde als een string (tekst).

Basisgebruik van input()

Hier is de basisvorm van hoe je input() gebruikt:

variabele = input("Vraag aan de gebruiker: ")

De tekst binnen de aanhalingstekens (in dit geval “Vraag aan de gebruiker: “) wordt weergegeven als prompt aan de gebruiker. De ingevoerde waarde wordt opgeslagen in de variabele variabele.

Voorbeeld

Laten we een eenvoudig voorbeeld bekijken:

naam = input("Wat is je naam? ")
print("Hallo, " + naam + "!")

In dit voorbeeld vraagt het programma de gebruiker om zijn naam in te voeren. Daarna wordt de naam opgeslagen in de variabele naam en wordt een begroeting afgedrukt met de ingevoerde naam.

Omzetten van de invoer

De waarde die door input() wordt geretourneerd, is altijd een string. Soms wil je deze invoer omzetten naar een ander datatype, zoals een geheel getal (int) of een kommagetal (float). Dit doe je met behulp van typeconversie.

Voorbeeld: Invoer omzetten naar een geheel getal

leeftijd = int(input("Hoe oud ben je? "))
print("Je bent " + str(leeftijd) + " jaar oud.")

In dit voorbeeld wordt de invoer van de gebruiker eerst omgezet naar een geheel getal met int(). Vervolgens wordt de leeftijd afgedrukt. Merk op dat we str() gebruiken om de leeftijd terug om te zetten naar een string voor de concatenatie in de print-functie.

Voorbeeld: Invoer omzetten naar een kommagetal

lengte = float(input("Wat is je lengte in meters? "))
print("Je lengte is " + str(lengte) + " meter.")

Hier wordt de invoer van de gebruiker omgezet naar een kommagetal met float(). Dit is handig als je met decimale getallen wilt werken, zoals lengte of gewicht.

Oefeningen

Oefening 1: Leeftijd controleren

Schrijf een programma dat de gebruiker vraagt om hun leeftijd in te voeren en vervolgens afdrukt of de gebruiker een kind, tiener, volwassene of senior is.

  • Een kind is jonger dan 13 jaar.
  • Een tiener is tussen de 13 en 19 jaar.
  • Een volwassene is tussen de 20 en 64 jaar.
  • Een senior is 65 jaar of ouder.

Oefening 2: Getal controleren

Schrijf een programma dat een getal van de gebruiker vraagt en laat weten of het getal positief, negatief of nul is.

Oefening 3: Toetsresultaat

Schrijf een programma dat de gebruiker vraagt om hun toetsresultaat (een getal tussen 0 en 100) in te voeren en vervolgens een beoordeling geeft op basis van de score.

  • 90-100: Uitstekend
  • 75-89: Goed
  • 50-74: Voldoende
  • 0-49: Onvoldoende

Oefening 4: Even of oneven

Schrijf een programma dat een geheel getal van de gebruiker vraagt en bepaalt of het getal even of oneven is.

Oefening 5: Wachtwoord controleren

Schrijf een programma dat de gebruiker vraagt om een wachtwoord in te voeren en controleert of het wachtwoord correct is. Stel het juiste wachtwoord in op “Python123”.

Oefening 6: Temperatuur converteren

Schrijf een programma dat de gebruiker vraagt om een temperatuur in graden Celsius in te voeren en vervolgens een bericht afdrukt dat aangeeft of het water bij die temperatuur bevriest, smelt of kookt.

  • Water bevriest bij 0 graden Celsius of lager.
  • Water smelt tussen 0 en 100 graden Celsius.
  • Water kookt bij 100 graden Celsius of hoger.

Loops met voorwaarden

Loops

Je werkt al met for-loops. Dat zijn loops die een range aflopen. Bijvoorbeeld alle getallen van 1 tot 10, of alle elementen in een lijst. Eerst een korte herhaling van loops.

Maar er zijn ook while loops. Die kijken niet naar een range, maar gaan door zolang een voorwaarde waar is.

  • For-loop: Deze loop herhaalt een blok code voor elk item in een lijst of een ander iterabel object.

    for item in lijst:
        # code om uit te voeren voor elk item
    
  • While-loop: Deze loop blijft een blok code herhalen zolang een bepaalde conditie waar is.

    while conditie:
        # code om uit te voeren zolang de conditie waar is
    

Combineren van Loops en Voorwaarden

Je kunt voorwaarden gebruiken binnen loops om beslissingen te nemen tijdens elke iteratie. Laten we enkele voorbeelden bekijken.

Voorbeeld 1: For-loop met If-verklaring

Hier is een voorbeeld van een for-loop die door een lijst van getallen loopt en controleert of elk getal even of oneven is:

getallen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for getal in getallen:
    if getal % 2 == 0:
        print(str(getal) + " is even.")
    else:
        print(str(getal) + " is oneven.")

In dit voorbeeld loopt de for-loop door elke getal in de lijst getallen. De if-verklaring controleert of het getal even is (door te kijken naar de rest bij deling door 2). Als het getal even is, wordt “is even” afgedrukt; anders wordt “is oneven” afgedrukt.

Voorbeeld 2: While-loop met If-verklaring

Hier is een voorbeeld van een while-loop die blijft vragen om invoer totdat de gebruiker “stop” invoert:

invoer = ""

while invoer != "stop":
    invoer = input("Voer iets in (of type 'stop' om te stoppen): ")
    if invoer == "stop":
        print("Programma gestopt.")
    else:
        print("Je hebt ingevoerd: " + invoer)

In dit voorbeeld blijft de while-loop draaien zolang de invoer van de gebruiker niet gelijk is aan “stop”. Binnen de loop wordt gecontroleerd of de invoer gelijk is aan “stop”. Als dat zo is, wordt “Programma gestopt.” afgedrukt; anders wordt de ingevoerde tekst afgedrukt.

Break-instructie

De break-instructie wordt gebruikt om een loop voortijdig te beëindigen. Dit kan handig zijn als je een bepaalde conditie bereikt en niet verder door de loop wilt itereren.

Voorbeeld 3: Break-instructie in een For-loop

Hier is een voorbeeld van een for-loop die stopt met itereren zodra het getal 5 wordt gevonden:

getallen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for getal in getallen:
    if getal == 5:
        print("Getal 5 gevonden, stoppen met itereren.")
        break
    print(getal)

In dit voorbeeld stopt de loop met itereren zodra getal gelijk is aan 5, door de break-instructie. Tot dat moment worden de getallen afgedrukt.

Voorbeeld 4: Break-instructie in een While-loop

Hier is een voorbeeld van een while-loop die blijft vragen om invoer totdat de gebruiker “stop” invoert, waarbij de loop ook stopt als de gebruiker “exit” invoert:

while True:
    invoer = input("Voer iets in (type 'stop' of 'exit' om te stoppen): ")
    if invoer == "stop" or invoer == "exit":
        print("Programma gestopt.")
        break
    print("Je hebt ingevoerd: " + invoer)

In dit voorbeeld blijft de while-loop oneindig draaien door while True, maar wordt de loop beëindigd zodra de gebruiker “stop” of “exit” invoert, door de break-instructie.

Oefeningen

Start de les Conditions in Loops op Brilliant.org

Start de oefening Practice Conditions in Loops op Brilliant.org

Start de uitdaging Collatz Challenge op Brilliant.org

Oefening 1: Boodschappenlijst controleren

Je hebt een lijst met boodschappen en wilt controleren of er nog items ontbreken die je nodig hebt voor een recept. Je kan met deze code starten:

boodschappenlijst = ["melk", "eieren", "brood", "boter"]
benodigd = ["melk", "eieren", "suiker", "meel"]

# Schrijf hier je code

Oefening 2: Gemiddelde temperatuur berekenen

Je hebt een lijst met dagelijkse temperaturen en wilt de gemiddelde temperatuur berekenen, maar alleen als de temperatuur boven nul is.

temperaturen = [10, -2, 8, 15, -5, 7]

Oefening 3: Vragen om invoer tot een bepaald getal

Schrijf een programma dat de gebruiker vraagt om een getal in te voeren. Het programma blijft vragen om invoer totdat de gebruiker een getal invoert dat groter is dan 100. Daarna toon je het gemiddelde van alle ingevoerde getallen, behalve het laatste getal.

Oefening 4: Vind het eerste negatieve getal in een Numpy-array

Gebruik Numpy om een reeks van 20 random getallen te genereren, tussen -10 en 10. Zoek het eerste negatieve getal in de reeks en druk de positie en waarde van dat getal af.

Hiervoor kan je een variatie op de for loop gebruiken:

for i, getal in enumerate(reeks):
    # doe iets met i en met het getal

Door het gebruik van de functie enumerate krijg je niet alleen toegang tot elk afzonderlijk element in de reeks, maar ook tot een tellerje i. In de for loop bevat i de positie in de reeks. Of met andere woorden: via i weten we hoe vaak de for loop al uitgevoerd is.

<div class="note protip">
<p>Let wel op: we starten met tellen bij 0, niet bij 1. De eerste herhaling is dus 0.</p>
</div>

Oefening 5: Controleer op aanwezigheid van een specifiek item

Je hebt een lijst met namen van deelnemers aan een evenement en wilt controleren of een specifieke persoon aanwezig is. Als je de naam vindt, moet je de loop stoppen.

deelnemers = ["Anna", "Bram", "Carla", "David", "Eva"]
gezochte_naam = "Carla"

# Jou code hier!

Oefening 6: Som van positieve getallen in een Numpy-array

Gebruik Numpy om een reeks getallen te genereren. Bereken de som van alle positieve getallen in de reeks.

Turtle is back!

Een kort opfrissing van de mogelijkheden:

import turtle as t # importeer de turtle library
t.speed(2) # stel de snelheid in
t.forward(100) # ga 100 punten vooruit
t.right(90) # draai 90 graden naar rechts
t.penup() # hef de pen op
t.pendown() # zet de pen terug neer
t.color(kleur) # stel de kleur van de pen in
t.circle(50) # teken een cirkel met een straal van 50 punten

t.exitonclick() # stop het programma wanneer je op het scherm klikt

Oefening 1: Vierkanten tekenen

Schrijf een programma dat een reeks vierkanten tekent, waarbij de grootte van elk vierkant afneemt met elke iteratie. Gebruik een for-loop en een if-voorwaarde om te controleren of de grootte positief blijft.

Start met een vierkant met een zijde van 100 punten. Elk vierkant is 10 punten kleiner dan het vorige. De linkerbovenhoek is staat bij elk vierkant op dezelfde positie.

Oefening 2: Willekeurige kleuren voor cirkels

Schrijf een programma dat cirkels tekent met willekeurige kleuren. Gebruik een while-loop om een reeks cirkels te tekenen, en een if-voorwaarde om te controleren wanneer je genoeg cirkels hebt getekend.

Bij deze oefening heb je ook numpy nodig.

kleuren = ["red", "green", "blue", "yellow", "purple", "orange"]

# zo kies je een random kleur via numpy, maar dit is niet de juiste plaats voor deze code
kleur = np.random.choice(kleuren)

Oefening 3: Spiraal tekenen

Schrijf een programma dat een spiraal tekent. Gebruik een for-loop om de lengte van elke stap in de spiraal te vergroten en een if-voorwaarde om te stoppen als de lengte te groot wordt. Een mogelijk resultaat:

image

Oefening 4: Patronen tekenen op basis van gebruikersinvoer

Schrijf een programma dat een patroon tekent op basis van de invoer van de gebruiker. Vraag de gebruiker om het aantal zijden van een vorm (bijv. driehoek, vierkant) en teken deze vormen met turtle graphics.

Tip: wat is de verhouding tussen 360, het aantal zijden en de grootte van elke hoek?


Previous section:
Next section:
Navigatie