← Python/Kiezen en herhalen
Les 3 van 8
MODULE 02 · 03◷ 18 min

Maak een toegangsregel leesbaar

Na deze les kun je
  • Een samengestelde regel in tussenstappen opdelen
  • and en or met verschillende invoer toepassen
  • Een afwijzing uit de uiteindelijke regel afleiden

Een apparaat kan draadloos werken als de batterij voldoende geladen is én de verbinding klaarstaat. Met een kabel kan het ook zonder die draadloze route werken. Zulke regels worden duidelijker wanneer je iedere deelvraag een naam geeft voordat je het uiteindelijke antwoord berekent.

Splits een regel in vragen

Je kent and, or en not al uit de basismodule. Met booleaanse waarden eist and dat beide voorwaarden waar zijn, terwijl or minstens één ware voorwaarde vraagt. not keert het uiteindelijke antwoord om.

Een tussenvoorwaarde is hier een benoemd antwoord op een deelvraag. Je kunt bijvoorbeeld eerst vastleggen of de batterij voldoende is, en daarna of de draadloze route beschikbaar is. Dat maakt het makkelijker om te ontdekken waarom de volledige regel slaagt of faalt.

Je hoeft hiervoor geen nieuwe if-keuze te schrijven. Een vergelijking of combinatie levert zelf al een boolean op, die je direct kunt bewaren en afdrukken. Een if wordt pas nodig wanneer je op basis van dat antwoord verschillende opdrachten wilt uitvoeren.

Twee routes naar hetzelfde resultaat

Het apparaat in dit voorbeeld heeft weinig batterij en is niet gekoppeld, maar er zit wel een kabel in. Voorspel welke antwoorden onwaar blijven en waarom het apparaat uiteindelijk toch klaarstaat.

Draadloos of met een kabel
charge = 10
paired = False
cable = True
enough = charge >= 20
print(enough)
wireless = enough and paired
print(wireless)
ready = wireless or cable
print(ready)
print(not ready)
Verwachte uitvoer
False
False
True
False

De eerste twee antwoorden zijn onwaar: de batterij voldoet niet en daarmee ontbreekt de draadloze route. De kabel maakt de laatste combinatie alsnog waar. De weigering is vervolgens onwaar, omdat die de uitkomst van de volledige regel omkeert.

Door de tussenstappen afzonderlijk te tonen zie je welk deel van je redenering werkt. Dat helpt bij het herstellen van een fout: je hoeft niet in één keer de hele uitdrukking te begrijpen. In de opdracht krijgen de deelvragen daarom ook eigen namen.

Keer de hele regel om

Zonder haakjes kun je per ongeluk alleen het eerste onderdeel omkeren. Het volgende voorbeeld toont twee verschillende vragen.

Een deel ontkennen of het geheel?
wireless = False
cable = True
print(not wireless or cable)
print(not (wireless or cable))
Verwachte uitvoer
True
False

De eerste regel betekent: de draadloze route ontbreekt, óf de kabel is aanwezig. Dat is waar, maar het is niet de vraag of het apparaat helemaal niet kan werken. De tweede regel rekent eerst de volledige combinatie tussen haakjes uit en keert daarna dat antwoord om.

Je kunt die tweede schrijfwijze nog duidelijker maken door de combinatie eerst als ready te bewaren en daarna not ready te gebruiken. Benoemde tussenstappen verkleinen de kans dat je slechts een deel van de regel ontkent. Kies namen die vertellen welke vraag het antwoord vertegenwoordigt.

Tekst omzetten naar een antwoord

De testinvoer bevat ook ja en nee. Met gelijkheid, geschreven als ==, vergelijk je twee waarden: input() == "ja" levert True op wanneer de ingelezen tekst precies ja is. Eén = is een toekenning; twee == stellen een vraag.

Nu jij

De fictieve toegangsregel accepteert iemand van minstens zestien met toestemming, óf een lid. De invoerregels staan klaar; controleer met de vier uitvoerregels ieder onderdeel van de regel. De tests wisselen leeftijd, toestemming en lidmaatschap af.

Testinvoer · 4 varianten

Je programma krijgt deze invoer automatisch. Elke variant begint opnieuw. Alle varianten moeten kloppen.

Toestemming maar te jong
15
ja
nee
Zestien met toestemming
16
ja
nee
Jong lid zonder toestemming
15
nee
ja
Geen van beide routes
16
nee
nee
AAN DE SLAG 0/4
1

Controleer de leeftijd

Toon op regel 1 of age minstens zestien is. Bewaar dat in old_enough.

2

Vereis toestemming én leeftijd

Maak supervised waar als zowel old_enough als consent waar is. Toon dit op regel 2.

3

Voeg de ledenroute toe

Maak allowed waar als supervised of member waar is. Toon dit op regel 3.

4

Bepaal de weigering

Toon op regel 4 of toegang geweigerd wordt door allowed om te keren.

Dit neem je mee

  • Bewaar deelvragen onder namen die hun betekenis duidelijk maken.
  • Gebruik not op het volledige antwoord dat je wilt omkeren.
  • == vergelijkt waarden; = kent een waarde toe.

Hierna laat je Python dezelfde handeling voor meerdere getallen uitvoeren met een lus.

main.py
UitvoerPython
›
›_

Hier komt je resultaat.

Voer je code uit en ontdek
wat je hebt gemaakt.

0/4 stappen
EVEN MEEKIJKEN

Bekijk hoe het kan.

Je mag de oplossing bekijken. Deze poging telt dan niet mee als afgeronde les. Met Reset kun je daarna opnieuw zelf oefenen.