In les 1 hebben we de eerste stappen gezet. We hebben voor het eerst Python geprogrammeerd in de Google Colab omgeving. We hebben gekeken naar twee verschillende types gegevens: getallen en tekst. Daarna hebben we ook getallen en tekst opgeslagen in variabelen.

We gaan nu verder met enkele belangrijke concepten van het programmeren: nummers en tekst met elkaar vergelijken, en daarna op basis van vergelijkingen stukjes code conditioneel uitvoeren. Dit is erg belangrijk, want vaak wil je in een computer programma beslissen of het één of het ander moet worden gedaan.

Een voorbeeld: je wilt een spelletje programmeren waarbij de speler met de meeste punten wint. Je wilt de computer laten beslissen wie de winnaar is van het spel. Je zult dan de scores van verschillende spelers met elkaar moeten vergelijken. De winnaar is de speler met de meeste punten. Hoe geef je de computer deze instructies? Laten we kijken hoe dit werkt.

Getallen vergelijken

Getallen heten in Python numbers. We kunnen numbers met elkaar vergelijken met behulp van verschillende tekens (operators):

<

>

==

!=

<=

>=

is kleiner dan

is groter dan

is gelijk aan

is niet gelijk aan

is kleiner dan of gelijk aan

is groter dan of gelijk aan

We gaan straks een paar voorbeelden bekijken. Maar de manier waarop je getallen gaat vergelijken, is dus met 1 getal aan de linkerkant en het andere getal aan de rechterkant van het teken. En wat krijg je als output? True of False. True betekent natuurlijk dat het waar is, en False dat het niet waar is.

a = 3
b = 4

print(a == b)

print(a != b)

print(a < b)

print(a > b)

print(a >= b)

print(a <= b)

Laten we door dit voorbeeld heen lopen. Allereerst bewaren we de getallen 3 en 4 in variabelen. Zo hoeven we deze niet steeds in te voeren, en kunnen we ook niet per ongeluk de getallen verkeerd intypen. Maar lees dus telkens op de plek van a het getal 3 en op de plek van b het getal 4.

We kijken eerst of a gelijk is aan b. Dit is niet zo, want 3 is niet gelijk aan 4. Dus Python print nu False (niet waar).

Dan checken we of a NIET gelijk is aan b. Dit is zo, want 3 is niet gelijk aan 4. Dus is het True (waar).

Zo kun je het lijstje nalopen en steeds checken wat het antwoord moet zijn. Het is een interessante oefening om de leerlingen deze code eerst te laten schrijven, en daarna zelf de output te laten verzinnen. Kijk of ze het concept van vergelijkingen snappen. Hebben ze het goed, dan kunnen ze door naar moeilijkere vergelijkingen.

Twee of meer vergelijkingen

Je kunt vergelijken en daarna nog een keer vergelijken. En nog een keer en nog een keer. Je kunt allerlei vergelijkingen aan elkaar knopen. Zo kun je meerdere condities checken. Denk bijvoorbeeld aan het automatisch maken van een selectie leerlingen. Ze mogen niet ouder zijn dan 16 jaar en ze moeten minimaal een 7 staan voor geschiedenis. Hoe kun je de computer programmeren zodat je deze groep er automatisch uit kunt halen? Juist, meerdere vergelijkingen doen!

Je kunt vergelijkingen op twee manieren “koppelen”. Je gebruikt in Python hiervoor de woorden and en or.

Als je vergelijkingen koppelt met and, dan moeten allebei de vergelijkingen waar zijn. Maar als je ze koppelt met or, dan is het al genoeg dat 1 van de 2 vergelijkingen waar is. Ook nu geeft Python steeds de output True of False, waar of niet waar.

a = 3

b = 4

c = 5

print(a < b and c < b)

print(b > c and c < a)

print(a < b or c < b)

print(b > c or a > c)

We definiëren nu eerst drie variabelen: a, b en c. Hierin slaan we drie getallen op, namelijk 3, 4 en 5. Dit doen we weer zodat we steeds gemakkelijk deze getallen kunnen hergebruiken.

Laten we naar de eerste dubbele vergelijking kijken: a < b and c < b. We gebruiken hier het woord and. Beide vergelijkingen moeten dus True (waar) zijn. We checken eerst de linker helft: a < b, ofwel 3 is kleiner dan 4. Dit is True (waar). De rechter helft is c < b ofwel 5 is kleiner dan 4. Dit is False (niet waar). Omdat niet aan allebei de condities wordt voldaan, levert dit de output False (niet waar) op.

De tweede dubbele vergelijking (b > c and c < a) levert op:

  • b > c = False
  • c < a = True
  • Output: False
  • (want deze dubbele vergelijking gebruikt de operator and om de vergelijkingen te koppelen).

