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
HBO werkt aan Baldur's Gate-tv-serie met The Last of Us-showrunner
Huis

HBO werkt aan Baldur's Gate-tv-serie met The Last of Us-showrunner

HBO heeft The Last of Us-showrunner Craig Mazin ingeschakeld om een televisieserie te maken gebaseerd op Baldur's Gate.

Dat meldt Deadline. Mazin is vooral bekend van de miniserie Chernobyl, maar heeft de eerste twee seizoenen van gameverfilming The Last of Us ook gemaakt samen met Neil Druckmann, die de games zelf ontwikkeld heeft bij Naughty Dog.

Mazin zou de Baldur's Gate-televisieserie creëren, schrijven en draaiende houden. Jacqueline Lesko, Cecil O'Connor en Gabriel Marano zouden ook verbonden zijn aan het project als producenten. Marano representateert daarbij Hasbro Entertainment, de eigenaar van de Baldur's Gate-franchise.

Gebaseerd op Baldur's Gate 3

De serie zou vooral gebaseerd zijn op gebeurtenissen uit Baldur's Gate 3 (dat verkrijgbaar is op pc, PlayStation 5 en Xbox Series-consoles) en beginnen bij waar het spel is beëindigd. Mazin zou daarbij volledige vrijheid hebben om het verhaal te bedenken. Diverse personages uit de game zouden ook in de serie voorkomen.

De Baldur's Gate-gamefranchise is weer gebaseerd op het populaire rollenspel Dungeons and Dragons. Met de derde Baldur's Gate-game enkele jaren geleden - ontwikkeld door het Belgische Larian - wist de franchise pas echt door te breken bij het grote publiek.

De Dungeons and Dragons-IP waar Baldur's Gate op is gebaseerd werd gemaakt door Wizards of the Coast, en Chris Perkins, die tot 2025 aan het hoofd van verhalen bij het bedrijf stond, zal dan ook als raadgever betrokken zijn bij de aankomende tv-serie.

Mazin werkt op dit moment nog aan de HBO-serie The Last of Us, waarvan vorig jaar het tweede seizoen is uitgekomen. De ceo van HBO gaf onlangs aan dat hij vermoedt dat het derde seizoen van de serie de laatste wordt.

Mazin heeft in ieder geval een goede reputatie op het gebied van het maken van series, voornamelijk gebaseerd op Chernobyl en het eerste seizoen van The Last of Us. Het tweede seizoen van bovengenoemde serie werd echter wisselender ontvangen.

Nieuw op ID: het complete plaatje

Misschien valt het je op dat er vanaf nu ook berichten over games, films en series op onze site verschijnen. Dat is een bewuste stap. Wij geloven dat technologie niet stopt bij hardware; het gaat uiteindelijk om wat je ermee beleeft. Daarom combineren we onze expertise in tech nu met het laatste nieuws over entertainment. Dat doen we met de gezichten die mensen kennen van Power Unlimited, dé experts op het gebied van gaming en streaming. Zo helpen we je niet alleen aan de beste tv, smartphone of laptop, maar vertellen we je ook direct wat je erop moet kijken of spelen. Je vindt hier dus voortaan de ideale mix van hardware én content.

▼ Volgende artikel
Een 9,4 voor betrouwbaarheid: waarom Hisense wasmachines zo hoog scoren
© Hisense
Huis

Een 9,4 voor betrouwbaarheid: waarom Hisense wasmachines zo hoog scoren

Een wasmachine moet doen wat hij moet doen, toch? Verder hoef je er niet veel van te verwachten, maar bij Hisense denken ze daar toch anders over. De wasmachines zijn voorzien van allerlei handige functies. Niet voor niets heeft de Consumentenbond het merk Hisense een cijfer van 9,4 gegeven op het gebied van betrouwbaarheid. Waar komt dat door?

Partnerbijdrage - In samenwerking met Hisense

Wanneer je op zoek gaat naar een nieuw huishoudelijk apparaat, dan zoek je niet alleen op specificaties of prijs, maar kijk je ook steeds vaker naar wat anderen ervan vinden. Bijvoorbeeld gebruikersreviews op vergelijkingssites.

Maar evenzo belangrijk: wat vinden leden van een gerenommeerde instantie van een bepaald product? De Consumentenbond test al sinds de jaren '50 van de vorige eeuw producten en doet dat met maar liefst 2000 producten per jaar. De leden van de Consumentenbond zijn kritisch; ze zijn niet voor niets lid.

Wasmachines leven langer...

Hisense maakt ook al geruime tijd huishoudelijke apparatuur, zoals koelkasten, drogers en wasmachines. En laat het nou net in die laatste categorie goed scoren: wasmachines van Hisense worden door consumenten bij een groot Europees onderzoek met ruim 30.000 respondenten beoordeeld met een 9.4 voor betrouwbaarheid. Een hoge score die je graag van de daken schreeuwt. En met een totaalscore 9 op alle gebieden komt ook hier Hisense goed uit de bus. Wat betekent dat concreet? Consumenten ervaren bij Hisense wasmachines de minste problemen ten opzichte van andere merken.

Wat is er onderzocht door de Consumentenbond?

Hisense is het betrouwbaarste merk. Gebruikers melden de minste problemen bij deze wasmachines. Daarbij let de Consumentenbond op de leeftijd van het apparaat en hoeveel hij is gebruikt.

