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
Waar voor je geld: 5 robuuste sporthorloges voor een mooie prijs
© www.peopleimages.com
Gezond leven

Waar voor je geld: 5 robuuste sporthorloges voor een mooie prijs

Bij ID.nl zijn we dol op kwaliteitsproducten waar je niet de hoofdprijs voor betaalt. Een paar keer per week speuren we binnen een bepaald thema naar zulke deals. Ben je op zoek naar een betaalbaar sporthorloge? Vandaag hebben we vijf interessante modellen voor je gespot.

Xiaomi Smart Band 9

De onlangs verschenen Xiaomi Smart Band 9 is goedkoop en kent ook nog eens verrassend veel functies. Dit langwerpige sporthorloge is in de kleurstellingen zilver-wit, zwart en roze verkrijgbaar. Het amoledscherm van 1,62 inch biedt voldoende ruimte om diverse gegevens te tonen. Dankzij een respectabele resolutie van 192 × 490 pixels verschijnt alle informatie scherp in beeld – denk daarbij aan stappen, verbrande calorieën, weersverwachting en natuurlijk de tijd. Alle functies zijn via het aanraakscherm bereikbaar, want de Smart Band 9 heeft geen fysieke knoppen. De waterdichte behuizing weegt maar 15,8 gram (zonder bandje).

Kies in het menu tussen ruim 150 sportmodi en start vervolgens de training. Tijdens de inspanning kun je jouw hartslag in de gaten houden. Je koppelt de Smart Band 9 via bluetooth eenvoudig aan een smartphone. Laat het mobiele toestel vervolgens in je broek- of jaszak zitten, want inkomende notificaties verschijnen rechtstreeks op je pols. Een prettige eigenschap is dat je het scherm ook op zonovergoten plekken nog prima kunt lezen. Aan de hand van een lichtsensor kiest deze smartwatch automatisch de juiste helderheid. Ten slotte is de beschikbaarheid van meer dan tweehonderd wijzerplaten een leuk extraatje.

Garmin Instinct 2

Met deze relatief goedkope smartwatch van Garmin houd je nauwlettend jouw sportieve prestaties in de gaten. Je kunt de Instinct 2 zowel binnen als buiten dragen, want de robuuste behuizing is waterdicht tot een diepte van honderd meter. Op het ronde display van 176 × 176 pixels zie je onder meer de actuele hartslag, het aantal gezette stappen en de huidige snelheid. Er zijn ook een hoogtemeter en elektrisch kompas geïntegreerd. Onder leiding van diverse sport-apps doe je uiteenlopende trainingen. Je kunt bovendien na elke nacht de uitgebreide slaapmonitor bekijken.

Wanneer het sporthorloge met een smartphone is verbonden, zie je inkomende pushnotificaties voorbijkomen. De Instinct 2 bevat een energiezuinig zwart-witscherm. Dat komt de accuduur ten goede! De fabrikant claimt dan ook een batterijduur van zo'n 28 dagen in de smartwatchmodus. Het hier besproken model heeft een horlogekast van 45 millimeter. Als alternatief kun je een vergelijkbaar sporthorloge met een horlogekast van 40 millimeter kopen, de Garmin Instinct 2S.

Garmin Forerunner 255 Music

Ren, wandel of fiets je met een lekker muziekje nét wat steviger door? De Garmin Forerunner 255 Music is hiervoor bij uitstek geschikt. Je kunt namelijk nummers van Spotify, Deezer of YouTube Music downloaden en in het geheugen van deze smartwatch opslaan. Laat dus tijdens trainingen voortaan je smartphone thuisliggen en bedien de muziek vanaf je pols. Je hebt voor deze functie trouwens wel een betaald abonnement bij een van de genoemde muziekdiensten nodig. De Forerunner 255 Music heeft een horlogekast van 46 millimeter. Kies tussen een zwarte en witte uitvoering.

