ID.nl logo
Zo kun je programmeren in Python - Deel 3
© Reshift Digital
Zekerheid & gemak

Zo kun je programmeren in Python - Deel 3

Nu je hebt gezien hoe je gegevens structureert in lijsten en dictionary’s, wordt het tijd om ook in je programma’s wat structuur te brengen. In deze les ga je van start met de Python-ontwikkelomgeving Thonny en schrijf je je eerste Python-programma’s.

Tot nu toe heb je al je Python-opdrachten in een interactieve sessie in de Python-interpreter uitgevoerd. Dat is handig voor wat kleine berekeningen, maar voor complexere zaken dien je een volwaardig programma te schrijven. En dat gaan we in deze les dan ook doen, waarbij we ook veel opdrachten zien die Python aanbiedt om een programma op te bouwen.

Thonny

Als je Python-programma’s begint te schrijven die voor meer dienen dan eenvoudige bewerkingen, volstaat de Python-interpreter niet: je hebt dan een ontwikkelomgeving nodig die je helpt bij het opbouwen van je programma. In deze les gebruiken we Thonny, dat standaard wordt geïnstalleerd met Python vanaf versie 3.7.

Als je Thonny opstart, krijg je twee tekstvelden te zien. In het tekstveld bovenaan typ je je Python-programma in. Het tekstveld onderaan is een ‘shell’: dit is hetzelfde als de Python-interpreter die we in de vorige lessen gebruikten. Om kort wat opdrachten uit te proberen terwijl je een programma aan het schrijven bent, kan dit tekstveld handig zijn.

©PXimport

Waar of niet waar

Maar voordat we een programma schrijven, dienen we eerst nog één datatype van Python uit te leggen, en wel een heel eenvoudig: bool. Dit stelt een booleaanse waarde voor: waar of niet waar, of in Python: True of False. Heel wat functies en operatoren in Python geven een van deze waardes terug. Voer de volgende opdrachten maar eens in het shell-tekstveld van Thonny in:

>>> namen = ['lies', 'jan', 'kees', 'mireille', 'koen', 'rob']>>> 'kees' in namenTrue>>> 'aniek' in namenFalse>>> namen[0] == 'lies'True>>> namen[1] != 'kees'True>>> 2 < 5True>>> 2 > 5False>>> 3.1.is_integer()False>>> 3.0.is_integer()True

Zoals je ziet, kun je met in testen of een element zich in een lijst bevindt. Met == test je op de gelijkheid van twee objecten en met != op de ongelijkheid. Vergelijkingen zoals < (kleiner dan) en > (groter dan) geven ook een booleaanse waarde terug. Daarnaast heb je ook <= (kleiner dan of gelijk aan) en >= (groter dan of gelijk aan). En een functie zoals is_integer() is handig om van een float te bepalen of het een gehele waarde is.

Met booleaanse waarden zelf kun je ook ‘rekenen’, namelijk met de operatoren and, or en not. De uitdrukking xor y is True als x of y of beide objecten True zijn; x and y is True als beide objecten True zijn; en not x is True als x False is en andersom.

Waardes testen: if

Dan gaan we nu ons eerste Python-programma schrijven. Het programma vraagt de gebruiker om een geheel getal van 1 tot 10 in te vullen en toont het getal dan in een woord uitgeschreven. Maar als de gebruiker een getal kleiner dan 1 of groter dan 10 invult, krijgt hij een foutmelding. Het programma ziet er zo uit:

getallen = {1: 'één', 2: 'twee', 3: 'drie', 4: 'vier', 5: 'vijf', 6: 'zes', 7: 'zeven', 8: 'acht', 9: 'negen', 10: 'tien'}

getal = int(input("Voer een geheel getal van 1 tot 10 in: "))

if getal < 1:

print("Het getal is kleiner dan 1.")

elif getal > 10:

print("Het getal is groter dan 10.")

else:

print(getallen[getal])

