ID.nl logo
Zo kun je programmeren in Python - Deel 10
© PXimport
Huis

Zo kun je programmeren in Python - Deel 10

Tot nu toe leerden we je programmeren, maar we leerden je geen programma schrijven. Het verschil? Programmeren doe je voor jezelf; een programma schrijven voor iemand anders. Je wilt dat een gebruiker eenvoudig een programma kan oproepen met opties, een mooi resultaat te zien krijgt en ook hulp kan opvragen als hij niet weet hoe hij jouw programma moet gebruiken. Dat alles zien we in deze laatste les van Python.

In deze tiende les ronden we stilaan af. Tot nu toe leerde je allerlei aspecten van Python kennen en die brengen we in deze les allemaal samen. Op het einde van deze les heb je een programma dat je op de opdrachtregel kunt uitvoeren, dat argumenten afhandelt, foutmeldingen geeft en tekst in kleur toont.

Argumenten op de opdrachtregel

In les 3 al leerde je om invoer van de gebruiker te vragen met de functie input. En hoewel we ons programma daar in Thonny uitvoerden, vertelden we daar ook al dat je het programma in Windows, Linux of macOS ook op de opdrachtregel kunt uitvoeren met:

python3 naamvanprogramma.py

Maar van programma’s op de opdrachtregel verwachten we dat je er ook argumenten aan kunt doorgeven, zoals DIR /s in Windows of ls -R in Linux en macOS. Hoe zorgen we dat onze eigen programma’s dat ook kunnen? Daar heeft Python gelukkig een oplossing voor met de module argparse in de standaardbibliotheek. In deze les schrijven we een programma dat de module palindroom uit les 6 gebruikt om van woorden te controleren of ze een palindroom zijn, en dat programma gaan we enkele argumenten geven.

Argumenten toevoegen

Als eerste willen we dat het programma ons vertelt of een woord dat we als argument aan het programma doorgeven een palindroom is. Dat ziet er zo uit:

from argparse import ArgumentParser

from palindroom import is_palindroom

parser = ArgumentParser(description='Bepaal of een woord een palindroom is.')

parser.add_argument("-w", "--woord", required=True, help="Het woord waarvan je wilt controleren of het een palindroom is")

args = parser.parse_args()

resultaat = is_palindroom(args.woord)

if resultaat:

print("Het woord '{}' is een palindroom.".format(args.woord))

else:

print("Het woord '{}' is geen palindroom.".format(args.woord))

Je ziet dat met argparse werken niet zo moeilijk is. Je maakt eerst een ArgumentParser-object aan met de beschrijving van je programma. Daarna voeg je een argument toe (in ons geval in een korte versie -w en een lange versie --woord) en lees je met parser.parse_args() de argumenten uit die de gebruiker op de opdrachtregel ingegeven heeft. De inhoud van het argument --woord vind je dan in de variabele args.woord.

Heel wat functionaliteit

Voer het programma nu eens uit:

$ python3 palindroomchecker.py -w parterretrap

Het woord 'parterretrap' is een palindroom.

$ python3 palindroomchecker.py -w parterretrak

Het woord 'parterretrak' is geen palindroom.

Merk op: we krijgen heel wat functionaliteit ‘gratis’ omdat argparse die voor ons uitvoert. Zo krijg je een foutmelding als je na -w geen woord opgeeft of als je het programma zonder het argument -w uitvoert (omdat we het argument toegevoegd hebben met required=True). En we krijgen ook het argument --help er gratis bij. Als je dit opgeeft, toont het programma de beschrijving van je programma en van alle argumenten die je gedefinieerd hebt:

$ python3 palindroomchecker.py -w

usage: palindroomchecker.py [-h] -w WOORD

palindroomchecker.py: error: argument -w/--woord: expected one argument

$ python3 palindroomchecker.py

usage: palindroomchecker.py [-h] -w WOORD

palindroomchecker.py: error: the following arguments are required: -w/--woord

$ python3 palindroomchecker.py --help

usage: palindroomchecker.py [-h] -w WOORD

Bepaal of een woord een palindroom is.

optional arguments:

-h, --help

-w WOORD, --woord WOORD

