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
Review Dyson V8 Cyclone – Betrouwbaar basismodel doet wat-ie moet doen
© Wesley Akkerman
Huis

Review Dyson V8 Cyclone – Betrouwbaar basismodel doet wat-ie moet doen

Met een prijskaartje van 399 euro is de Dyson V8 Cyclone een van de meest betaalbare draadloze steelstofzuigers van het Britse merk. Je haalt hiervoor een redelijk compacte maar krachtige huishoudhulp in huis, die een aantal duidelijke kanttekeningen heeft.

Goed
Conclusie

De Dyson V8 Cyclone is een geslaagde steelstofzuiger voor wie krachtige prestaties zoekt zonder overbodige luxe. Vooral op tapijt en bekleding komt hij sterk naar voren, en ook het verwijderen van haren gaat hem goed af. Het harde, smalle handvat en de wat stugge vloermond voelen niet altijd even prettig aan, maar dat past deels bij de prijsklasse. Jammer is ook het ontbreken van een lcd-display met handige informatie, al is dat net als het gebrek aan een automatische zuigstand goed te overzien. Alles bij elkaar is dit een betrouwbaar basismodel dat doet wat hij moet doen.

Plus- en minpunten
  • Krachtig zuigsysteem
  • Lekker wendbaar
  • Prima batterijduur
  • Handig opvang- en leegsysteem
  • Twee knoppen voor de bediening
  • Verrassend compleet
  • Voelt soms wat basaal
  • Handvat is niet comfortabel
  • Nieuwe vloermond tikt hard op de grond
  • Geen lcd-display
  • Zelf van zuigstand wisselen

De Dyson V8 heeft een nieuw ontwerp gekregen. Weg is de trekker die je constant moet indrukken om het apparaat te laten zuigen. In plaats daarvan beschikt hij voortaan over een handige aan-uitknop. Daarnaast zit een moduswisselaar, die met verschillende kleuren aangeeft welke zuigstand je gebruikt. Opvallend is ook dat Dyson voor de V8 Cyclone geen spannende kleuren voor de plastic onderdelen gebruikt. In plaats daarvan zien we een combinatie van kaki, rood, grijs en zwart; het geheel valt daardoor minder op.

©Wesley Akkerman

De nieuwe Dyson V8 Cyclone

De nieuwe V8 levert 30 procent meer zuigkracht en een 50 procent langere accuduur. In de laagste zuigstand houdt hij het tot 60 minuten vol. Helaas ontbreekt een handig lcd-scherm (dat wel op duurdere modellen zit) voor de resterende accutijd; ook hier moet je het doen met iets te simpele led-indicators. Onderop zit een nieuwe vloerzuigmond, die Dyson de 'Motorbar' noemt. Die moet dankzij het gebruik van speciale kammetjes effectief zijn tegen vastzittende haren, maar de stofzuiger moet het verder ook zonder moderne functies doen zoals lasers of stofsensoren.

Met slechts 2,7 kilogram is de Dyson V8 Cyclone lekker licht en wendbaar, waardoor je moeiteloos vloeren en zelfs hoekjes op het plafond schoonhoudt. Het stofreservoir (540 milliliter) heeft een handig uitwerpsysteem waarbij je het vuil niet hoeft aan te raken. Toch zijn we niet helemaal tevreden over alle eigenschappen van de zuigmodule. Het handvat is namelijk smal en klein, waardoor je grip bij langer gebruik oncomfortabel is. Ook kan het bij je duim gaan schuren. Dit is waarschijnlijk de minst ergonomische Dyson die we op de redactie hebben getest.

©Wesley Akkerman

Dyson V8 Cyclone in de praktijk

Gelukkig biedt de Dyson V8 Cyclone met 297 air-watts in de Boost-stand een flinke verbetering in zuigkracht (ten opzichte van zijn voorganger). De standaardmodus levert 79 aW en dat is voor ons ruim voldoende voor dagelijkse taken. Vooral het vloerkleed moet eraan geloven: haren, kruimels en ander vuil worden daar moeiteloos uit gezogen. Op hardere vloeren stelt de Cyclone eveneens niet teleur, al valt er wel één ding op. Wanneer je de stofzuiger oppakt nadat je bijvoorbeeld wat kruimels of korrels opzuigt, kan het zijn dat er een paar uit de mond vallen.