Op de eerste regel maken we een dictionary aan met de getallen van 1 tot 10 als sleutel, met telkens als bijbehorende waarde een string met het getal in een woord uitgedrukt. Daarna roepen we de functie input aan met als argument een string met de vraag om een getal in te voeren. De functie input geeft als waarde de string terug die de gebruiker heeft ingevoerd. Die string zetten we met int om naar een geheel getal, op voorwaarde natuurlijk dat de gebruiker daadwerkelijk een getal heeft ingevoerd.

Daarna testen we met if getal < 1 of het getal kleiner is dan 1. In dat geval wordt de regel erna uitgevoerd. Als aan die eerste voorwaarde niet voldaan is, controleert Python de voorwaarde in de regel elif getal > 10. Zo ja, dan wordt de regel erna uitgevoerd; zo nee, dan wordt de regel na else: uitgevoerd.

Zo’n blok als hierboven kan meerdere controles met elif bevatten: die worden dan één voor één getest tot er aan een voorwaarde is voldaan. Overigens zijn de controles met elif en else optioneel. Je kunt dus eenvoudig alleen met if een voorwaarde testen: in het geval niet aan die voorwaarde is voldaan, gebeurt er niets en gaat het programma gewoon verder.

Voer je programma uit

Voer de code in het programmatekstveld van Thonny in. Je merkt dat Thonny de regels automatisch met vier tekens inspringt nadat je op Enter drukt na een regel met if, elif of else. Let op: zonder deze inspringing is de Python-code niet geldig. Nadat je de volledige code ingetypt hebt, sla je het bestand in Thonny op. Druk daarna op het groene icoontje met het driehoekje om het programma uit te voeren.

Als je een tikfout hebt gemaakt, krijg je in het onderste tekstveld een foutmelding te zien. Dat is bijvoorbeeld het geval als je een : op het einde van een regel met if, elif of else vergeet of als je de code niet correct inspringt. Verbeter dan je code en voer het programma opnieuw uit.

Je programma vraagt nu in het tekstveld onderaan om een getal van 1 tot 10 in te voeren. Test de verschillende onderdelen van je programma eens uit door een getal in te voeren dat te klein, te groot of binnen het bereik ligt. Na elke invoer druk je op Enter en krijg je het resultaat te zien. Voer het programma daarna opnieuw uit voor een volgende poging.

Programma’s op de opdrachtregel uitvoeren

Je hoeft je programma’s niet in Thonny uit te voeren. Als je op de Opdrachtprompt (onder Windows) of de Terminal (onder Linux of macOS) naar de directory gaat waarin je je Python-programma hebt opgeslagen, kun je het programma uitvoeren met de opdracht python3 naamvanprogramma.py.

Een bereik van getallen

Ons programma is ingewikkelder dan nodig. We hoeven eigenlijk niet te weten of het ingevoerde getal kleiner dan 1 is of groter dan 10: we willen gewoon weten of het in het gevraagde bereik van 1 tot 10 ligt. Daarbij kunnen we gebruikmaken van de functie range, die een bereik van getallen voorstelt. Zo kunnen we ons voorgaande programma vereenvoudigen tot:

getallen = {1: 'één', 2: 'twee', 3: 'drie', 4: 'vier', 5: 'vijf', 6: 'zes', 7: 'zeven', 8: 'acht', 9: 'negen', 10: 'tien'}

getal = int(input("Voer een geheel getal van 1 tot 10 in: "))

if getal - 1 in range(len(getallen)):

print(getallen[getal])

else:

print("Het getal ligt niet binnen het bereik van 1 tot 10.")

We hebben nu nog maar één test met if nodig, zonder elif. In die controle testen we immers of het ingevoerde getal in het bereik ligt. Dat bereik berekenen we door de lengte van de dictionary met getallen door te geven aan de functie range. Omdat Python altijd vanaf 0 begint te tellen, is het bereik voor die dictionary met lengte 10 gelijk aan de getallen van 0 tot 9. Maar omdat wij mensen vanaf 1 beginnen te tellen, trekken we 1 van het ingevoerde getal af voordat we testen of het getal zich in het bereik bevindt. En zo komen we aan deze regel:

