ID.nl logo
Zo kun je programmeren in Python - Deel 3
© PXimport
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 namen
True
>>> 'aniek' in namen
False
>>> namen[0] == 'lies'
True
>>> namen[1] != 'kees'
True
>>> 2 < 5
True
>>> 2 > 5
False
>>> 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 x or 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 Philips OneUp – Elektrische dweil maakt sneller schoon
© Wesley Akkerman
Huis

Review Philips OneUp – Elektrische dweil maakt sneller schoon

In hoeverre kun je een simpele dweil eigenlijk nog verbeteren? Die vraag stelden we onszelf hardop – tot we opeens de Philips OneUp in handen kregen: een elektronische dweil die verrassend goed weet mee te draaien in een wereld vol dweilende robots en nat-droogstofzuigers. Wat vinden wij van deze opvallende nieuwkomer?

Uitstekend
Conclusie

De Philips OneUp is wat ons betreft een ideaal apparaat voor wie geen interesse of budget heeft voor een robotstofzuiger of een geavanceerde nat-droogstofzuiger. De vloer wordt mooi schoon, zonder strepen, en het dweilen en drogen kost nauwelijks tijd. Even snel door het huis is daardoor geen gedoe meer. Nadelen zijn er ook: het bijbehorende schoonmaakmiddel is aan de prijzige kant en mist een frisse geur, en de dweilpad droogt traag op als de zon niet meewerkt. Maar verder staat er niets in de weg om dit apparaat warm aan te bevelen.

Plus- en minpunten
  • Dweilen zonder strepen
  • Flexibele kop
  • Afneembare dweilpad
  • Goed voor minimaal 50 vierkante meter
  • Meegeleverd schoonmaakmiddel
  • Geen extra dweilpad
  • Schoonmaakmiddel is duur
  • Schoonmaakmiddel heeft geen lekkere geur

Dankzij robots en andere slimme apparaten wordt het steeds makkelijker om het huishouden uit handen te geven of de vervelende taken te láten uitvoeren. De Dreame H15 Pro en anders wel de X50 Ultra zijn daar goede voorbeelden van. Maar Philips laat met de OneUp zien dat regelmatig dweilen helemaal geen vervelende taak hoeft te zijn. Dit is namelijk een elektrische dweil die je in staat stelt de taak sneller uit te voeren. Hij is er in twee uitvoeringen, namelijk eentje van 109 en eentje van 159 euro. Het enige verschil is de accu: die gaat respectievelijk 50 of 70 minuten mee.

Het systeem bestaat uit verschillende onderdelen die je allemaal aan de steel bevestigt. Om te beginnen zijn dat een schoonwaterreservoir (van 280 ml) en een vuilwaterbak (van 180 ml), die je aan de onderkant van het midden aantreft. In de bak met schoon water klik je daarnaast een speciaal ontwikkelde module met daarin het schoonmaakmiddel. Dat is een door Philips ontwikkeld middel, dat naar verluidt drie maanden moet meegaan. De kantelbare kop kan 360 graden draaien en is voorzien van afneembare dweilpads, die ook los te koop zijn (voor 23 euro).

©Wesley Akkerman

Evenredig nat en schoon

Bij dit soort apparaten is het gewicht en flexibiliteit in de bediening erg belangrijk. De Philips OneUp weegt 1,75 kilo en is dus niet bepaald zwaar, zeker niet in vergelijking met draadloze steelstofzuigers. Wij hebben er in elk geval moeiteloos mee door het huis gelopen. En dankzij die draaibare kop kom je heel makkelijk in verschillende hoeken, onder tafels en stoelen en langs poten en ander meubilair. De knoppen voor de bediening zitten daarnaast helemaal boven op de dikke steel, waardoor die eveneens goed bereikbaar zijn.

In de basis lijkt er dus goed nagedacht te zijn over de werking en praktische inzetbaarheid van de Philips OneUp. Maar hoe maakt-ie schoon? Dankzij een gemotoriseerde aandrijving kan het systeem de dweilpad continu voorzien van een schone stroom water met zeep. Ondertussen zuigt de dweil het vieze water op, waardoor de grond niet lang nat blijft en het droogproces drastisch verkort. Je moet de dweilpad van tevoren nog wel eerst natmaken, dus de eerste vloeraanraking kan wat te vochtig zijn. Maar daarna wordt de harde vloer evenredig nat en schoon.

©Wesley Akkerman

Voordelen ten opzichte van gewoon dweilen