Het woord waarvan je wilt controleren of het een

palindroom is

Argumenten die elkaar uitsluiten

We willen het programma nu uitbreiden zodat je de palindroomtest ook één voor één kunt uitvoeren op alle regels in een tekstbestand. Daarvoor voegen we het argument -b toe. Maar het heeft geen zin om zowel -w als -b tegelijk op te geven, dus we moeten kunnen aangeven dat beide argumenten elkaar uitsluiten. Ook dat kan eenvoudig met argparse:

parser = ArgumentParser(description='Bepaal of een woord een palindroom is.')

bron = parser.add_mutually_exclusive_group(required=True)

bron.add_argument("-w", "--woord", help="Het woord waarvan je wilt controleren of het een palindroom is")

bron.add_argument("-b", "--bestand", help="Het bestand met woorden waarvan je wilt controleren of ze een palindroom zijn")

args = parser.parse_args()

Met parser.add_mutually_exclusive_group maken we een groep argumenten aan die elkaar uitsluiten. Met required=True van die methode zegen we dat de gebruiker exact een van de argumenten uit de groep moet gebruiken. Daarna voegen we onze argumenten aan die groep toe in plaats van aan het object parser.

Als we nu de controle of een woord een palindroom is en het tonen van het resultaat afsplitsen in een afzonderlijke functie toon_resultaat (dat laten we als oefening over aan jou), kunnen we beide gevallen van invoer (een woord op de opdrachtregel of woorden in een bestand waarvan je de naam op de opdrachtregel doorgeeft) eenvoudig afhandelen:

if args.woord:

toon_resultaat(args.woord)

else:

with open(args.bestand, 'rt') as bestand:

for regel in bestand:

toon_resultaat(regel.strip())

Probeer dit maar eens uit. Je zult zien dat je programma een foutmelding geeft als je geen of juist allebei de argumenten opgeeft.

In kleur

Je kunt ook kleuren toevoegen aan de uitvoer van je programma. Daarvoor gebruiken we het pakket colorama, dat je eerst nog met pip3 (zie de vorige les) dient te installeren omdat het niet tot de standaardbibliotheek van Python behoort. We importeren enkele functies uit de module en initialiseren daarna colorama:

from colorama import init, Fore, Back, Style

init()

Daarna kun je spelen met de voorgrondkleur, achtergrondkleur en helderheid van de tekst:

print(Fore.RED + 'Rode tekst...')

print(Back.GREEN + '... met een groene achtergrond.')

print(Style.RESET_ALL + Fore.RED + Style.DIM + 'Dof...')

print(Fore.GREEN + Style.BRIGHT + '... of juist helder.')

print(Style.RESET_ALL)

print('En nu weer normaal!')

Op het einde van je programma voeg je het best altijd deze regel toe:

deinit()

Die reset de uitvoer, zodat de opdrachtregel na het uitvoeren van je programma niet plots helemaal in het rood is omdat je de voorgrondkleur bent vergeten terug te zetten!

Optionele argumenten

Die kleuren gaan we in onze palindroomchecker alleen gebruiken als je een optioneel argument --kleur aan je programma doorgeeft. Zo’n optioneel argument voegen we als volgt toe:

parser.add_argument("-k", "--kleur", action="store_true", help="Toon het gevraagde woord in kleur")

In ons programma kunnen we dan op de aanwezigheid van het optionele argument testen met if args.kleur:. Het if-else-blok uit ons originele programma vervangen we dan door de volgende geneste structuur:

if resultaat:

if args.kleur:

palindroom = Fore.GREEN + Style.BRIGHT + args.woord + Style.RESET_ALL

else:

palindroom = args.woord

print("Het woord '{}' is een palindroom.".format(palindroom))

else:

if args.kleur:

geen_palindroom = Fore.RED + Style.DIM + args.woord + Style.RESET_ALL

else:

geen_palindroom = args.woord

print("Het woord '{}' is geen palindroom.".format(geen_palindroom))

Fouten afhandelen

Als je nu in ons programma dat het argument -b voor een bestand ondersteunt een bestandsnaam doorgeeft die niet ondersteund is, breekt ons programma af met de volgende foutmelding en dan de bestandsnaam:

FileNotFoundError: [Errno 2] No such file or directory:

Bovendien krijg je ook de regel code te zien waarin het fout loopt. Voor een gebruiker die niets van Python kent, is dat nogal intimiderend. We gaan dus met een try-catch-blok die exception afhandelen (zie les 5) en een gebruiksvriendelijkere foutmelding tonen.

Voor we dat doen, moet je nog iets weten. Windows, Linux en macOS kennen drie ‘virtuele bestanden’ die belangrijk zijn op de opdrachtregel: stdin (de invoer van het toetsenbord), stdout (de normale uitvoer van het programma) en stderr (de foutenuitvoer van het programma). Standaard tonen we met print de uitvoer op stdout, maar met file=sys.stderr leiden we de foutenuitvoer om naar stderr. Dat ziet er dan als volgt uit (vergeet niet de regel import sys in het begin van je programma):

if args.woord:

toon_resultaat(args.woord)

else:

try:

with open(args.bestand, 'rt') as bestand:

for regel in bestand:

toon_resultaat(regel.strip())

except FileNotFoundError as fout:

print('Bestand {} niet gevonden'.format(fout.filename), file=sys.stderr)

We proberen hier dus het bestand te openen. Als dat niet lukt, vangen we een exception FileNotFoundError af. Merk op: met except FileNotFoundError as fout: kennen we de exception toe aan de variabele fout, zodat we nuttige informatie uit dit object kunnen opvragen. In dit geval is dat de bestandsnaam waarover het gaat (fout.filename). Die tonen we in de foutmelding aan de gebruiker, zodat die kan nakijken waarom het bestand niet bestaat.

De meldingen die we op stderr tonen, verschijnen overigens gewoon in de opdrachtregel zoals andere tekst die je met print toont. Maar het verschil is belangrijk. Zo kunnen andere programma’s bijvoorbeeld je foutmeldingen op stderr er uitfilteren.

Samenvatting

In deze les heb je geleerd hoe je een volledig Python-script ontwikkelt dat je op de opdrachtregel kunt uitvoeren. Je kunt argumenten afhandelen en foutmeldingen geven en je weet hoe je van kleur gebruik kunt maken in je programma. Daarmee sluiten we deze lessenreeks af. Je bent nu klaar om je eigen Python-programma’s te schrijven!

Opdracht

Voeg een optioneel argument ‘stil’ aan je programma toe dat alleen uitvoer geeft als het gevraagde woord een palindroom is, zodat je snel palindromen in grote bestanden kunt vinden.

Uitwerking

Het optionele argument voeg je eenvoudig als volgt toe: parser.add_argument("-s", "--stil", action="store_true", help="Toon het gevraagde woord als het een palindroom is; toon niets als het geen palindroom is.") Daarna definiëren we de functie toon_resultaat als volgt: def toon_resultaat(woord): resultaat = is_palindroom(woord) if resultaat: if args.stil: print(woord) else: print("Het woord '{}' is een palindroom.".format(woord)) else: if not args.stil: print("Het woord '{}' is geen palindroom.".format(woord)) In deze functie controleren we achtereenvolgens of het woord en palindroom is en of de gebruiker het optionele argument ‘stil’ heeft ingevoerd. Als we een palindroom hebben en het programma werkt stil, tonen we alleen het palindroom. Als we een palindroom hebben en het programma werkt niet stil, vertellen we in een hele zin dat het om een palindroom gaat. Als we geen palindroom hebben en het programma werkt stil, tonen we niets. En als we geen palindroom hebben en het programma werkt niet stil, vertellen we in een hele zin dat het niet om een palindroom gaat.

Cheatsheet

Stderr: de foutenuitvoer van een programma Stdout: de normale uitvoer van een programma

▼ Volgende artikel
Van speelgazon tot schaduwtuin: zo kies je de juiste grassoort
© africaimages.com (Olga Yastremska, Africa Images)
Huis

Van speelgazon tot schaduwtuin: zo kies je de juiste grassoort