if getal - 1 in range(len(getallen)):

Voorwaardelijke lussen

Ons programma heeft nog één groot minpunt: als de gebruiker een waarde buiten het bereik invoert, stopt het programma gewoon en moet de gebruiker het programma opnieuw uitvoeren. Waarom kan het programma in dat geval niet uit zichzelf opnieuw naar een getal vragen? Dat kan, namelijk met while:

getallen = {1: 'één', 2: 'twee', 3: 'drie', 4: 'vier', 5: 'vijf', 6: 'zes', 7: 'zeven', 8: 'acht', 9: 'negen', 10: 'tien'}

getal = 0

while getal - 1 not in range(len(getallen)):

getal = int(input("Voer een geheel getal van 1 tot 10 in: "))

print(getallen[getal])

In de regel met while testen we met not in of het ingevoerde getal zich niet binnen het bereik bevindt. In dat geval wordt de ingesprongen opdracht eronder uitgevoerd. En daarna gebeurt de test in de regel met while opnieuw, zolang het getal zich niet binnen het bereik bevindt. Pas wanneer het getal zich wel binnen het bereik bevindt, stopt het while-blok en gaat het programma verder met de laatste regel. Zo’n while-blok noemen we een lus, omdat het programma als het ware in rondjes draait zolang aan de voorwaarde op de while-regel is voldaan.

Let op: we kennen in het begin van het programma 0 toe aan de variabele getal zodat de while-lus de eerste keer sowieso wordt uitgevoerd.

Samenvatting

In deze les hebben we de stap gezet van afzonderlijke Python-opdrachten naar Python-programma’s. Dat deden we in de ontwikkelomgeving Thonny. We bekeken het datatype bool en werkten met voorwaarden in if-blokken en while-lussen. Daarbij maakten we ook gebruik van de functie range voor een bereik van getallen. We gebruikten input en print voor invoer en uitvoer. De volgende les besteden we volledig aan invoer en uitvoer, en bespreken we ook hoe je door elementen in een lijst of dictionary loopt.

Opdracht

Ons laatste programma heeft nog één nadeel: het vraagt bij de invoer van een getal buiten het bereik van 1 tot 10 gewoon opnieuw een getal zonder extra melding dat je iets verkeerds hebt ingetypt. Voeg die extra melding toe, zoals we wel in het programma met if hadden.

Uitwerking

getallen = {1: 'één', 2: 'twee', 3: 'drie', 4: 'vier', 5: 'vijf', 6: 'zes', 7: 'zeven', 8: 'acht', 9: 'negen', 10: 'tien'} getal = int(input("Voer een geheel getal van 1 tot 10 in: ")) while getal - 1 not in range(len(getallen)): print("Het getal ligt niet binnen het bereik van 1 tot 10.") getal = int(input("Voer een geheel getal van 1 tot 10 in: ")) print(getallen[getal]) Dit programma combineert de ideeën achter onze twee vorige programma’s. We initialiseren getal nu niet met 0, maar met de invoer van de gebruiker. Als deze eerste keer het getal onmiddellijk in het bereik van 1 tot 10 ligt, is aan de voorwaarde van de while-lus niet voldaan en wordt het getal getoond. In het andere geval wordt de lus gestart, waarbij zolang het getal niet in het bereik ligt de gebruiker een melding daarvan krijgt en de vraag om een getal in te voeren.

Cheatsheet

argument: een waarde die je aan een functie doorgeeft. bool (‘booleaanse waarde’): waar (True) of niet waar (False). if: een test of er aan een voorwaarde is voldaan. ontwikkelomgeving (development environment): software die je ondersteunt bij het schrijven van programma’s. while: een lus die uitgevoerd wordt zolang er aan een voorwaarde is voldaan.

▼ Volgende artikel
Kerststress? In één uur je huis klaar voor de visite
© deagreez - stock.adobe.com
Huis

Kerststress? In één uur je huis klaar voor de visite