Op het ruime 1,3inch-kleurenscherm van 260 × 260 pixels zijn er een heleboel functies toegankelijk. Denk onder andere aan een calorieënteller, hartslagmeter, bloedzuurstofmeter, slaapmonitor, snelheidsmeter, stappenteller en stopwatch. De Forerunner 255 Music toont ook meldingen van een verbonden smartphone. Krijg je bijvoorbeeld een WhatsApp-bericht, dan gaat de weerbestendige behuizing kortstondig trillen. Tot slot gebruik je deze veelzijdige smartwatch ook om contactloos te betalen.

Lees ook: Dit zijn de 9 sporten waarmee je het makkelijkst afvalt

Polar Pacer Pro

Zoek je een licht sporthorloge met zéér veel functies? Kijk dan eens naar de Polar Pacer Pro. Wegens het gewicht van 41 gram voel je dit apparaatje amper zitten. In de horlogekast van 45 millimeter is er een 1,2inch-kleurenscherm van 240 × 240 pixels verwerkt. Het display is voorzien van Gorilla Glass en gaat dus niet zomaar stuk. Verder is de behuizing waterdicht tot een diepte van vijftig meter. In het menu staan er ruim 150 sportprofielen voor je klaar. Fijn is dat deze smartwatch ook allerlei 'exotische' sporten ondersteunt, zoals (kite)surfen, rolschaatsen en skiën. Zodra je een keuze hebt gemaakt, monitort de Pacer Pro diverse sportieve prestaties.

Onder de motorkap bevindt zich een gps-chip, zodat deze smartwatch overal ter wereld je locatie kan bepalen. Handig is dat je routes van de bekende app Komoot kunt synchroniseren. Kijk voor routeaanwijzingen voortaan op je pols. Verder werkt de Pacer Pro ook naadloos met de veelgebruikte sport-app Strava samen. Hoewel Polar in zijn eigen webwinkel een tarief van 349,90 euro hanteert, vragen diverse andere bekende webshops minder dan tweehonderd euro. Kies tussen de kleurstellingen zwart, wit en goud.

Samsung Galaxy Fit3

De Samsung Galaxy Fit3 schaf je voor minder dan zes tientjes aan! Dit goedkope sporthorloge is te koop in de kleurstellingen zwart, zilver-wit en roze. Ondanks zijn lage prijskaartje toont het langwerpige 1,6inch-amoledscherm van 256 × 402 pixels diverse gegevens. Zo zie je hoeveel stappen je hebt gezet. De achterzijde van de horlogekast heeft ook nog sensoren om je bloedzuurstof en hartslag te meten. Druk aan de zijkant op de homeknop en kies uit ruim honderd sportoefeningen. De Galaxy Fit3 analyseert desgewenst ook je slaapgedrag. Maak je onverhoopt een lelijke uitglijder? Dankzij valdetectie schakelt de polsassistent jouw SOS-contactpersonen in.

Dit lichtgewicht sporthorloge van 18,5 gram neem je overal mee naartoe. De IP68-gecertificeerde behuizing is namelijk volledig waterdicht. Verbind de Galaxy Fit3 via bluetooth met een smartphone voor nog meer functies. Je kunt dan bijvoorbeeld de muziekweergave bedienen en zien wie er belt. De smartwatch toont ook inkomende berichten. De oplaadbare batterij van 208 mAh gaat op een enkele acculading volgens Samsung tot dertien dagen mee.

▼ Volgende artikel
5 redenen waarom citroen een wondermiddel is voor je was én je wasmachine
© africaimages.com (Olga Yastremska, Africa Images)
Huis

5 redenen waarom citroen een wondermiddel is voor je was én je wasmachine

Dat een wasmachine zonder moeite vuile was schoon krijgt, spreekt voor zich. Toch kan een kleine natuurlijke hulp extra verschil maken. Geen chemisch middel, maar iets wat je waarschijnlijk al in huis hebt: citroensap. Dat zorgt voor een frissere was, een schonere trommel en een beter onderhouden machine.