Een gazon is meer dan een stukje groen. Het kan een speelplek zijn voor kinderen of juist vooral de blikvanger zijn in een strak aangelegde tuin. Soms ligt het vol in de zon, soms grotendeels in de schaduw. Voor elke situatie is er een passend graszaadmengsel. Wat past het best bij jouw tuin?

Graszaad is altijd een mengsel Graszaad bestaat uit een mix van verschillende grassoorten. Elke soort heeft zijn eigen eigenschappen: de ene soort groeit snel, de andere is fijn van structuur, weer een andere herstelt snel en goed. Door deze eigenschappen te combineren, ontstaat een mengsel dat goed is afgestemd op de specifieke omstandigheden in de tuin.

Lees ook: Groener gras? Maaien en onderhouden doe je zo

Wat voor graszaad je nodig hebt, hangt helemaal af van het soort grasveld dat je wilt. Voor een veldje waarop je kinderen lekker kunnen ravotten en een balletje trappen heb je ander gras nodig dan voor een gazon dat vooral bedoeld is voor de sier. Hieronder lees je per toepassing welke grassoorten het meest geschikt zijn.

Speelveld: stevig en snel herstellend

Een gazon waarop gespeeld, gelopen of gevoetbald wordt, moet vooral sterk zijn. Het gras moet tegen een stootje kunnen én zich snel herstellen. Daarvoor heb je een mengsel nodig met veel Engels raaigras (Lolium perenne). Dit gras kiemt snel en vormt stevige sprieten. Het is goed bestand tegen intensief gebruik en groeit snel terug als het beschadigd raakt. Vaak wordt het aangevuld met veldbeemdgras (Poa pratensis), dat ondergronds uitlopers vormt en zo kale plekken opvult. Samen zorgen deze soorten voor een duurzaam speelgazon dat veel belasting aankan.

Siergazon: fijn, traag groeiend en egaal

Voor een siergazon gelden weer andere zaken. Het moet vooral fijn van structuur zijn, gelijkmatig groeien en een egaal, verzorgd beeld geven. Voor dit type gazon zijn roodzwenkgras (Festuca rubra) en struisgras (Agrostis capillaris) geschikt. Deze grassoorten groeien langzaam en blijven laag, waardoor je minder vaak hoeft te maaien. Ze vormen een dichte mat van fijne sprietjes die er netjes uitziet, vooral bij regelmatig onderhoud. Een siergazon vergt wel iets meer zorg, want het is minder sterk en herstelt trager bij schade.

Schaduwgazon: licht nodig, maar minder zon

In tuinen met veel schaduw, bijvoorbeeld door bomen, heeft gras het moeilijk. De meeste grassoorten groeien slecht zonder zon, wat ruimte geeft aan mos. Een schaduwgazon moet daarom vooral weinig licht nodig hebben en toch stevig genoeg zijn om een dichte mat te vormen. Mengsels voor schaduw bevatten vaak fijne vormen van roodzwenkgras en soms bosgras (Festuca heterophylla), een soort die beter groeit bij weinig licht. Een kleine hoeveelheid Engels raaigras zorgt voor stevigheid, maar alleen als er dagelijks toch wat zonlicht aanwezig is. Let op: ook schaduwgazon heeft minimaal 2 tot 4 uur daglicht nodig om goed te blijven groeien.

Droge (zand)grond: diep wortelend en hittebestendig

Op lichte zandgrond of op plekken waar je weinig sproeit, heb je gras nodig dat tegen droogte kan. Dit soort gras moet diep kunnen wortelen en niet te snel verdrogen. Mengsels voor droge omstandigheden bevatten vaak een aangepaste selectie van veldbeemdgras en speciaal geselecteerde varianten van Engels raaigras die minder water nodig hebben. Soms wordt er ook hard zwenkgras aan toegevoegd, dat goed bestand is tegen droogte en hitte. Deze soorten wortelen dieper dan gemiddeld, waardoor ze vocht uit lagere lagen kunnen opnemen. Zo blijft je gazon ook bij warme zomers langer groen.

©Elena Elisseeva | Elenathewise

Wanneer en hoe zaai je gras?