Het is bijna kerst en tussen het regelen van de laatste boodschappen door kijk je om je heen. De post ligt nog op tafel, er slingert speelgoed rond en een grote schoonmaak gaat niet meer lukken. Toch wil je dat je gasten in een net huis binnenkomen. Met een strak plan kun je in precies zestig minuten de perfecte illusie van een schoon huis creëren. Zet de timer, doe je favoriete muziek aan en ga aan de slag.

Dit gaan we doen

We focussen op wat je bezoek ziet en gebruikt. De hal en woonkamer ruimen we snel op, zonder alles schoon te boenen. Het toilet maken we fris in een paar minuten en in de keuken werken we rommel uit het zicht. Met licht, geur en frisse lucht zorgen we tot slot voor sfeer. Om het je extra makkelijk te maken, vind je onderaan een handig tijdschema.

Lees ook: 🎄 De kerstboom versieren: zo doe je dat snel én slim

Je begint waar je gasten binnenkomen. De hal is vaak een rommelige plek, zeker in de winter. Pak een grote mand of krat en gooi daar alles in wat er niet hoort: sjaals die niemand draagt, post, sleutels en rondslingerende tassen. Zet die mand tijdelijk weg in de berging, schuur of desnoods in je eigen kledingkast. Zorg dat er ruimte is aan de kapstok voor de jassen van je bezoek. Klop de deurmat even krachtig buiten uit en haal de stofzuiger snel door de gang. Als je hierna nog dertig seconden over hebt, veeg je met een doekje over de spiegel. Een schone spiegel en een lege vloer geven direct bij binnenkomst al het gevoel van een opgeruimd huis.

De woonkamer: sfeer boven perfectie

Door naar de plek waar jullie de meeste tijd zullen doorbrengen. In de woonkamer geldt nu de regel: opruimen is belangrijker dan boenen. Loop een rondje met een vuilniszak voor alles wat weg kan en een wasmand voor spullen die naar een andere kamer moeten. Maak de salontafel en bijzettafels helemaal leeg. Een leeg oppervlak oogt namelijk direct schoon, zelfs als je niet nat afneemt. Schud daarna de kussens op de bank flink op en vouw plaids netjes op. Haal de stofzuiger alleen door het midden van de kamer en langs de bank; vergeet de hoekjes en plinten, want daar kijkt vanavond niemand naar.

©Евгения Рубцова

Het toilet: kort maar krachtig

Dit is de enige plek waar je gasten echt even alleen zijn en stilzitten, dus hier moet het wel fris zijn. Gelukkig is de ruimte klein. Spuit wc-reiniger in de pot en laat dit even inwerken terwijl je de rest doet. Gebruik een wegwerpdoekje of een sopje voor de bril, de spoelknop, de deurklink en de kraan. Hang een schone handdoek op en controleer of er voldoende toiletpapier ligt. Heb je nog een geurkaarsje of geurstokjes? Zet die dan hier neer. Als het lekker ruikt, voelt je toilet al snel schoner aan.

Puntjes op de i in de keuken

Je hebt nu nog een kwartier over. Snel door naar de keuken. Zorg allereerst dat het aanrecht helemaal leeg is. Als het niet meer lukt om alles af te wassen, zet je de vuile vaat snel in de vaatwasser, ook als deze eigenlijk al vol is. Een andere slimme noodoplossing is om de vaat tijdelijk in een keukenkastje te verstoppen. Het gaat erom dat alles uit het zicht is. Haal tot slot nog even een doekje over het aanrecht en de kookplaat zodat alles weer fris oogt.

©APALKOV | MestoSveta - stock.adobe.com

Sfeer maken

Nu is het tijd voor de belangrijkste truc: het aanpassen van de verlichting. Dim de grote lampen en steek overal kaarsen en sfeerverlichting aan. Dat ziet er niet alleen heel gezellig uit, maar dat zachte licht zorgt er ook voor dat achtergebleven stof of verdwaalde kruimels niet meer opvallen. Tot slot doe je nog één ding voor de sfeer. Zet een raam op een kier voor frisse lucht of zet een pannetje op het vuur met wat water, kaneel en sinaasappelschil voor een heerlijke kerstgeur.

