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
Apple Experience op 4 maart: verwacht nieuwe MacBooks
© Apple
Huis

Apple Experience op 4 maart: verwacht nieuwe MacBooks

Apple organiseert op woensdag 4 maart een "speciale" Apple Experience. Het evenement is waarschijnlijk bedoeld om nieuwe MacBooks uit de doeken te doen.

Diverse journalisten hebben uitnodigingen ontvangen voor het evenement, dat op 4 maart vanaf 15:00 uur Nederlandse tijd tegelijk in New York, Londen en en Shanghai plaatsvindt. Het is waarschijnlijk dat de gasten daar een eerste blik krijgen op een aantal nieuwe Apple-producten, die hoogstwaarschijnlijk rond hetzelfde moment ook op internet onthuld worden.

Nieuwe MacBooks, iPhones en iPads

Zoals we onlangs al meldden heeft Apple volgens geruchten nieuwe producten in de maak, waaronder een nieuwe, goedkopere MacBook gericht op studenten. Deze zouden in de kleuren geel, groen en blauw komen, die dus ook op de uitnodiging van het evenement zijn te zien. De laptops zouden een A18 Pro-chip krijgen - een smartphonechip dus. Ook nieuwe MacBook Pro- en Air-modellen behoren tot de mogelijkheden, die volgens geruchten op de M5 Pro- en M5 Max-chips gaan lopen, alsmede nieuwe iPads.

Verder heeft Apple volgens geruchten de iPhone 17e in de maak, de opvolger van de iPhone 16e die waarschijnlijk evenveel gaat kosten: 599 dollar, oftewel 719 euro. De e-modellen van iPhone zijn betaalbaardere versies. Toch zou de 17e enkele verbeteringen ten opzichte van de 16e kennen. Zo zou er een A19-chip in de iPhone 17e zitten, een chip die ook in de duurdere, reguliere iPhone-modellen voorkomt. Verder zou de 17e ook Apple's 5G-chip bevatten, net zoals de duurdere iPhones. Het is echter mogelijk dat deze nieuwe iPhone al eerder wordt onthuld.

View post on X
▼ Volgende artikel
Waar voor je geld: 5 compacte televisies geschikt voor camper of caravan
© ID.nl
Huis

Waar voor je geld: 5 compacte televisies geschikt voor camper of caravan

Haal je binnenkort je camper of caravan weer van stal? Misschien is dit dan ook het moment om te kijken naar een upgrade. Op een regenachtige dag of tijdens een belangrijke sportwedstrijd is het fijn als je een televisie tot je beschikking hebt. Wij hebben vijf compacte modellen gevonden die geschikt zijn om in een camper of caravan te plaatsen.

LG 24TQ510S-PZ

De LG 24TQ510S-PZ combineert de eigenschappen van een computermonitor met die van een televisie. Het schermtype is Wide Viewing Angle, wat zorgt voor bredere kijkhoeken, zowel horizontaal als verticaal, in vergelijking met standaard panelen. Dit model draait op het webOS-platform, waarmee je toegang hebt tot een interface met diverse apps. Een onderscheidende specificatie is de ondersteuning voor AirPlay 2, waarmee je het scherm van Apple-apparaten kunt spiegelen. Ook Screen Share voor Android-apparaten via Miracast is geïntegreerd.

Het geluid wordt verzorgd door twee 5 watt speakers. Voor externe apparatuur zijn er twee HDMI-ingangen beschikbaar en een optische audio-uitgang. De resolutie bedraagt 1366 x 768 pixels en de helderheid van het paneel is gespecificeerd op 250 cd/m². Er is geen aparte 12-volt adapter meegeleverd, dus dit model werkt standaard op netstroom. Je caravan of camper moet deze optie dus bieden.

Salora 32MBA300