Daarnaast missen we een zachte(re) borstel op de Dyson V8 Cyclone. De huidige zuigmond ratelt namelijk hard over de vloer, wat niet zo prettig is voor (onder)buren in een flat- of appartementsgebouw of slapende kinderen. En dat terwijl de motor zelf stiller is dan verwacht. Gelukkig neemt de zuigmond moeiteloos allerlei soorten haren op en raken die niet in de borstel verstrengeld. Ook goed om te weten: de Cyclone past zijn zuigkracht niet automatisch aan, zoals duurdere modellen dat wel doen, waardoor je dat dus zelf in de gaten moet houden. Geen groot probleem, maar toch.

©Wesley Akkerman

Batterij en accessoires

Zoals gezegd gaat de batterij maximaal een uurtje mee wanneer je de zuinigste modus inschakelt. Anders moet je rekening houden met ongeveer een halfuur in de normale stand. Zet je de Boost-modus aan en laat je die aanstaan, dan is het binnen tien minuten wel gedaan. Geen vreemde scores als je kijkt naar het formaat en de behoorlijk indrukwekkende zuigkracht. Een groot pluspunt is daarnaast dat je de accu kunt verwisselen. Daardoor kun je de levensduur aanzienlijk verlengen door mettertijd een nieuwe batterij aan te schaffen.

Je krijgt trouwens twee accessoires bij aanschaf van de Dyson de V8 Cyclone: een kierenzuiger en een gemotoriseerde miniborstel. Hoewel dat misschien wat karig lijkt vergeleken met eerdere modellen, zijn oude V8-hulpstukken compatibel (mocht je die nog hebben). In de praktijk blijkt de basisset echter compleet genoeg. De kierenzuiger werkt goed voor meubels en lastige hoeken, terwijl de miniborstel onmisbaar is voor trappen, matrassen en bekleding. Ondanks het beperkte pakket biedt de stofzuiger dus voldoende opties voor de meeste huishoudens.

©Wesley Akkerman

Dyson V8 Cyclone kopen?

De Dyson V8 Cyclone is een geslaagde steelstofzuiger voor wie krachtige prestaties zoekt zonder overbodige luxe. Vooral op tapijt en bekleding komt hij sterk naar voren, en ook het verwijderen van haren gaat hem goed af. Het harde, smalle handvat en de wat stugge vloermond voelen niet altijd even prettig aan, maar dat past deels bij de prijsklasse. Jammer is ook het ontbreken van een lcd-display met handige informatie, al is dat net als het gebrek aan een automatische zuigstand goed te overzien. Alles bij elkaar is dit een betrouwbaar basismodel dat doet wat hij moet doen.

▼ Volgende artikel
Last van hoge energiekosten in de winter? Zo laat je je was en vaat zuiniger draaien
© ID.nl
Huis

Last van hoge energiekosten in de winter? Zo laat je je was en vaat zuiniger draaien

In de winter loopt de energierekening al snel op. De droger gaat vaker aan omdat de was buiten niet droogt, en omdat we vaker thuis koken en eten gaat ook de vaatwasser vaker aan. Ook de wasmachine draait op volle toeren, want nat weer en dikke kleding leveren extra was op. Hét moment dus om even stil te staan bij het energieverbruik van deze drie apparaten. Met wat kleine aanpassingen zorg je voor een zichtbaar (gunstig!) verschil op je stroomrekening.

In het kort

In dit artikel lees je hoe je met eenvoudige ingrepen energie bespaart bij het wassen, drogen en afwassen. We kijken naar slimme instellingen, zuinige programma's en klein onderhoud waarmee je het energieverbruik omlaag brengt.

Lees ook: 5 stille wasmachines met zuinig label

Slim plannen loont

Wie een slimme meter of dynamisch energietarief heeft, kan precies zien wanneer stroom het goedkoopst is. Door het programma van je wasmachine, droger of vaatwasser daarop af te stemmen, draai je letterlijk op de voordeligste momenten. Veel moderne apparaten hebben een startuitstelknop, waarmee je eenvoudig plant dat een was 's nachts of vroeg in de ochtend klaar is.