De ideale periode om gras te zaaien is in het voorjaar (maart tot mei) of het najaar (september tot half oktober). Dan is de bodem warm genoeg en valt er meestal voldoende regen. Ook tussentijds bijzaaien is mogelijk – bijvoorbeeld als je last hebt van kale plekken of na het verwijderen van mos – zolang de bodemtemperatuur boven de 10 °C ligt en de grond vochtig blijft.

Begin altijd met een goede voorbereiding. Maai het bestaande gras kort, en verwijder mos en dood materiaal door het gazon te verticuteren. Dat kan met een verticuteerhark of een verticuteermachine.

Bij het herstellen van kale plekken hark je de grond los, zodat het zaad goed contact maakt met de aarde. Zaai vervolgens het juiste graszaadmengsel voor jouw situatie. Druk het zaad licht aan, bijvoorbeeld met een plank of de achterkant van een hark. Belangrijk: houd de bodem vochtig tot het gras begint te kiemen. Dat duurt gemiddeld 7 tot 14 dagen, afhankelijk van de soort en temperatuur. Wil je extra bescherming bieden? Strooi dan een dun laagje potgrond of compost over het zaad. Dat helpt tegen uitdroging en beschermt tegen vogels.

Wacht met maaien tot het gras minstens 8 cm hoog is, en gebruik dan een hoge maaihoogte bij de eerste maaibeurt. Zo geef je jonge sprietjes de kans om zich goed te wortelen.

Lees ook: Gras vol mos? Dit wil je weten over het verticuteren van je gazon

Tabel: deze grassoorten heb je nodig

Type gazonEigenschappen grasGeschikte grassoorten
SpeelgazonSterk, snelgroeiend, herstellendEngels raaigras, veldbeemdgras
SiergazonFijn, traaggroeiend, egaalRoodzwenkgras, struisgras, veldbeemdgras
SchaduwgazonGroeiend bij weinig lichtFijn roodzwenkgras, bosgras, beetje raaigras
DroogtebestendigDiep wortelend, hittebestendigVeldbeemdgras, hard zwenkgras, raaigrasvariant

Liever meteen resultaat? Kies voor graszoden Wil je niet wachten tot graszaad kiemt en opkomt? Kies dan voor graszoden. Dat zijn kant-en-klare rollen gras, opgekweekt op een kwekerij en direct klaar voor gebruik. Ideaal als je snel een groen gazon wilt, bijvoorbeeld bij een verhuizing of als je tuin in korte tijd helemaal wordt opgeknapt. Graszoden bestaan meestal uit een stevige combinatie van Engels raaigras en veldbeemdgras. Daardoor zijn ze geschikt voor intensief gebruik én vormen ze snel een dicht tapijt.

Het leggen van graszoden kan van maart tot en met oktober, zolang het niet vriest. Zorg dat de ondergrond egaal, losgemaakt en licht vochtig is. Rol de zoden strak tegen elkaar uit, druk ze goed aan en geef royaal water – zeker in de eerste weken. Na 10 tot 14 dagen zijn ze voldoende vastgegroeid om voor het eerst te maaien.

▼ Volgende artikel
Review Ninja Café Luxe - Barista-ervaring, mits je de tijd neemt
© Ninja
Huis

Review Ninja Café Luxe - Barista-ervaring, mits je de tijd neemt

De markt voor koffiemachines is breed en beweegt snel. Veel apparaten bieden steeds meer functies, van eenvoudige espresso’s tot uitgebreide melk- en cold brew-specialiteiten. De Ninja Café Luxe-serie belooft precies dat: barista-kwaliteit, eindeloze mogelijkheden en gebruiksgemak in één apparaat. Maar maakt dit model die belofte waar in de praktijk?

Uitstekend
Conclusie

De Ninja Café Luxe is vooral geschikt voor koffieliefhebbers die graag zelf de controle houden over het volledige zetproces, bereid zijn om het apparaat goed te leren kennen en de ruimte hebben voor een grotere machine. Wie dat ziet als een leuke uitdaging, haalt met de Ninja Café Luxe een complete koffie-oplossing in huis.