Het gebruik van de Philips OneUp brengt een aantal duidelijke voordelen met zich mee. Vergelijk je het met traditioneel dweilen, dan vallen er meteen een paar dingen op. Je hoeft geen grote emmer water klaar te zetten, laat staan ermee door het huis te slepen. Je verbruikt minder water en schoonmaakmiddel, en je voorkomt dat je halverwege met een vieze dweil over de vloer gaat. Ook het schoon- en droogmaken van de dweilkop is een stuk eenvoudiger – daar heeft Philips slim over nagedacht.

De dweilpad is afneembaar en kun je simpelweg te drogen leggen, bijvoorbeeld in de zon. Is die er even niet, dan duurt het ongeveer twee à drie dagen voordat hij helemaal droog is. Je kunt de pad bovendien in de wasmachine gooien om hem weer fris en schoon te krijgen. Omdat het drogen soms wat tijd kost, is een extra dweilpad geen overbodige luxe – maar die moet je wel los aanschaffen. Het apparaat wordt geleverd met één pad, maar verder zit alles wat je nodig hebt gewoon in de doos. De basis is dus goed op orde.

©Wesley Akkerman

Meegeleverd schoonmaakmiddel

Philips raadt natuurlijk aan om het speciaal voor dit systeem ontwikkelde schoonmaakmiddel te gebruiken. Twee flesjes kosten 20 euro en zijn volgens de fabrikant goed voor evenveel sessies als drie flessen gewone vloerreiniger. Per schoonmaakbeurt druk je één keer op de knop om het schoonwaterreservoir van de juiste hoeveelheid zeep te voorzien, zodat je altijd de optimale verhouding hebt. Toch vragen we ons af of je echt aan die Philips-flesjes vastzit. In de praktijk werkt het systeem ook prima met je eigen schoonmaakmiddel.

Wat wel opvalt aan het meegeleverde reinigingsmiddel, is dat het nauwelijks geur afgeeft. Het ruikt niet vies, maar er zit ook geen fris of aangenaam geurtje aan. Wel zorgt het voor een streeploos resultaat, en dat is natuurlijk waar het uiteindelijk om draait. Heb je echter zelf een goede vloerreiniger die speciaal geschikt is voor jouw type vloer, dan kun je die ook prima gebruiken. Het enige wat je dan even moet uitzoeken, is de juiste verhouding met het schoonwaterreservoir van 280 ml. De elektrische dweil presteert er in elk geval niet minder door als je de (best prijzige) Philips-flesjes links laat liggen.

©Wesley Akkerman

Philips OneUp kopen?

Ook goed om te weten: met de variant die 50 minuten meegaat, kun je ongeveer 50 vierkante meter dweilen. De versie met een accuduur van 70 minuten komt tot 70 vierkante meter. Daarmee is de OneUp een ideaal product voor kleinere huishoudens, zoals een appartement of flat. In ons testhuishouden hield de OneUp het zelfs vol om op een volle accu 56 vierkante meter schoon te maken – ruim boven de beloofde prestatie. Natuurlijk moet je er rekening mee houden dat accu's na verloop van tijd wat capaciteit verliezen, maar daar was in dit geval nog geen sprake van.

De Philips OneUp is wat ons betreft een ideaal apparaat voor wie geen interesse of budget heeft voor een robotstofzuiger of een geavanceerde nat-droogstofzuiger. De vloer wordt mooi schoon, zonder strepen, en het dweilen en drogen kost nauwelijks tijd. Even snel door het huis is daardoor geen gedoe meer. Nadelen zijn er ook: het bijbehorende schoonmaakmiddel is aan de prijzige kant en mist een frisse geur, en de dweilpad droogt traag op als de zon niet meewerkt. Maar verder staat er niets in de weg om dit apparaat warm aan te bevelen.

▼ Volgende artikel
Ontdek de Miele Guard-serie: voor elk huishouden een stofzuiger
© Miele
Huis

Ontdek de Miele Guard-serie: voor elk huishouden een stofzuiger

Maak kennis met de Miele Guard-serie: drie stofzuigers die elk uitblinken in hun eigen klasse. Van de lichtgewicht en wendbare S1 tot de veelzijdige M1 en de luxe L1 met geavanceerde filtersystemen – Miele combineert innovatieve technologie met doordacht design. Ontdek hieronder welke Guard-stofzuiger het best bij jou past!

Partnerbijdrage - in samenwerking met Bemmel & Kroon

Of je nu dagelijks door een druk gezinshuis beweegt of in alle rust een minimalistische studio onderhoudt, een goede stofzuiger maakt het verschil. Met de Guard-serie biedt Miele drie modellen die elk op hun eigen manier uitblinken in comfort, gebruiksgemak en duurzaamheid. De compacte Guard S1, de veelzijdige M1 en de luxe L1 zijn stuk voor stuk uitgerust met doordachte technologie en hoogwaardige materialen. Wat ze met elkaar delen? De kwaliteit en betrouwbaarheid die je van Miele mag verwachten.