Heb je geen dynamisch contract, dan is het slim om eerst te kijken of jouw leverancier een piek- en daltarief hanteert. Bij een dubbeltariefmeter geldt het lagere tarief meestal alleen tussen ongeveer 23.00 en 07.00 uur, niet standaard in het weekend. Even checken bij je energieleverancier voorkomt verrassingen.

Gebruik van nachtstroom

Heb je een dubbeltariefmeter, dan betaal je tijdens de daluren vaak minder. Handig om te weten, maar houd rekening met geluid als je apparaten laat draaien terwijl je slaapt. Sluit de deur van het washok of gebruik het stille programma als dat aanwezig is.

Wassen op lagere temperatuur

De grootste energiebesparing zit in de temperatuur van het waswater. Een was van 30 graden is meestal voldoende schoon, zeker met de huidige wasmiddelen die ook bij lage temperatuur goed werken. Alleen bij sterk vervuilde was of handdoeken kan een hogere stand nodig zijn. Een wasbeurt op 60 graden of af en toe een machinereiniger houdt de trommel fris en voorkomt vetluis - een kookwas op 90 graden is bij moderne machines niet meer nodig.

Een andere eenvoudige stap is de wasmachine pas te laten draaien als hij goed vol is. Een halve was verbruikt bijna evenveel energie als een volle: zonde. Ook de juiste dosering helpt: te veel wasmiddel kan op den duur zeepresten achterlaten, waardoor de machine harder moet werken.

Droger of droogrek?

De droger is een onmisbare hulp in de winter, maar verbruikt veel stroom. Centrifugeer je was daarom eerst op de hoogste stand, zodat er minder vocht overblijft. Hoe droger het de trommel ingaat, hoe korter het droogprogramma duurt. Warmtepompdrogers verbruiken het minst stroom, al bespaar je nog meer door de was af en toe op te hangen. In een goed geventileerde kamer, bijvoorbeeld bij de verwarming, droogt het prima zonder dat je ernaar hoeft om te kijken.

Zuiniger én veiliger

Reinig na elke droogbeurt het pluizenfilter en controleer het rooster aan de achterkant. Ophoping van stof belemmert de luchtstroom, waardoor het apparaat langer draait en warmer wordt. Dat verhoogt niet alleen het energieverbruik, maar ook het risico op oververhitting.

Liever niet de wasdroger gebruiken?

Ga voor een droogrek!

De vaatwasser slim inzetten

Een vaatwasser verbruikt vooral energie om water te verwarmen. Kies daarom het eco-programma: dat duurt wat langer, maar gebruikt minder stroom en water doordat het water op lagere temperatuur wordt verwarmd. Grote etensresten kun je beter even wegschrapen, maar spoel servies niet voor onder de kraan - dat is onnodig en verspilt warm water. Licht aangekoekte pannen en schalen vormen voor moderne vaatwassers echt geen probleem.

Wie zonnepanelen heeft, kan de vaatwasser het beste overdag laten draaien, zodat de stroom direct uit eigen opwekking komt. Ook hier geldt dat een startuitstelknop handig is: je plant eenvoudig in dat het programma start zodra de zon op het dak staat.

Onderhoud maakt echt verschil

Goed onderhoud klinkt saai, maar heeft een direct effect op het energieverbruik. Een verstopt filter, kalk in de sproeiarmen of pluis in de droger laten apparaten harder werken dan nodig. Zet ze af en toe op een onderhoudsprogramma of gebruik een speciale reiniger. Dat voorkomt niet alleen geurtjes, maar zorgt ook dat de machine weer zo goed (lees: zo zuinig) mogelijk zijn werk kan doen.

Kleine aanpassingen, harde euro's

Energie besparen is vooral een optelsom van gewoontes. Door slimmer te plannen, de juiste temperatuur te kiezen en je apparaten schoon te houden, daalt het verbruik ongemerkt. En misschien nog belangrijker: je verlengt de levensduur van apparaten die het dagelijks zwaar te verduren hebben. Daarmee bespaar je ook op de langere termijn.