Plus- en minpunten
  • Veelzijdig gebruik
  • Volledig instelbaar
  • Goede bouwkwaliteit
  • Handige accessoires en opbergmogelijkheden
  • Automatisch melkopschuim- en reinigingsprogramma
  • Niet direct intuïtief in gebruik
  • Uitgebreid stappenplan voor eerste gebruik
  • Groot en zwaar apparaat
  • Prijzig

De Ninja Café Luxe combineert een espressomachine, filterkoffiezetter en cold brew-maker in één apparaat. Met de geïntegreerde koffiemolen (25 maalstanden) en tamper stel je de koffie volledig naar wens af.

De machine biedt vijf espresso-opties, vier koffiestijlen en vier melkopschuimstanden – geschikt voor zowel dierlijke als plantaardige melk. Je kiest uit zeven drankformaten, van espresso tot cold brew-specialiteiten zoals iced latte of espresso martini.

Er zijn twee uitvoeringen:

  • De Essential (ES501EU) met 14 instellingen voor gemak en variatie.

  • De Premier (ES601EU) met extra temperatuur- en melkopties voor meer controle.

De Essential kost 449,99 euro, de Premier 549,99 euro. De machine is groot en zwaar (34,4 x 33,6 x 37,2 cm) en weegt 16,65 kilo.

©Ninja

Eerste indruk: wat veel!

Wat fijn is aan huishoudelijke apparaten van Ninja, is dat ze doorgaans gebruiksvriendelijk en intuïtief te bedienen zijn, zo bleek uit eerdere ervaringen. Gebruiksvriendelijk blijkt – na enige tijd – zeker waar, maar intuïtief kunnen we dit apparaat zeker niet noemen direct na het uitpakken. De uitgebreide handleiding, verkorte snelstartgids en een inspiratiegids met allerlei recepten voor de verschillende koffievarianten komen dan ook direct van pas.

©Saskia van Weert

Uit de doos oogt de Ninja Café Luxe direct stevig en professioneel. De afwerking is netjes en het apparaat maakt een solide indruk op het aanrecht. Bij het uitpakken valt op hoeveel accessoires en onderdelen erbij zitten: van filterhouders en melkopschuimer tot een geïntegreerde molen.

Voordat er überhaupt koffie kan worden gezet, dient er een stapsgewijze kalibratie en watermeting te worden gedaan om te bepalen hoe hard het kraanwater is in de eigen regio. De stappen staan duidelijk beschreven in de gids, alle benodigdheden (behalve koffiebonen) zitten bijgesloten in de doos. Dat alles neemt een halfuurtje in beslag, daarna is de machine klaar voor het eerste gebruik.

©Ninja

Espresso drink je natuurlijk niet uit een mok

Een elegant kopje verhoogt de smaakbeleving!

De functies op een rij

De koffiemachine heeft allerlei onderdelen die een eigen plekje hebben in of op de machine. Er zitten drie filterbakjes bij om de gemalen koffie in te doen: eentje voor een enkele hoeveelheid, een wat grotere voor een dubbele hoeveelheid drank en een grote mand voor filterkoffie.

Dan is er het portafilter, oftewel het gedeelte waarin de gemalen koffie plus het gewenste filterbakje gaan, en dat je vastklikt onder de wateruitlaat.

Er is een losse trechter die je gebruikt tijdens het malen van de koffie, en een stamper om de koffie in het bakje samen te drukken. Tot slot is er nog het melkkannetje.

©Saskia van Weert

Links van de machine kun je de trechter en de stamper bewaren, het portafilter kan onder de koffiemaler en het kannetje heeft een vaste plek rechts onder het melktuitje.

Het bedieningspaneel verdient ook wat aandacht. Aan de linkerzijde zit een draaischijf waarmee je de maalgraad van de koffiebonen instelt. Dan is er nog het display met allerlei opties en een draai-/drukknop, en een gedeelte om het soort melkschuim in te stellen. Het bedieningspaneel is duidelijk vormgegeven, maar door het grote aantal opties is het niet direct intuïtief.

Boven op het apparaat is er een warmhoudplaat voor koffiebekers. Aan de achterzijde zit het waterreservoir, bovenin zit een dekseltje om toegang te krijgen tot het bonenreservoir, en geheel rechts zit een klein deurtje waar je de metalen filterbakjes in kunt opbergen.