In dit artikel

Citroensap blijkt niet alleen handig in de keuken, maar ook tijdens het wassen. Het natuurlijke zuur (citroenzuur, inderdaad) helpt zeepresten verwijderen, voorkomt geurtjes en houdt wit echt wit. Daarnaast verzacht het hard water en maakt het wasverzachters overbodig. In dit artikel lees je hoe en waarom citroen zo'n krachtig hulpmiddel is voor zowel je kleding als je wasmachine.

Lees ook: Vetluis in je wasmachine? Zo kom je er vanaf!

Hoewel de meeste wasmachines hun werk prima doen, kun je ze met een beetje citroensap een handje helpen. Dit natuurlijke zuur werkt verrassend effectief tegen vuil, kalk en bacteriën. Hieronder lees je vijf manieren waarop citroen je was én je machine schoner, frisser en duurzamer maakt.

1. Verwijdert zeepresten

Na het wassen blijft er vaak wat wasmiddel of wasverzachter achter in de trommel of in je kleding. Het gevolg? Je wasmachine kan muf gaan stinken, net zoals de was die uit zo'n machine komt. Een scheutje citroensap in het bakje voor de wasverzachter helpt om die resten los te weken. Zo blijft je wasmachine schoon en ruikt je was écht fris.

2. Neutraliseert nare geuren

Citroensap werkt licht antibacterieel en neutraliseert geuren. Dat is vooral handig bij sportkleding, handdoeken of keukenlinnen dat snel minder fris ruikt. Citroen maakt je was dus niet alleen schoner, maar ook frisser.

©africa-studio.com (Olga Yastremska and Leonid Yastremskiy)

3. Werkt tegen hard water

Woon je in een gebied met hard water, dan merk je dat wasmiddel minder goed schuimt en kleding stugger aanvoelt. Citroenzuur bindt kalkdeeltjes, waardoor het water zachter wordt en het wasmiddel beter zijn werk doet. Zo bescherm je zowel je kleding als de binnenkant van je machine tegen kalkaanslag.

🍋 Onderhoudstip: laat eens per maand een lege wasmachine draaien op 60 graden met een scheut citroensap. Zo voorkom je kalkaanslag en blijft de binnenkant fris.

4. Houdt wit écht wit

Citroensap heeft een mild blekend effect dat witte kleding helderder maakt zonder het risico van verkleuring. Vooral fijn voor lakens, T-shirts en handdoeken. Anders dan chloor is citroensap veilig voor de meeste stoffen* en vriendelijker voor je huid én het milieu.

*Maar niet voor alle stoffen

Citroensap is een zuur en daardoor minder geschikt voor zijde, wol en linnen. Deze natuurlijke vezels reageren gevoelig op zuren en kunnen door herhaald contact hun glans of structuur verliezen. Ook bij kleding met metalen details (zoals ritsen of knopen) is voorzichtigheid geboden, omdat zuur oxidatie kan versnellen.

5. Zorgt voor zachtere kleding

Heb je snel last van wasverzachter of vind je de geur te sterk? Citroensap verzacht het water op een natuurlijke manier, zonder kunstmatige toevoegingen. Zo blijft je kleding soepel en zacht, ook zonder de synthetische stoffen die in veel wasverzachters zitten. Dat is prettiger voor gevoelige huid én beter voor het milieu, omdat er minder chemische resten in het afvalwater terechtkomen.

Zo gebruik je het: voorbeeldwas

Wil je het zelf proberen? Zo doe je dat veilig:

Voor een volle trommel witte of lichte was giet je een half kopje citroensap (ongeveer 120 ml) in het vakje van de wasverzachter. Gebruik je gewone wasmiddel, maar sla extra bleek of wasverzachter over. Was op 40 graden en haal je was direct uit de machine zodra het programma klaar is.

Tot aan de laatste druppel uitgeperst...

.. dat lukt alleen met een goede juicer (ook voor sinaasappels!)