Klaar voor de bel

Kijk nu eens om je heen. Je huis is opgeruimd, het ruikt lekker en het is gezellig verlicht. Niemand die ziet dat je de bovenkant van de kasten hebt overgeslagen. Schenk wat te drinken voor jezelf in en adem uit. Laat die bel maar gaan!

TijdRuimteActieDe truc
00:00 - 00:10HalJassen weg, mat uitkloppen.Ruimte maken op de kapstok voor gasten
00:10 - 00:30WoonkamerRommel in mand, kussens opkloppen.Alleen het 'looppad' stofzuigen
00:30 - 00:45ToiletBril, klink en kraan poetsen.Schone handdoek en geurstokjes
00:45 - 00:55KeukenAanrecht leegmaken.Vaat verstoppen (tijdelijk!)
00:55 - 01:00SfeerLichten dimmen, kaarsen aan.Sinaasappelschillen koken voor de geur
▼ Volgende artikel
Verras je gasten: 5 keer de lekkerste koffie voor de feestdagen
© ID.nl
Huis

Verras je gasten: 5 keer de lekkerste koffie voor de feestdagen

Na een uitgebreid diner is de koffie vaak de afsluiter van de avond. In plaats van een standaard zwarte bak zet je met een paar simpele ingrediënten iets bijzonders op tafel. Je hoeft geen volleerd barista te zijn om indruk te maken; met wat kruiden of een restje chocolade geef je de koffie direct een feestelijke twist. Speciaal voor jou: vijf heerlijke koffierecepten.

Bij deze recepten draait het vooral om het contrast tussen de warme drank en de extra toevoegingen. Je kunt de smaken vaak al voorbereiden voordat de gasten aan tafel gaan, zodat je op het moment zelf niet te lang in de keuken staat. In de tabel onderin zie je telkens wat de basiskoffie voor een recept is en wat je extra toevoegingen zijn.

Lees ook: 5 veelgemaakte espressofouten (en zo voorkom je ze!)

Espresso met witte chocolade en kardemom

Witte chocolade is een goede match voor de sterke smaak van een espresso. Leg een paar blokjes witte chocolade onderin het glas en laat deze langzaam smelten door de hete koffie eroverheen te gieten. Als je een snufje kardemom door de melk mengt voordat je deze opschuimt, krijg je een heerlijke warme en kruidige geur. De kardemom zorgt ervoor dat de zoete chocolade niet de overhand krijgt, waardoor de koffiesmaak goed overeind blijft.

Tiramisu uit een glas

Je kunt de smaken van het bekende Italiaanse dessert ook gewoon drinken. Meng een sterke kop koffie met een drupje amandelsiroop voor de herkenbare smaak van amaretto, maar dan zonder de alcohol. In plaats van gewone melk kun je een mengsel van halfstijve slagroom en een beetje mascarpone bovenop de koffie leggen. Een flinke laag cacaopoeder over de room maakt het plaatje compleet. Dit koffierecept kan eigenlijk ook direct als vervanger van een dessert kan dienen, vooral het serveert met bijpassend koekje, zoals cantuccini of amaretti.

Mokka met sinaasappel en pure chocolade

De combinatie van pure chocolade en sinaasappel doet het altijd goed tijdens de feestdagen. Rasp de schil van een sinaasappel en roer dit samen met een blokje pure chocolade door je warme koffie totdat alles is opgelost. De olie uit de sinaasappelschil geeft een fris aroma dat heel goed samengaat met donker gebrande koffiebonen. Als je dit serveert met een klein stukje sinaasappelschil op de rand van het glas, ziet het er meteen feestelijk uit. De pure chocolade maakt de koffie wat dikker en voller, wat goed past bij een koude winteravond.

Karamel met een snufje zeezout

Gezouten karamel is al jaren populair en dat is niet zonder reden. Het zout versterkt namelijk de zoete tonen van de karamel en haalt tegelijkertijd de bittere randjes van de koffie af. Doe een scheutje karamelsiroop in je glas en voeg daar echt maar een heel klein beetje zeezout aan toe. Gebruik havermelk voor het schuim, omdat dit van zichzelf al een beetje romig en nootachtig smaakt. Het resultaat is een zachte koffie die het door de combinatie van zout en zoet bij bijna iedereen goed doet.