Om te weten hoe tevreden consumenten uiteindelijk zijn met hun wasmachine in de praktijk voert de Consumentenbond dit grote panelonderzoek uit onder 30.000 wasmachinegebruikers. Door middel van vragenlijsten aan consumenten in 10 verschillende landen. De resultaten zijn gebaseerd op persoonlijke ervaringen en oordelen van consumenten. De resultaten gaan niet over een specifiek model, maar over het merk in het algemeen. Daarbij zijn eventuele verschillen tussen de landen, klasse van het apparaat en het type apparaat meegewogen.

Handige functies

Hisense wasmachines zijn innovatief, zuinig en zijn bovendien ook nog eens erg opvallend en mooi vormgegeven. Wit voert bij vrijwel al dit soort apparaten de boventoon, maar Hisense voegt opvallende vormgeving toe, zoals donker glas voor de laaddeur en een matzwarte afwerking bij de bedieningsknoppen.

Ook een groot voordeel is dat alle nieuwste Hisense wasmachines een zuinig energielabel A hebben, waardoor ze tijdens de wasbeurten niet alleen weinig water verbruiken, maar ook helpen besparen op je energierekening.

Alle Hisense wasmachines kennen natuurlijk alle basisfunctionaliteiten, zoals wassen met verschillende programma's, ladingen, temperaturen en de snelheid van het centrifugeren. De nieuwste Hisense-modellen uit de 5i-serie gaan nog een stapje verder, die machines zijn bijvoorbeeld uitgerust met deze handige functies:

iPlay™: Bediening met een glimlach
Vergeet ingewikkelde knoppen en onduidelijke symbolen. Met het slimme iPlay™ kleurentouch-display bedien je jouw wasmachine net zo intuïtief als je smartphone. In je eigen taal swipe je soepel door de programma's, check je de voortgang en pas je instellingen aan. Het ziet er niet alleen strak en modern uit, maar maakt elke wasbeurt stressvrij en overzichtelijk.

iFit™: Groots wassen, compact formaat
Woon je in een appartement of heb je een compacte keuken? Geen probleem. De iFit™ design-filosofie bewijst dat je geen enorme machine nodig hebt voor grote prestaties. Door de slimme, ondiepe behuizing past de machine perfect in kleinere ruimtes, zonder dat je inlevert op trommelcapaciteit. Je geniet dus van een slank design, maar kunt nog steeds die grote lading was in één keer draaien.

iJet™: De ultieme vlekkenverwijderaar
Voor hardnekkige vlekken hoef je niet meer te weken of te schrobben. De krachtige iJet™-technologie spuit water met hoge druk direct diep in de textielvezels. Hierdoor worden vuil en vlekken veel effectiever losgeweekt dan bij een traditionele wasbeurt. Het resultaat is een diepere reiniging en een verbluffend frisse was, zelfs als de kleding flink vies is geworden.

Auto Dose: Nooit meer gokken met wasmiddel
Te veel wasmiddel is slecht voor je kleding, te weinig zorgt voor vlekken. Met Auto Dose hoef je daar nooit meer over na te denken. Het systeem weegt de lading en doseert automatisch exact de juiste hoeveelheid wasmiddel en wasverzachter. Dat is niet alleen super makkelijk, het bespaart je ook geld én het is beter voor het milieu.

Laat de wasmachine het denkwerk doen

Heb je geen zin om te puzzelen welk programma het beste is? Zet hem op het Autoprogramma. Slimme sensoren scannen je wasgoed en passen de waterhoeveelheid, temperatuur en tijdsduur automatisch aan. Zo was je altijd zo efficiënt mogelijk, zonder verspilling van water of energie, en ben je verzekerd van een perfect schoon resultaat.

Stoom / Allergy Care: Hygiënisch schoon en zacht
Zeker voor mensen met een gevoelige huid, allergieën of jonge kinderen is dit een uitkomst. De Steam/Allergy Care-technologie gebruikt stoom om diep in de stoffen door te dringen. Dit elimineert 99,9% van de allergenen, bacteriën en nare geurtjes. Je kleding komt niet alleen hygiënisch schoon uit de trommel, maar voelt ook heerlijk zacht aan en heeft minder kreukels.

Quick Wash: Razendsnel opgefrist
Heb je haast of wil je snel even dat ene favoriete shirt opfrissen voor vanavond? De Quick Wash-functie is je redder in nood. In een handomdraai heb je frisgewassen kleding. Ideaal voor kleine wasjes die niet heel vuil zijn, maar wel even die frisse boost nodig hebben. Zo bespaar je kostbare tijd op drukke dagen.

Quicker: Versnel je favoriete programma
Soms wil je een volledig wasprogramma draaien, maar heb je gewoonweg de tijd niet om uren te wachten. Met de Quicker-optie kun je diverse standaardprogramma's aanzienlijk inkorten. Je levert niets in op wasresultaat, maar bent wel een stuk sneller klaar. Maximale flexibiliteit voor een druk leven.

Wasmachines op Kieskeurig.nl

Natuurlijk zijn alle wasmachines van Hisense ook terug te vinden op Kieskeurig.nl, waaronder de modellen uit de nieuwste 5i serie.

Bekijk hier alle wasmachines van Hisense op Kieskeurig.nl