Kortom: een hoop opties en een hoop uitzoekwerk!

©Saskia van Weert

In gebruik: goed resultaat (na even oefenen)

Bij het apparaat zit een dikke zwart-witte gebruikshandleiding. Het is aan te raden die goed door te nemen en bij de hand te hebben tijdens het leren kennen van het apparaat en de mogelijkheden. Na enige keren wat proberen wordt duidelijk dat de basishandelingen vrij overzichtelijk zijn. Een doorgewinterde thuisbarista zal deze machine vermoedelijk sneller weten te doorgronden.

Allereerst moet het gewenste filterbakje in het portafilter. Je zet de trechter op het filterbakje en zet de machine aan. Je kiest het gewenste programma, bijvoorbeeld espresso. De standaardinstelling is een dubbele shot; dat is eventueel aan te passen in het menu.

Vervolgens hang je het portafilter onder de koffiemaler. Er verschijnen twee getallen in beeld: de ideale maalgraad en de huidige instelling. Via de draaischijf links aan de machine zorg je dat de twee getallen identiek zijn. Je start de maler en neemt het portafilter met gemalen koffie uit de machine. Je stampt de boel aan met de stamper, verwijdert de trechter en bevestigt het portafilter onder de wateruitlaat. Dat doe je door de oranje stip op het filter gelijk te houden met de stip op de machine en het filter stevig naar rechts te bewegen om het te vergrendelen. Dat gaat vrij zwaar.

©Ninja

Dan is het tijd om het koffiezetten te starten met een druk op de draai-/drukknop. Vergeet niet om een passende kop of mok onder het filter te zetten. Er komt een beetje geconcentreerde koffie uit de machine, die wordt aangevuld met heet water om de gewenste sterkte te verkrijgen. Deze stappen zijn gelijk voor vrijwel alle koffiebereidingen – alleen filterkoffie gaat iets anders.

Melkschuim maken

Mocht je cappuccino willen maken, dan doe je dierlijke of plantaardige melk in de melkkan tot aan de streep, kies je de gewenste dikte en laat je de melk warm worden en opschuimen tot een pieptoon aangeeft dat de melk klaar is. Je hoort het kleine mixertje onder in de kan flink tekeergaan en dat levert een prima resultaat op. Na het leeggieten van de kan start een automatisch schoonmaakprogramma.

De smaak van de geteste koffievarianten is prima. De exacte uitkomst hangt uiteraard af van de gebruikte bonen.

©Saskia van Weert

Schoonmaken en onderhoud

Een deel van de accessoires en onderdelen mag gewoon in de vaatwasser. Zoals wel vaker is het vaak beter voor de duurzaamheid om alles op de hand af te wassen. Metalen onderdelen blijven daardoor langer glanzend. De melkopschuimer heeft een eigen reinigingsprogramma voor het binnenwerk en het tuitje, al moet het kannetje natuurlijk wel goed afgewassen worden.

Ninja Café Luxe kopen?

De Ninja Café Luxe is een krachtige en veelzijdige koffiemachine die de serieuze thuisbarista veel te bieden heeft. Met uitgebreide instellingen voor koffie, melk en formaat, en de mogelijkheid om zowel espresso als filterkoffie en cold brews te zetten, is dit apparaat een echte allrounder. De bouwkwaliteit is stevig en professioneel, en het apparaat wordt geleverd met handige accessoires en een eigen reinigingsprogramma voor de melkopschuimer.

Tegelijk vraagt de machine om tijd en aandacht. Het is geen instapmodel voor wie snel en zonder nadenken een kopje koffie wil zetten. De bediening is uitgebreid en vergt oefening, vooral in het begin. Ook neemt het apparaat de nodige ruimte in beslag en zijn er veel onderdelen om mee te werken.

De Ninja Café Luxe is vooral geschikt voor koffieliefhebbers die graag zelf de controle houden over het volledige zetproces, bereid zijn om het apparaat goed te leren kennen en de ruimte hebben voor een grotere machine. Wie dat ziet als een leuke uitdaging, haalt met de Ninja Café Luxe een complete koffie-oplossing in huis.

Watch on YouTube