Salora 32MBA300 biedt jou een beeldscherm met een formaat van 32 inch met een LED-scherm. Het heeft een Full HD-resolutie en een standaard beeldfrequentie van 50 Hz. Voor de stroomvoorziening is er een specifieke 12-volt aansluiting aanwezig op de achterzijde van het toestel. Je maakt met deze televisie gebruik van het Android TV-platform, waarmee je via de ingebouwde wifimodule verbinding kunt maken met het internet voor het gebruiken van applicaties. Het delen van media vanaf je eigen mobiele apparaten doe je via de geïntegreerde Google Cast-functie.

De hardware is tevens voorzien van een DVB-T2/C/S2-tuner voor het ontvangen van verschillende soorten televisiesignalen. Daarbij kun je zenderlijsten direct inladen via het Canal Digitaal Fast Scan-systeem en is er ondersteuning voor de smartcards van Ziggo. Je kunt externe randapparatuur verbinden via de twee aanwezige HDMI-poorten, terwijl de Bluetooth-functionaliteit je de optie geeft om audiosignalen draadloos naar luidsprekers of een koptelefoon te sturen.

Samsung 24F6000F

Als je kiest voor de Samsung 24F6000F, krijg je een scherm met een Full HD-resolutie van 1920 bij 1080 pixels. Dit 2025-model is uitgerust met de Hyper Real Picture Engine en ondersteunt HDR voor het weergeven van content met een hoog dynamisch bereik. Het besturingssysteem is Tizen, dat fungeert als hub voor alle smart-functies en apps. Qua geluid ondersteunt de televisie Object Tracking Sound Lite (OTS Lite), een techniek die het geluid virtueel de actie op het scherm laat volgen.

Voor connectiviteit zijn er twee HDMI-poorten en een USB-poort aanwezig. Daarnaast beschikt het toestel over Bluetooth 5.2 en WiFi 5 voor draadloze verbindingen. Het scherm kan worden opgehangen met een VESA-beugel van 100 bij 100 millimeter. Dit model heeft geen specifieke 12-volt aansluiting en is ontworpen voor gebruik op het reguliere stroomnet.

Lenco LED-3263BK

Deze Lenco LED-3263BK werkt op basis van het Android Smart TV-besturingssysteem. Je navigeert bij dit toestel door een interface die via een wifi-module verbinding maakt met het netwerk voor de verwerking van digitale streams en gedownloade applicaties. De weergave van deze visuele informatie gebeurt op een LED-paneel met een beeldschermdiagonaal van 32 inch.

Dit apparaat heeft een ingebouwde voeding die geschikt is voor laagspanning, en je ontvangt bij het product de benodigde 12-volt autoadapter. Hiermee sluit je de televisie direct aan op de gelijkstroomcircuits van het vrijetijdsvoertuig. Wat betreft de fysieke aansluitmogelijkheden heb je bij dit model de beschikking over drie afzonderlijke HDMI-poorten aan de zijkant of achterzijde. Dit geeft je de ruimte om meerdere externe bronnen, zoals een satellietontvanger en een losse mediaspeler, gelijktijdig verbonden te houden zonder dat je steeds de kabels hoeft te verwisselen. De televisie verwerkt je opdrachten en instellingen volgens de netwerkprotocollen van het ingebouwde platform.

MEDION MD824000

Deze betaalbare MEDION MD824000 levert beeld via een LED-LCD paneel dat een diagonaal heeft van 24 inch, wat in centimeters neerkomt op 59,9. Je ziet de grafische beelden op dit scherm geprojecteerd in een Full HD-resolutie. De interne hardware omvat een triple tuner, waarmee je zelfstandig de televisiesignalen uit de ether, via de kabel of via een satellietschotel binnenhaalt.

Het stroomverbruik van de televisie valt tijdens werking in de categorie energieklasse E. Voor het gebruik in de camper of caravan tijdens je reis gebruik je de speciale 12-volt adapter die bij de televisie in de verpakking zit. Je sluit eventuele randapparatuur aan op dit model via de ene aanwezige HDMI-poort, terwijl er ook een USB-aansluiting in het toestel verwerkt zit.