Koffie met honing en kaneel

Voor wie geen chocolade of room lust, is een combinatie van honing en kaneel een goed alternatief. Roer een goede lepel honing door de zwarte koffie en bestrooi de melkschuimlaag met wat kaneelpoeder. De honing geeft een andere soort zoetheid dan suiker en maakt de koffie zachter voor de keel. Het is een eenvoudige manier om een normale latte een feestelijke upgrade te geven met spullen die je waarschijnlijk al in je keukenkastje hebt staan. De geur van kaneel die van de warme melk afkomt, maakt meteen duidelijk dat het kerst is! 

©ID.nl

Zo maak je je koffie helemaal af

Je kunt de feestkoffie nog net wat mooier presenteren door aandacht te besteden aan de garnering. Een klein beetje kaneel, nootmuskaat of cacaopoeder op de melkschuimlaag doet bijvoorbeeld al wonderen. Gebruik een klein zeefje zodat de poeder gelijkmatig verdeeld wordt en er geen klontjes ontstaan. Voor een luxe effect kun je met een fijne rasp wat krullen van een blok pure of witte chocolade schaven. Dit smelt langzaam weg in het schuim en geeft bij elke slok een beetje extra textuur.

Ook met koekjes of fruit kun je creatief uit de hoek komen. Serveer de koffie met een typisch winters koekje op de schotel, zoals een speculaasje of een Italiaanse cantuccini. Een dunne reep sinaasappelschil die je even rond je vinger draait tot een krul staat erg chique aan de rand van het glas. Wil je echt uitpakken, dip de rand van het glas dan in wat water en daarna in suiker voor een bevroren effect. In plaats van een gewone lepel kun je tot slot een kaneelstokje in de koffie zetten, wat tijdens het drinken subtiel steeds meer smaak afgeeft.

ReceptBasisSmaakmakerTopping
Witte chocoladeEspressoWitte chocoladeKardemom
TiramisuSterke koffieAmandelsiroopMascarpone-room
Sinaasappel mokkaEspressoPure chocoladeSinaasappelrasp
Zoute karamelEspressoKaramelsiroopZeezout
Honing & kaneelLatteBloemenhoningKaneelpoeder

Drie espressomachines voor je feestkoffie

De'Longhi PrimaDonna Soul

Dit apparaat van De'Longhi is een zeer uitgebreide volautomaat. Dankzij de 18 voorgeprogrammeerde recepten zet je met één druk op de knop een krachtige espresso of een zachte latte. Voor wie van variatie houdt, biedt dit toestel ook de mogelijkheid om de sterkte van de koffie nauwkeurig aan te passen, zodat je altijd die gewenste sterke kop koffie krijgt. De machine is bovendien via een smartphone-app te bedienen.

Siemens EQ.500

De Siemens EQ.500-serie staat bekend om het gebruiksvriendelijke display waarbij je de koffiespecialiteiten direct via sensorvelden selecteert. Naast de standaard espresso en latte beschikt dit apparaat over de zogenaamde 'aromaDouble Shot'-functie. Hiermee zet je een extra sterke koffie door middel van een dubbel maal- en zetproces, zonder dat de koffie een bittere nasmaak krijgt.

Melitta Barista Smart T

De Melitta Barista Smart TS blinkt uit in veelzijdigheid met maar liefst 21 voorgeprogrammeerde recepten. Een groot voordeel is de fluisterstille molen, waardoor je zonder veel lawaai geniet van versgemalen bonen. Dankzij het dubbele bonenreservoir kun je bovendien eenvoudig wisselen tussen een milde boon voor je latte en een krachtige variant voor de espresso. De machine is via een handige app op je smartphone te bedienen. Met de 'My Coffee Memory'-functie sla je de persoonlijke voorkeuren van acht verschillende personen op.

Watch on YouTube