Guard S1: verrassend sterk, opvallend compact

De Guard S1 is het instapmodel binnen de serie, maar zeker geen lichtgewicht als het op prestaties aankomt. Met een krachtige 890 watt-motor, vier zuigstanden en een universele zuigmond reinigt hij moeiteloos diverse vloertypen. Dankzij het lichte gewicht en het compacte ontwerp is hij ideaal voor kleinere woningen of mensen die op zoek zijn naar een wendbare stofzuiger. De bediening is intuïtief via twee knoppen en een centrale draaischakelaar, en met zijn grijs gemarkeerde elementen is hij zelfs zonder handleiding volledig logisch in gebruik.

©Miele

De S1 maakt gebruik van de HyClean Pure TU-stofzak en het ComfortFit-systeem zorgt voor een hygiënisch klikmechanisme: geen ontsnappend stof, wel een gerust gevoel. En met standaard accessoires zoals een meubelzuigmond, kierenborstel en reliëfborstel (bevestigd via de VarioClip) heb je alles bij de hand.

Waarom de sledestofzuiger nog altijd onverslaanbaar is

Hoewel draadloze steelstofzuigers tegenwoordig de toon lijken te zetten, bewijst de klassieke sledestofzuiger keer op keer zijn waarde. Niet alleen bieden sledemodellen doorgaans een krachtigere en constantere zuigkracht, ze hebben ook een aanzienlijk grotere stofcapaciteit. Je hoeft dus minder vaak te legen of zakken te vervangen. Bovendien zijn ze stiller, ergonomischer in gebruik en betrouwbaarder op de lange termijn. En waar steelstofzuigers vaak na een paar jaar al kuren vertonen, gaan sledestofzuigers zoals die van Miele gerust twintig jaar mee. Soms is klassiek gewoon beter.

Guard M1: veelzijdige krachtpatser met slimme opbergruimte

Een stapje luxer is de Guard M1, ontworpen voor elk type ondergrond en elk type huishouden. Deze stofzuiger beschikt over een verstelbare zuigkracht met vier vermogensniveaus, die je met de voet bedient – handig als je tussendoor niet wilt bukken. De 4,5 liter-stofzak (HyClean Pure CO) gaat extra lang mee en het ComfortFit-systeem garandeert maximale hygiëne én prestaties, zelfs bij een lagere zuigkracht.

©Miele

Ook het design spreekt aan: fris, modern en met een geïntegreerd accessoirevak waarin je de meegeleverde meubelzuigmond, kierenborstel en reliëfborstel netjes opbergt. De universele draaibare zuigmond is geschikt voor tapijt, hout en tegels, en volgt soepel elke beweging.

Guard L1: comfort, stilte en duurzaamheid in één

De Guard L1 is het topmodel binnen de serie en is ontworpen voor mensen die geen concessies willen doen aan comfort, prestaties of uitstraling. Met een fluisterstil geluidsniveau van slechts 75 dB en een royale actieradius van 12 meter is dit model klaar voor elke schoonmaakklus, hoe groot of klein ook. Het robuuste ontwerp is niet alleen stijlvol, maar ook uitzonderlijk duurzaam: de L1 is getest op een levensduur van maar liefst 20 jaar.

©Miele

Net als de M1 beschikt ook de L1 over de draaibare universele zuigmond, maar onderscheidt zich met slimme details. Zo is de 2-in-1-zuigmond (voor meubels en kieren) geïntegreerd in de achterkant van het toestel en is de reliëfborstel ingebouwd in de ergonomische handgreep. Ook deze L1 werkt met de HyClean Pure TU-stofzak en het ComfortFit-systeem, waardoor hygiëne en gebruiksgemak gegarandeerd zijn.

Voor wie nóg een stap verder wil gaan, is er de Guard L1 Comfort. Deze luxere uitvoering voegt enkele premium extra's toe. Het geïntegreerde LCD-kleurendisplay toont in één oogopslag de reinigingsmodus, de vullingsgraad van de stofzak en de status van het uitblaasfilter. Zo heb je altijd direct inzicht in de prestaties van je stofzuiger. Daarnaast ondersteunt de L1 Comfort Miele@home, waarmee je het apparaat via wifi kunt verbinden met je smarthome-netwerk. Bediening via app, spraak of slimme automatisering? Met Miele is het slechts een kwestie van instellen.

Ga voor meer witgoeddeals naar Bemmel & Kroon!