Zo kun je doorgaan, en de leerlingen laten worstelen met deze lastige dubbele vergelijkingen. Laat ze steeds eerst zelf de code schrijven en daarna bedenken wat de output wordt, om te controleren of ze ook moeilijke, dubbele vergelijkingen kunnen beredeneren met 3 of meer getallen.

Tekst vergelijken

Je kunt strings (tekst) met elkaar vergelijken op dezelfde manier als numbers (getallen). Je gebruikt dus dezelfde operators (tekens).

a = "Parijs"

b = "Londen"

print(a == b)

print(a != b)

print(a < b)

print(a > b)

De eerste vergelijking checkt of de teksten “Parijs” en “Londen” gelijk aan elkaar zijn. Dit levert de output False (niet waar) op.

De tweede vergelijking checkt het tegenovergestelde. Aangezien “Parijs” en “Londen” verschillende strings zijn, levert dit de output True (waar) op.

Om strings te kunnen sorteren, kun je ook gebruik maken van het kleiner dan, of groter dan teken. Let er wel op dat dit hoofdlettergevoelig is!

Bij tekst kun je ook weer gebruik maken van geschakelde vergelijkingen met and en or. Zo kun je ook zeer complexe dubbele of meervoudige checks doen.

Code conditioneel uitvoeren met if

Code conditioneel uitvoeren… dat klinkt lastig! Wat bedoelen we daar eigenlijk mee? Uitvoeren van code, laten we daar eens mee beginnen. In les 1 hebben we het gehad over het plaatsen van een hekje voor een regel code. Dit zorgt ervoor dat deze code niet wordt uitgevoerd.

#3 + 5

Deze regel code produceert geen enkele output. Door het hekje voor de regel te zetten, wordt de regel niet uitgevoerd.

Je kunt in Python (en ook in alle andere programmeertalen), code conditioneel laten uitvoeren. Dat wil zeggen, als er voldaan wordt aan een conditie, en anders niet. Laten we kijken naar de volgende code.

a = 2

b = 3

if a < b:
  print('running code block 1')

if a > b:
  print('running code block 2')

We definiëren eerst twee variabelen a = 2 en b = 3. We gebruiken nu een zogenaamde “if-statement”. Lees dus: als a kleiner is dan b. Na de dubbele punt begin je weer op de volgende regel, maar ingesprongen. Het inspringen gebeurd automatisch, maar haal dit dus niet weg. Zodra je niet meer ingesprongen bent, dan zit je namelijk niet meer binnen de conditie. In Python is inspringen belangrijk. Andere programmeertalen doen dit door bijvoorbeeld haakjes om het blok code heen te zetten dan binnen het “if-statement” valt.

Er zijn in de bovenstaande code twee “if-statements”. Als je deze code echter uitvoert, zul je alleen de output “running code block 1” zien. Waarom zie je niet het tweede print-statement?

Dit komt doordat de vergelijking in het tweede if-statement niet waar is (False). Daarom wordt de code in het tweede blok niet uitgevoerd (alsof er een hekje voor staat).

If…else

Je kunt het nog gekker maken met deze conditionele code blokken. Zo kun je meerdere blokken aan elkaar schakelen met een if…else statement.

Er staat dan eigenlijk, als je voldoet aan de if-check, voer dan dan blok 1 uit.

Als je NIET voldoet aan de if-check, voer dan het alternatieve code blok 2 uit.

Met behulp van if…else kunnen we het vorige voorbeeld veel handiger opschrijven:

if a < b:
  print('running code block 1')
else:
  print('running code block 2')

Dit levert hetzelfde resultaat op, maar deze manier van schrijven is duidelijker.

If…elif….elif…elif…elif…else!

Python (en vele andere programmeertalen ook) biedt de mogelijkheid om naast if en else nog meer stappen te schakelen. Je kunt ook nog elif statements tussen de if en else zetten. Lees if..elif..else op deze manier: als … anders als… anders… De eerste check is dus nog steeds het if-statement. Als dit onwaar is (False) dan ga je verder naar de vergelijking bij de volgende elif. Pas als dit ook niet waar is (False) ga je naar het else statement. Zoveel je maar wilt zelfs! Hieronder zie je een voorbeeld van een if…elif…else statement waarbij de naam wordt gecontroleerd.

person = 'George'

if person == 'Sammy':
    print('Welcome Sammy!')
elif person =='George':
    print('Welcome George!')
else:
    print("Welcome, what's your name?")

We definiëren hier eerst de variabele ‘person’ = ‘George’. Eerst checken we of dit gelijk is aan Sammy. Dat is niet zo. We gaan dus naar de tweede check. De elif vergelijking is waar (True) en dus wordt het tweede blokje code, onder elif, uitgevoerd. Het derde blokje, onder else, wordt niet meer uitgevoerd. Dit gebeurt alleen als alle if en elif vergelijkingen niet waar (False) blijken te zijn.

De output van deze code is dus ‘Welcome George!’.

Hopelijk tot de volgende les!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *