If-instructies in Python: voorwaarden en booleaanse logica

Leer hoe een Pythonprogramma keuzes maakt. Vergelijk getallen en tekst met vergelijkingsoperatoren, combineer voorwaarden met and, or en not en gebruik if, elif en else om voor elke situatie de juiste code uit te voeren. Nest daarna keuzes, gebruik de waarheidsinterpretatie van waarden, test elke tak met zorgvuldig gekozen invoer en kies met de match-instructie uit verschillende gevallen.

BeginnerLes 2 van 10 in Cursus Inleiding tot programmeren met Python

Wat je leert

  1. Schrijf vergelijkingen met de zes vergelijkingsoperatoren van Python, voorspel of ze True of False opleveren voor getallen en tekst en voorkom verwisselingen waardoor een voorwaarde ongemerkt onjuist wordt.
    • Vergelijk getallen met de zes vergelijkingsoperatoren
      Gebruik ==, !=, <, <=, > en >= om getallen te vergelijken, lees elk resultaat als een booleaanse waarde en maak onderscheid tussen vergelijken en toekennen.
    • Vergelijk tekst, verschillende typen en bereiken
      Vergelijk strings exact en in alfabetische volgorde, zet ingetypte invoer om voordat je die met getallen vergelijkt en controleer bereiken, lidmaatschap en None met de juiste operator.
  2. Schrijf keuzes met één, twee en meerdere mogelijkheden, zodat een programma voor elke situatie het juiste codeblok uitvoert, en voorspel precies welke regels bij een bepaalde invoer worden uitgevoerd.
    • Voer code alleen uit als een voorwaarde waar is
      Schrijf een if-instructie met de kop, dubbele punt en het ingesprongen codeblok en volg stap voor stap welke regels worden uitgevoerd en welke worden overgeslagen.
    • Kies tussen twee acties met if en else
      Voeg een else-tak toe zodat precies één van twee blokken wordt uitgevoerd en gebruik een voorwaardelijke expressie om op één regel tussen twee waarden te kiezen.
    • Kies uit meerdere gevallen met elif
      Bouw if–elif–else-ketens die voorwaarden op volgorde controleren en alleen de eerste tak uitvoeren waarvan de voorwaarde waar is. Zet de controles zo op volgorde dat elke invoer in het juiste geval terechtkomt.
  3. Combineer en ontken voorwaarden met and, or en not, voorspel hun resultaten met waarheidstabellen en lees langere voorwaarden in de volgorde waarin Python ze evalueert.
    • Combineer en ontken voorwaarden met and, or en not
      Gebruik waarheidstabellen om de resultaten van and, or en not te voorspellen, vertaal alledaagse regels naar gecombineerde voorwaarden en voorkom de klassieke fout met or.
    • Voorspel hoe Python langere voorwaarden evalueert
      Pas operatorprioriteit en kortsluitevaluatie toe, voeg haakjes toe die de bedoelde groepering verduidelijken en herschrijf ontkende voorwaarden met de wetten van De Morgan.
  4. Nest keuzes waar de ene keuze van de andere afhangt, toets waarden rechtstreeks via hun waarheidsinterpretatie en volg en test elke tak, zodat de logica voor elke invoer klopt.
    • Nest keuzes binnen andere keuzes
      Plaats een if-instructie binnen een andere tak als een tweede keuze van de eerste afhangt, lees de nesting af aan de inspringing en verminder het aantal nestingsniveaus als and of elif hetzelfde eenvoudiger uitdrukt.
    • Toets waarden rechtstreeks met hun waarheidsinterpretatie
      Voorspel welke waarden Python in een voorwaarde als waar of onwaar beschouwt, gebruik dit om kort op lege invoer te controleren en voorkom valkuilen waarbij 0, "0" of "False" zich onverwacht gedragen.
    • Volg en test elke tak van een keuze
      Volg een keuze met de hand, kies testinvoer die elke tak en elke grens bereikt en herstel voorwaarden die hiaten, overlappingen of takken veroorzaken die nooit kunnen worden uitgevoerd.
  5. Gebruik de match-instructie van Python om één waarde met meerdere patronen te vergelijken, waarden aan namen te binden en aanvullende voorwaarden toe te voegen, en bepaal wanneer match duidelijker is dan een if–elif-keten.
    • Toets een waarde aan vaste gevallen
      Schrijf een match-instructie met patronen met letterlijke waarden, alternatieven en een jokerpatroon, en voorspel welk ene geval wordt uitgevoerd.
    • Bind waarden aan namen en voeg aanvullende voorwaarden toe aan gevallen
      Gebruik bindingspatronen en as om de overeenkomende waarde een naam te geven, voeg aanvullende if-voorwaarden toe voor voorwaarden die een letterlijke waarde niet kan uitdrukken en voorkom de valkuil waarbij een variabelenaam in een geval met alles overeenkomt.

If-instructies in Python: uitleg

5 hoofdstukken

1

Vergelijkingen die ja of nee als antwoord geven

Een programma heeft een nauwkeurige controle nodig voordat het een actie kan kiezen. Vergelijkingen zetten vragen over waarden om in antwoorden die Python kan gebruiken: is de score hoog genoeg, komt het antwoord overeen of ligt de invoer binnen een geldig bereik? Voor getallen en tekst gelden verschillende vergelijkingsregels. Als je die regels zorgvuldig leest, herken je fouten die op het scherm aannemelijk lijken, vooral op een grens of wanneer ingetypte cijfers nog als tekst zijn opgeslagen.

1.1 Getallen, gelijkheid en grenzen

Een vergelijking stelt een vraag over waarden. Het resultaat is een booleaanse waarde: True of False. Dit zijn waarden van het type bool, geschreven met een hoofdletter aan het begin en zonder aanhalingstekens. "True" is tekst; true met een kleine letter is een naam en veroorzaakt een NameError als die niet is gedefinieerd.

Kies de operator die bij de regel past
OperatorVraagMet x = 7
==Gelijk aan?x == 7 geeft True
!=Niet gelijk aan?x != 7 geeft False
<Kleiner dan?x < 7 geeft False
<=Kleiner dan of gelijk aan?x <= 7 geeft True
>Groter dan?x > 5 geeft True
>=Groter dan of gelijk aan?x >= 7 geeft True

De operatoren met twee tekens blijven bij elkaar, met = achteraan. Schrijf <=, niet =<. Een geheel getal en een zwevendekommagetal kunnen gelijk zijn: 7 == 7.0 geeft True omdat hun getalswaarden overeenkomen.

Een vergelijking is een expressie, dus je kunt het resultaat afdrukken of opslaan:

x = 7
is_big = x > 5
print(is_big)

Python evalueert x > 5, krijgt True en kent die waarde toe aan is_big. De uitvoer is True. Een naam zoals is_big of has_ticket laat een booleaanse variabele lezen als een ja-neevraag.

Houd toekenning en vergelijking uit elkaar

x = 5 slaat een nieuwe waarde op in x. x == 5 controleert de huidige waarde zonder die te veranderen. if x = 5: schrijven is een syntaxisfout. De omgekeerde fout kan moeilijker op te merken zijn:

x = 7
x == 5
print(x)

In een script wordt het resultaat van de vergelijking niet gebruikt. De uitvoer blijft 7; de middelste regel kent nooit 5 toe.

Reken eerst en vergelijk daarna

In 2 + 3 > 4 telt Python eerst op tot 5 en vergelijkt daarna 5 > 4. Het resultaat is True. Een nuttige controle voor gehele getallen is n % 2 == 0: % geeft de rest na deling en even getallen laten rest 0 over bij deling door 2.

Voor n = 10 zijn de stappen 10 % 2 en daarna 0 == 0, wat True geeft. Voor n = -7 is -7 % 2 gelijk aan 1, dus is de controle op een even getal False. Met de positieve deler 2 is de rest in Python voor een oneven geheel getal 1, ook als dat getal negatief is.

Bepaal of de grens meetelt

“Minstens 18” omvat 18: age >= 18. “Ouder dan 18” sluit die leeftijd uit: age > 18. Zo is “jonger dan 13” gelijk aan age < 13 en “niet meer dan 3” aan bags <= 3. Test de grens zelf wanneer je een operator kiest. Bij age = 18 is de eerste leeftijdscontrole waar en de tweede onwaar.

Houd rekening met kleine verschillen tussen zwevendekommagetallen

Veel decimale breuken hebben alleen een binaire benadering. Python slaat 0.1 + 0.2 op als 0.30000000000000004, dus is 0.1 + 0.2 == 0.3 gelijk aan False.

Gebruik voor een vergelijking met een absolute tolerantie van 1e-9:

print(abs((0.1 + 0.2) - 0.3) < 1e-9)

abs() geeft de grootte van het verschil zonder het teken. Dat verschil is kleiner dan een miljardste, dus drukt deze controle True af. De tolerantie geeft aan hoeveel verschil deze controle accepteert; het is geen exacte gelijkheid.

Belangrijkste punten

  • Vergelijkingen leveren de booleaanse waarden True en False op.
  • = kent een waarde toe; == vergelijkt waarden zonder ze te veranderen.
  • Kies < of <= en > of >= op basis van de vraag of de grens meetelt.
  • Rekenkundige bewerkingen gaan vóór vergelijkingen, dus n % 2 == 0 controleert of een getal even is.
  • Voor berekende zwevendekommagetallen kan een controle met een tolerantie nodig zijn in plaats van exacte gelijkheid.

1.2 Tekst, ingetypte getallen en bereiken

De waarden aan beide kanten van een vergelijking zijn even belangrijk als de operator. Tekst kan eruitzien als een getal, maar toch de regels voor strings volgen.

Vergelijk tekst exact

Bij gelijkheid van strings wordt elk teken gecontroleerd, inclusief hoofdletters, kleine letters en spaties. "yes" == "Yes" is False en "yes" == "yes " is ook False. Vergelijk een opgeschoonde kopie om gewone verschillen in hoofdletters en spaties aan de randen te accepteren:

answer = " Yes "
print(answer.strip().lower() == "yes")

strip() verwijdert witruimte aan beide uiteinden. lower() zet letters om in kleine letters. De opgeschoonde tekst is "yes", dus is het resultaat True. De opgeslagen answer blijft ongewijzigd, tenzij je de opgeschoonde waarde eraan toekent.

Begrijp de volgorde van strings

Python vergelijkt strings van links naar rechts met Unicodecodepunten, de getallen die aan tekens zijn toegekend. Het stopt bij het eerste ongelijke paar. Bij Engelse letters zonder accent en met dezelfde hoofdlettergrootte volgt dit de alfabetische volgorde: "apple" < "banana" is True. Wanneer de ene string het begin van de andere is, komt de kortere eerst: "cat" < "catalog" is True.

Dit is geen volledige sorteervolgorde zoals in een woordenboek. A tot en met Z hebben codepunten 65–90 en a tot en met z hebben 97–122. Daarom is "Zebra" < "apple" gelijk aan True. Ook de é met accent komt na z, dus is "zebra" < "éclair" gelijk aan True.

Cijfers in strings volgen dezelfde tekenregel. "10" < "9" is True: de eerste vergelijking is tussen "1" en "9", niet tussen de getallen tien en negen.

Zet invoer om voor keuzes op basis van getallen

input() geeft een string terug. Als iemand 5 intypt, geeft "5" == 5 de waarde False; de gelijkheidscontrole zet de tekst niet om. Een vergelijking van de volgorde werkt anders: "5" < 10 veroorzaakt een TypeError, omdat Python die string en dat gehele getal niet samen kan ordenen.

age = int(input("Age: "))
print(age >= 18)

Voor de ingetypte tekst "18" levert int() het gehele getal 18 op en drukt de controle True af. Gebruik float() als de invoer een decimale waarde voorstelt.

Gebruik een keten voor een bereik

0 <= score <= 100 vereist dat beide aangrenzende vergelijkingen waar zijn. Het betekent 0 <= score and score <= 100. Voor score = 105 slaagt de onderste controle, maar niet de bovenste, dus is de hele keten False.

RegelPythoncontrole
Van 1 tot en met 10, inclusief beide grenzen1 <= x <= 10
Strikt tussen 1 en 101 < x < 10

Een keten vergelijkt alleen aangrenzende waarden. 1 < 3 > 2 is True omdat 1 < 3 en 3 > 2 beide waar zijn; de keten vergelijkt 1 niet rechtstreeks met 2.

Kies zo nodig voor lidmaatschap of identiteit

De lidmaatschapsoperatoren controleren of tekst binnen tekst voorkomt. "nan" in "banana" is True; "Ban" in "banana" is False. "x" not in "banana" is True.

None staat voor geen waarde. Controleer erop met result is None of result is not None. De operator is vraagt of het om precies hetzelfde object gaat, terwijl == vraagt of waarden gelijk zijn. Gebruik == voor gelijkheid van getallen en strings: een identiteitscontrole zoals x is 5 is daarvoor onbetrouwbaar en veroorzaakt een SyntaxWarning.

Belangrijkste punten

  • Vergelijkingen van strings zijn hoofdlettergevoelig en houden rekening met spaties.
  • Zet ingetypte cijfers om met int() of float() voordat je getallen vergelijkt.
  • Een aaneengeschakelde vergelijking voor een bereik vereist dat elke aangrenzende vergelijking slaagt.
  • in controleert lidmaatschap; is None controleert op de aanduiding voor geen waarde.
2

Kiezen welke code wordt uitgevoerd

Een vergelijking wordt nuttig wanneer ze een actie aanstuurt. Python markeert elke keuze met een voorwaarde en een ingesprongen blok, zodat de opmaak laat zien welke regels samen worden uitgevoerd. Begin met een blok dat kan worden overgeslagen, geef het daarna een alternatief en kies ten slotte uit meerdere gevallen. Volg het programma op volgorde: een latere regel kan een waarde gebruiken die door een eerdere tak is ingesteld en een latere controle in een keten wordt mogelijk nooit bereikt.

2.1 De if-kop en het bijbehorende blok

Een if-instructie voert een blok alleen uit als de voorwaarde waar is. De kop begint met if, geeft de voorwaarde en eindigt met een dubbele punt. De regels eronder springen in om te laten zien dat ze bij de inhoud horen.

Volg een keuze met één mogelijke actie
temperature = 31
if temperature > 30:
    print("Hot day")
    print("Drink water")
print("Done")

Bij de kop leest Python de huidige waarde van temperature. De vergelijking 31 > 30 is True, dus worden beide ingesprongen regels uitgevoerd. Daarna bereikt het programma de regel buiten het blok. De uitvoer is:

Hot day
Drink water
Done

Verander de eerste regel in temperature = 25. Nu is 25 > 30 gelijk aan False, dus slaat Python de hele inhoud over. Alleen Done wordt afgedrukt. De voorwaarde wordt één keer gecontroleerd wanneer Python de kop bereikt; een if blijft die niet controleren.

Laat inspringing zien wat bij het blok hoort

Gebruik volgens de conventie 4 spaties voor elk inspringniveau. Regels op hetzelfde niveau horen bij hetzelfde blok. Terugkeren naar het buitenste niveau beëindigt het blok. Als je print("Done") 4 spaties laat inspringen, wordt die regel onderdeel van de if-inhoud en alleen afgedrukt als aan de voorwaarde is voldaan.

Een stroomdiagram toont dezelfde keuze met een ruit. Het pad voor waar gaat de inhoud in, het pad voor onwaar gaat eromheen en de paden komen samen bij de volgende instructie buiten het blok.

ProbleemWat je moet herstellen
Ontbrekende dubbele puntSluit de kop af met :.
Geen ingesprongen inhoudLaat de regels die door if worden aangestuurd inspringen.
Inconsistente inspringingLijn instructies die bij hetzelfde blok horen uit.
Tabs en spaties door elkaarStel de editor in om spaties in te voegen.

Python kan voor deze problemen SyntaxError, IndentationError of TabError melden. Begin bij de kop en de inspringing rond de gemelde regel. Ronde haakjes rond de voorwaarde zijn optioneel; if temperature > 30: is de gebruikelijke vorm.

De inhoud mag niet leeg zijn. Als je ruimte openlaat voor een actie, schrijf dan een ingesprongen pass. Dit is een geldige instructie die niets doet:

if temperature > 30:
    pass
Afzonderlijke controles zijn onafhankelijk
score = 95
if score >= 50:
    print("Pass")
if score >= 90:
    print("Excellent")

Python bereikt beide koppen. Beide voorwaarden zijn waar, dus worden beide meldingen afgedrukt. Afzonderlijke if-instructies passen bij regels waarvan de acties allemaal op dezelfde invoer van toepassing kunnen zijn.

Geef latere code een bruikbare waarde

Een naam waaraan alleen binnen het blok een waarde wordt toegekend, wordt mogelijk nooit aangemaakt:

x = 0
if x > 0:
    message = "positive"
print(message)

In een nieuw script wordt het blok overgeslagen en heeft message geen waarde, dus veroorzaakt de laatste regel een NameError. Een oplossing is vóór de keuze een beginwaarde opgeven:

x = 0
message = "not positive"
if x > 0:
    message = "positive"
print(message)

Nu heeft de latere regel op beide paden een waarde. Voor nul drukt die not positive af; voor een positieve x vervangt het blok die tekst door positive.

Belangrijkste punten

  • Een if-kop eindigt met :, gevolgd door een ingesprongen blok.
  • Bij een onware voorwaarde wordt het hele blok overgeslagen; de uitvoering gaat daarna verder.
  • Afzonderlijke if-instructies worden elk gecontroleerd wanneer ze worden bereikt.
  • Gebruik een beginwaarde of ken in elke tak een waarde toe voordat je een variabele later uitleest.
  • pass levert een geldig blok op dat niets doet.

2.2 Twee paden en een waarde om te kiezen

Een if–else-instructie kiest één van twee blokken. Als de voorwaarde waar is, voert Python het if-blok uit. Anders voert het het else-blok uit. Wanneer de uitvoering deze keuze bereikt, wordt precies één blok uitgevoerd.

Lijn de alternatieven uit
number = int(input("Enter a whole number: "))
if number % 2 == 0:
    print(number, "is even")
else:
    print(number, "is odd")

Voor invoer 14 is de rest 0, dus is de uitvoer 14 is even. Voor invoer -7 is de rest 1, dus is de uitvoer -7 is odd. De else hoort bij de if op hetzelfde inspringniveau. Het bijbehorende blok heeft een eigen inspringing.

Na else staat geen voorwaarde: het betekent dat de eerdere voorwaarde onwaar was. else number < 0: is een syntaxisfout. Zet de clausule direct na het if-blok; een niet-ingesprongen instructie die er niet bij hoort, verbreekt de structuur als die ertussen staat.

Controleer wat “al het andere” omvat

Bij if answer == "yes": betekent een else niet alleen "no". Die accepteert ook "maybe", "Yes" en "", omdat geen ervan gelijk is aan "yes". Dit is nuttig als alle resterende invoer dezelfde actie vereist. Als meerdere afgewezen invoeren verschillende reacties nodig hebben, zijn verdere controles nodig.

Ken op beide paden een waarde toe

Een verzendregel geeft gratis verzending bij totaalbedragen van minstens € 50 en rekent anders € 5,99:

total = 42.50
if total >= 50:
    shipping = 0
else:
    shipping = 5.99
print(total + shipping)

Eerst geeft 42.50 >= 50 de waarde False. Python slaat de toekenning van 0 over, voert de else uit en slaat 5.99 op. De laatste regel staat buiten beide blokken en drukt 48.49 af. Verander total in 60: het eerste blok slaat 0 op, het andere wordt overgeslagen en de laatste regel drukt 60 af. Beide routes definiëren shipping voordat die wordt gebruikt.

Kies een waarde met een voorwaardelijke expressie

Als alleen de toe te kennen waarde verschilt, kan een voorwaardelijke expressie dit op één regel uitdrukken:

shipping = 0 if total >= 50 else 5.99

De vorm is value_if_true if condition else value_if_false. Hoewel de waarde voor waar op de pagina eerst staat, evalueert Python eerst de voorwaarde. Het evalueert alleen de gekozen waarde en kent het resultaat daarna toe aan shipping.

Een ander voorbeeld is label = "even" if n % 2 == 0 else "odd". Voor n = 14 kiest dit "even". Voor n = -7 kiest dit "odd".

NodigGeschikte vorm
Meerdere acties op een van beide padenVolledige if–else-blokken
Eén van twee waardenVoorwaardelijke expressie

De expressie vereist beide waarden. x = 1 if flag is onvolledig en veroorzaakt een SyntaxError omdat er geen else-waarde is. Een volledige if-instructie mag else weglaten omdat ze op het pad voor onwaar eenvoudig geen actie kan uitvoeren; een expressie moet nog steeds een waarde opleveren.

Belangrijkste punten

  • else: heeft geen voorwaarde en staat op hetzelfde inspringniveau als de bijbehorende if.
  • Een else omvat alle invoer die niet aan de voorwaarde voldoet.
  • Als je in beide blokken een waarde aan dezelfde variabele toekent, is die na beide paden beschikbaar.
  • Een voorwaardelijke expressie heeft de vorm a if condition else b en evalueert alleen de gekozen waarde.

2.3 Meerdere gevallen in een bewuste volgorde

Gebruik elif, een afkorting van “else if”, om nog een controle aan een keuze toe te voegen. Python probeert de voorwaarden van boven naar beneden. De eerste ware voorwaarde bepaalt welke tak wordt uitgevoerd en de rest van die keten wordt overgeslagen.

Volg een keuze voor een beoordeling
score = 85
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"
print(grade)

De eerste controle, 85 >= 90, is onwaar. De tweede, 85 >= 80, is waar, dus slaat Python "B" op. Het controleert de overige voorwaarden niet en gaat de else niet in. De uitvoer is B.

ScoreEerste geslaagde routeBeoordeling
90score >= 90A
89score >= 80B
60score >= 60D
59Afsluitende elseF
Gebruik wat eerdere mislukte controles je vertellen

Als elif score >= 80: wordt bereikt, weet je al dat de score onder 90 ligt. Voor gehele scores omvat deze tak 80 tot en met 89. Door and score < 90 toe te voegen, herhaal je een controle die het programma al heeft afgehandeld.

De volgorde is belangrijk omdat deze bereiken overlappen. Als score >= 60 eerst komt, vangt die 85 en 95 af voordat de controles voor hun hogere beoordelingen worden bereikt. Zet bij controles op een ondergrens met >= de hoogste drempelwaarde eerst. Begin bij controles op een bovengrens met < met de laagste drempelwaarde.

Houd één keuze in één keten

Als je de gereserveerde woorden elif vervangt door if, verandert het gedrag. Bij een score van 85 kent de controle voor 80 eerst "B" toe, daarna kent de controle voor 70 "C" toe en de controle voor 60 kent "D" toe. De eindwaarde is "D". Elke nieuwe if begint een onafhankelijke keuze.

Dit onderscheid heeft ook gevolgen voor else. In een groep afzonderlijke if-instructies hoort een afsluitende else alleen bij de bijbehorende if, niet bij de hele groep. Houd de takken verbonden als ze samen één indeling voorstellen.

Houd rekening met grenzen en invoer die niet overeenkomt

Een elif-keten mag een willekeurig aantal extra controles hebben en de afsluitende else is optioneel. Zonder resttak wordt mogelijk geen blok uitgevoerd:

temp = 20
if temp < 18:
    print("Cool")
elif temp > 24:
    print("Warm")

Aan geen van beide voorwaarden is voldaan. Voeg else: toe met een ingesprongen print("Comfortable") als elke temperatuur een melding nodig heeft. Zo blijft ook bij t < 18 gevolgd door t > 18 precies 18 zonder overeenkomst. Bij de beoordelingsgrenzen zou score > 90 de waarde 90 naar de "B"-tak sturen.

Tekstmenu’s gebruiken dezelfde structuur: controleer choice == "1", daarna choice == "2" en geef voor al het andere de reactie "Unknown option". Deze controles vergelijken strings omdat input() tekst teruggeeft. Als veel controles één waarde met vaste keuzes vergelijken, biedt match een andere manier om de keuze vorm te geven.

Belangrijkste punten

  • Alleen de eerste tak met een ware voorwaarde in een if–elif-keten wordt uitgevoerd.
  • Eerdere onware controles beperken welke invoer een latere tak kan bereiken.
  • Zet overlappende drempelwaarden zo op volgorde dat een brede controle een specifieker geval niet verbergt.
  • Afzonderlijke if-instructies kunnen meerdere blokken uitvoeren en eerdere toekenningen overschrijven.
  • Een afsluitende else handelt invoer af die aan geen van de voorwaarden voldoet.
  • Test de exacte drempelwaarden om hiaten en één-ernaast-fouten te vinden.
3

Controles combineren zonder de regel te veranderen

Echte keuzes hangen vaak van meerdere feiten tegelijk af: een bereik heeft twee grenzen en toegang kan zowel toestemming als een beschikbare plaats vereisen. Booleaanse operatoren verbinden die feiten tot één voorwaarde. Ook de groepering en evaluatievolgorde zijn belangrijk, omdat Python kan stoppen voordat het een deel van een controle bereikt. Vertaal eerst de regel en volg daarna de expressie van links naar rechts, met aandacht voor haakjes en overgeslagen werk.

3.1 Beide, minstens één en het tegenovergestelde

Met de booleaanse operatoren and, or en not kun je een voorwaarde opbouwen uit eenvoudigere voorwaarden. Python schrijft ze als woorden met kleine letters.

Bekijk alle mogelijkheden

Voor booleaanse invoer geeft and alleen True als beide invoeren waar zijn. or geeft True als minstens één ervan waar is, ook als beide waar zijn. Dit is een inclusieve of.

ABA and BA or B
TrueTrueTrueTrue
TrueFalseFalseTrue
FalseTrueFalseTrue
FalseFalseFalseFalse

not keert een waarheidswaarde om: not True geeft False en not False geeft True. Een waarheidstabel vermeldt elke combinatie van booleaanse invoer. Voor twee invoeren zijn vier rijen nodig; voor drie zijn er acht nodig. Elke extra onafhankelijke booleaanse invoer verdubbelt het aantal combinaties.

Voor A and not B keer je eerst B om en combineer je het resultaat daarna met A. In de rij A = True, B = False is not B gelijk aan True, dus is het resultaat True. De andere drie rijen geven False.

Vertaal een regel naar volledige controles

Een museum geeft korting op de toegang aan bezoekers jonger dan 12 of van 65 jaar en ouder:

has_discount = age < 12 or age >= 65

Op leeftijd 10 slaagt de eerste vergelijking. Bij 65 slaagt de tweede. De leeftijden 30 en 64 voldoen aan geen van beide. Met and zou dezelfde leeftijd onder 12 en minstens 65 moeten zijn, wat niet kan.

Een attractie vereist een lengte van minstens 120 centimeter en geen hartaandoening:

can_ride = height >= 120 and not has_heart_condition

Aan beide eisen moet tegelijk zijn voldaan. Bij de minimumlengte met has_heart_condition = False slagen beide delen. Als niet aan een van de eisen is voldaan, is can_ride gelijk aan False.

Maak onderscheid tussen binnen en buiten een bereik
BetekenisControle
Binnen 0 tot en met 100score >= 0 and score <= 100
Buiten 0 tot en met 100score < 0 or score > 100

De controle voor binnen het bereik heeft beide grenzen nodig. Voor buiten het bereik hoeft slechts aan één grens niet te zijn voldaan. score < 0 and score > 100 kan voor één getal nooit waar zijn.

Elke vergelijking heeft beide kanten nodig. score >= 0 and <= 100 is onvolledige syntaxis. Een minder opvallend probleem wordt zonder fout uitgevoerd:

if answer == "y" or "yes":
    print("Accepted")

Python ziet (answer == "y") or "yes". Wanneer de vergelijking onwaar is, zorgt de niet-lege string "yes" er toch voor dat de voorwaarde als waar wordt beschouwd. Herhaal de vergelijking: answer == "y" or answer == "yes".

Ook bij alledaagse formuleringen moet je opletten. “Gesloten op zaterdag en zondag” betekent day == "Saturday" or day == "Sunday"; één dag hoeft niet beide namen tegelijk te hebben. Ontken een booleaanse variabele rechtstreeks met not is_member. Een ontkende vergelijking zoals not (age >= 18) kan ook eenvoudiger worden geschreven als age < 18. De operatoren van Python zijn hier woorden, geen &&, || of !.

Belangrijkste punten

  • and vereist dat beide booleaanse invoeren waar zijn; de inclusieve or vereist er minstens één.
  • not keert een waarheidswaarde om en levert altijd een booleaanse waarde op.
  • Voor binnen een bereik is and nodig; voor buiten het bereik or.
  • Herhaal de volledige vergelijking aan beide kanten van een booleaanse operator.
  • Een waarheidstabel controleert elke combinatie, ook het geval waarin beide invoeren waar zijn.

3.2 Groepering, overgeslagen werk en ontkenning

Bij een langere voorwaarde moet je twee vragen beantwoorden: hoe zijn de delen gegroepeerd en welke delen evalueert Python daadwerkelijk? Operatorprioriteit beantwoordt de eerste vraag. Kortsluitevaluatie beantwoordt de tweede.

Bekijk eerst de groepering

Voor de operatoren die hier worden gebruikt, loopt de prioriteit van sterk naar zwak:

  1. Machtsverheffen: **.
  2. Vermenigvuldiging, deling, gehele deling, rest: *, /, //, %.
  3. Optelling en aftrekking: +, -.
  4. Vergelijkingen, waaronder in, not in, is en is not.
  5. not, dan and, dan or.
  6. De voorwaardelijke expressie: a if condition else b.

Ronde haakjes veranderen de groepering. Zo wordt x > 3 or x < 0 and x != 5 gegroepeerd als x > 3 or (x < 0 and x != 5). Bij x = 5 is de linkervergelijking waar en wordt de hele rechtergroep overgeslagen. Het resultaat is True.

Bij (x > 3 or x < 0) and x != 5 maken de haakjes de eerste groep juist tot één operand van and. Bij x = 5 is die groep waar, maar x != 5 is onwaar, dus is het resultaat False.

Daarom accepteert is_weekend or is_holiday and is_sunny elk weekend, zelfs als het regent. Schrijf voor de regel “een vrije dag waarop het ook zonnig is” (is_weekend or is_holiday) and is_sunny.

Volg de evaluatie van links naar rechts
ExpressieWanneer Python B overslaat
A and BA wordt als onwaar beschouwd
A or BA wordt als waar beschouwd

Bij and heeft een onwaar eerste deel al uitgesloten dat aan de hele voorwaarde wordt voldaan. Bij or heeft een waar eerste deel er al aan voldaan. De prioriteit dwingt Python niet om een overgeslagen operand te berekenen alleen omdat die sterker bindende operatoren bevat.

Je kunt dit gebruiken om een beschermende voorwaarde vóór een bewerking te plaatsen die zou mislukken:

count = 0
total = 50
is_large_average = count != 0 and total / count > 10
print(is_large_average)

count != 0 is onwaar, dus probeert Python 50 / 0 nooit. Het slaat False op en drukt die waarde af. Als je de operanden omdraait, wordt de deling eerst geprobeerd en ontstaat een ZeroDivisionError; de latere controle kan eerder werk niet beschermen.

Werk not door een gegroepeerde controle heen

De wetten van De Morgan herschrijven een ontkenning door elk deel te ontkennen en de verbindende operator te verwisselen:

OorspronkelijkEquivalent
not (A and B)not A or not B
not (A or B)not A and not B

“Geen tiener” kan worden gecontroleerd als not (age >= 13 and age <= 19). De equivalente directe controle is age < 13 or age > 19. De leeftijden 12 en 20 voldoen; 13, 16 en 19 niet.

Als je and behoudt nadat je beide delen hebt ontkend, verandert de regel. Bij A = True, B = False is not (A and B) waar, maar not A and not B onwaar. Vergelijk elke rij van de waarheidstabel wanneer je controleert of twee booleaanse vormen equivalent zijn.

Schrijf voor een variabele die al een booleaanse waarde bevat if is_valid: of if not is_valid:. Een vergelijking met True of False voegt een controle toe die de voorwaarde niet nodig heeft.

Belangrijkste punten

  • Prioriteit groepeert een expressie; kortsluitevaluatie bepaalt welke operanden worden bereikt.
  • and slaat de rechteroperand over na een als onwaar beschouwde linkeroperand; or doet dat na een als waar beschouwde linkeroperand.
  • Zet een beschermende voorwaarde vóór de bewerking die ze beschermt.
  • De wetten van De Morgan ontkennen beide delen en verwisselen and en or.
  • Gebruik ronde haakjes om de bedoelde groepering te tonen wanneer je and en or combineert.
  • Toets booleaanse variabelen rechtstreeks met hun naam of met not.
4

Keuzes gemakkelijk te volgen en te testen maken

Een keuze kan afhangen van een andere keuze en een waarde kan zonder expliciete vergelijking als voorwaarde dienen. Beide maken scripts korter, maar creëren ook paden die gemakkelijk over het hoofd worden gezien. Inspringing laat zien welke controles van eerdere keuzes afhangen; waarheidsinterpretatie verklaart hoe lege tekst en nul zich gedragen. Door die paden te volgen en exacte grenzen te testen, vind je ontbrekende reacties, overschreven waarden en takken die geen enkele invoer kan bereiken.

4.1 Keuzes binnen andere takken

Een geneste voorwaardelijke instructie plaatst één keuze binnen een tak van een andere. De binnenste keuze wordt alleen bereikt als de uitvoering die buitenste tak ingaat. Elk nestingsniveau voegt 4 spaties inspringing toe.

Volg de buitenste keuze vóór de binnenste keuze
has_ticket = True
age = 15
if has_ticket:
    if age >= 13:
        print("Enjoy the movie")
    else:
        print("This movie needs an adult")
else:
    print("Please buy a ticket first")

Eerst is has_ticket waar, dus gaat Python het buitenste blok in. Daarna controleert het 15 >= 13, krijgt waar en drukt Enjoy the movie af. De binnenste en buitenste else-blokken worden beide overgeslagen.

Verander de leeftijd in 10 en behoud het kaartje. Python gaat nog steeds het buitenste blok in, maar aan de binnenste voorwaarde is niet voldaan, dus drukt het This movie needs an adult af. Met has_ticket = False wordt de leeftijdscontrole nooit bereikt; de buitenste else drukt Please buy a ticket first af.

Koppel elke else op basis van inspringing

Een else hoort bij de if op hetzelfde inspringniveau. Verplaatsen kan het gedrag veranderen, ook als het script geldig blijft. Bekijk deze kleinere variant:

if has_ticket:
    if age >= 13:
        print("Enter")
else:
    print("Buy a ticket")

De else hoort bij if has_ticket:. Een 10-jarige met een kaartje krijgt geen melding. Verplaats die else en het bijbehorende blok één niveau naar binnen en ze hoort bij if age >= 13:. Nu krijgt hetzelfde kind Buy a ticket te zien, terwijl iemand zonder kaartje geen melding krijgt. De gewijzigde indeling drukt een andere regel uit.

In het volledige filmvoorbeeld heeft de binnenste if al een else. Als je daar de buitenste else naar binnen verplaatst, ontstaan twee alternatieven voor dezelfde if en een syntaxisfout.

Verminder de nesting bij twee eisen

Als er maar één actie is en geen van beide niveaus een else heeft, verwijdert and vaak een nestingsniveau:

if is_member and total >= 50:
    print("Free shipping")

Dit voert dezelfde actie uit als een buitenste if is_member: met daarin een binnenste if total >= 50:. Aan beide eisen moet zijn voldaan en de tweede wordt pas bereikt nadat aan de eerste is voldaan. Behoud de nesting wanneer de buitenste takken eigen, verschillende acties nodig hebben, zoals bij het kopen van een kaartje.

Een else waarvan de enige actie een andere if–else is, kan een elif-keten worden. Voor positief, negatief en nul is de vorm zonder nesting if x > 0:, dan elif x < 0:, dan else:. Die behoudt dezelfde drie uitkomsten met minder inspringing.

Valideer voordat je indeelt

Een keuze voor een beoordeling moet scores buiten het toegestane bereik afwijzen voordat een letter wordt toegekend:

if 0 <= score <= 100:
    if score >= 90:
        print("A")
    else:
        print("Below A")
else:
    print("Score must be between 0 and 100")

Bij score = 150 mislukt de buitenste controle, dus wordt geen beoordeling toegekend. Nesting maakt ook onmogelijke paden zichtbaar: een binnenste if x < 5: onder if x > 10: kan nooit slagen. Als de inspringing diep wordt, zoek dan naar gecombineerde eisen, een elif-keten of een eerdere validatiecontrole die de resterende paden duidelijker maakt.

Belangrijkste punten

  • Een binnenste voorwaarde wordt pas gecontroleerd nadat de buitenste tak is ingegaan.
  • De inspringing bepaalt bij welke if een else hoort.
  • Twee geneste eisen met één actie en zonder alternatieven kunnen één and-voorwaarde worden.
  • Valideer het toegestane bereik voordat je een categorie toekent.
  • Tegenstrijdige binnenste en buitenste eisen creëren onbereikbare code.

4.2 Lege waarden, nul en waarden als voorwaarden

Python kan een waarde rechtstreeks in een voorwaarde toetsen. De waarheidsinterpretatie bepaalt of het blok wordt uitgevoerd. Dit bespaart vergelijkingen, maar de waarheidsinterpretatie van de waarde kan verschillen van wat de tekst lijkt te zeggen.

Herken als onwaar beschouwde waarden

Voor de ingebouwde typen hier worden False, None, numerieke nul, lege strings en lege collecties als onwaar beschouwd. Getallen ongelijk aan nul en niet-lege strings of collecties worden als waar beschouwd.

Waardebool(value)Waarom
0, 0.0FalseNumerieke nul
-3TrueGetal ongelijk aan nul
""FalseLege string
" "TrueBevat een spatie
"0", "False", "no"TrueNiet-lege strings
NoneFalseAanduiding voor geen waarde
[], (), {}FalseLege collecties

bool() zet een waarde om naar haar booleaanse waarheidswaarde. In een voorwaarde kiest if value: dezelfde tak als if bool(value):. Het verandert de opgeslagen waarde niet in een booleaanse waarde.

Controleer lege invoer zonder die verkeerd te lezen
name = input("Name: ")
if name:
    print("Hello", name)
else:
    print("No name entered")

Als je op Enter drukt zonder iets te typen, levert dat "" op, dus wordt het tweede blok uitgevoerd. Een naam die geheel uit spaties bestaat, is niet leeg en voldoet aan de eerste controle. if name.strip(): controleert daarentegen de tekst nadat witruimte aan de randen is verwijderd, zodat een antwoord met alleen spaties ook niet voldoet.

Een ja-neeantwoord vereist een andere vraag. if answer: wordt uitgevoerd voor "no" en "False" omdat beide tekens bevatten. Vergelijk de tekst om instemming te herkennen, bijvoorbeeld answer == "yes". Waarheidsinterpretatie controleert of een waarde leeg is, niet de betekenis van een woord.

Houd een geldige nul gescheiden van ontbrekende gegevens

Stel dat quantity gelijk is aan None voordat een waarde is opgegeven en terecht 0 mag zijn. if quantity: wijst beide af. Gebruik quantity is not None om te vragen of een waarde aanwezig is; dit accepteert nul.

Voor een echte booleaanse variabele is rechtstreeks toetsen duidelijk. Voor andere waarden doet x == True iets anders dan if x:. Met x = 5 slaagt de controle op waarheidsinterpretatie, maar is 5 == True onwaar; bij numerieke gelijkheid wordt True als gelijk aan 1 behandeld, niet aan elk getal ongelijk aan nul.

and en or geven een waarde terug die ze bekijken

Deze operatoren geven een operand terug, die niet per se een booleaanse waarde is:

ExpressieTeruggegeven waarde
"" or "Guest""Guest"
"Ana" or "Guest""Ana"
0 and 50
3 and 55

Bij or geeft Python de linkerwaarde terug als die als waar wordt beschouwd; anders evalueert het de rechterwaarde en geeft die terug. Bij and geeft het de linkerwaarde terug als die als onwaar wordt beschouwd; anders evalueert het de rechterwaarde en geeft die terug.

display_name = name or "Guest" levert een standaardwaarde voor lege invoer. Hetzelfde patroon met quantity or 1 vervangt een echte nul door 1. Gebruik een standaardwaarde alleen op deze manier als elke als onwaar beschouwde waarde ontbrekend betekent. not gedraagt zich anders: het geeft altijd True of False terug. Als een opgeslagen vlagvariabele booleaans moet zijn, zet has_name = bool(name or nickname) de gekozen tekst om naar een waarheidswaarde.

Belangrijkste punten

  • Lege ingebouwde containers en tekst, nul, None en False worden als onwaar beschouwd.
  • Niet-lege strings blijven als waar beschouwd, ook als er "0" of "False" staat.
  • Gebruik is not None als nul een geldige opgegeven waarde is.
  • and en or geven operanden terug; not geeft altijd een booleaanse waarde terug.
  • Een standaardwaarde met or vervangt elke als onwaar beschouwde linkerwaarde, inclusief nul.
  • strip() maakt invoer met alleen spaties leeg voordat die wordt gecontroleerd.

4.3 Volg paden en test de grenzen

Een script kan zonder syntaxisfout worden uitgevoerd en toch de verkeerde tak kiezen. Bij stapsgewijs volgen doorloop je één uitvoering met de hand. Bij testen voer je gekozen invoer uit en vergelijk je het waargenomen resultaat met het resultaat dat de regel vereist.

Plan en volg een pad

Leg de keuzes voordat je code schrijft vast in stappen in gewone taal, of pseudocode. Een stroomdiagram plaatst elke voorwaarde in een ruit met pijlen voor waar en onwaar. Beide paden hebben een duidelijke volgende stap of een duidelijk einde nodig.

Om code stap voor stap te volgen, schrijf je de beginwaarden op, evalueer je elke bereikte voorwaarde, noteer je toekenningen en neem je de uitvoer exact over. Voor de cijferketen bij score = 72:

Bereikte voorwaardeResultaatActie
score >= 90FalseGa verder met de volgende controle
score >= 80FalseGa verder met de volgende controle
score >= 70TrueStel grade in op "C"
Rest van de ketenNiet geëvalueerdGa verder na de keten

“Niet geëvalueerd” is iets anders dan onwaar. Python heeft al een tak gekozen en heeft de latere vergelijkingen dus niet nodig.

Test elke tak en grens

Een keten met vier takken heeft minstens vier invoeren nodig om elke tak één keer uit te voeren. Kies ze op basis van de bedoelde routes, niet op basis van hoe verschillend de getallen eruitzien. Meerdere hoge scores kunnen allemaal hetzelfde eerste blok doorlopen.

Alleen takdekking kan een verkeerde grens missen. Test voor age >= 18 de waarden 17, 18 en 19. Een onjuiste > geeft bij de twee buitenste controles het verwachte resultaat, maar wijst de exacte grens af. Vergelijk voor een beoordelingsgrens van 90 de waarden 89, 90 en 91; doe hetzelfde bij de andere drempelwaarden. Kies voor decimale invoer nabijgelegen waarden die passen bij de precisie van de meting.

Zoek takken die niet kunnen worden uitgevoerd
if score >= 60:
    print("Pass")
elif score >= 90:
    print("Excellent")

De tweede tak is onbereikbaar. Elke score van minstens 90 voldeed al aan de eerste voorwaarde. Zet de strengere drempelwaarde eerst of verander de bereiken zodat ze bij de bedoelde regel passen.

Een hiaat laat een bedoeld geval onafgehandeld: t < 0 gevolgd door t > 0 slaat nul over. Door een overlapping kunnen meerdere onafhankelijke acties worden uitgevoerd: de afzonderlijke controles t >= 0 en t <= 10 slagen beide voor 5. Een keten voert alleen de eerste tak met een ware voorwaarde uit, maar de volgorde bepaalt nog steeds welke overlappende voorwaarde voorrang krijgt.

Neem lastige invoer mee

Test negatieve waarden, nul, lege tekst en antwoorden met hoofdletters wanneer het script kleine letters verwacht. Als alleen "y" en "n" worden geaccepteerd, geef dan op alle andere tekst een duidelijk antwoord zoals "Please answer y or n".

Wanneer een controle zich onverwacht gedraagt, onderzoek je de waarde en het type voordat je de verdachte vergelijking evalueert:

print(repr(age), type(age))

Voor age = "18" drukt dit '18' <class 'str'> af. Zet de tekst om voordat je age >= 18 probeert; als je de foutieve vergelijking in diezelfde diagnostische print() zou plaatsen, ontstaat een TypeError voordat de diagnostische uitvoer verschijnt. Controleer bij structuurproblemen de inspringing en de syntaxisfoutmelding.

Tot slot kan een vergelijking rechtstreeks een booleaanse vlagvariabele instellen: is_adult = age >= 18. Dit vervangt twee takken die alleen True en False toekennen. Gebruik bool() wanneer de onderliggende expressie een ander soort waarde kan teruggeven.

Belangrijkste punten

  • Volg alleen voorwaarden die het programma bereikt en noteer overgeslagen controles als overgeslagen.
  • Test elke tak en daarnaast de grenswaarde en nabijgelegen waarden van elke grens.
  • Eerdere brede controles kunnen latere takken onbereikbaar maken.
  • Controleer hiaten, overlappingen en onverwachte invoer aan de hand van de bedoelde regel.
  • Onderzoek de waarde en het type voordat je een vergelijking evalueert die kan mislukken.
5

Kies uit gevallen met match

Menu’s en opdrachten vergelijken vaak één waarde met meerdere vaste keuzes. Een match-instructie geeft die keuzes weer als patronen en voert het eerste overeenkomende geval uit. Letterlijke waarden, alternatieven en een afsluitend jokerpatroon volstaan voor veel eenvoudige menu’s. Bindingspatronen en aanvullende voorwaarden bieden meer mogelijkheden, maar een naam in een patroon gedraagt zich anders dan een naam in een vergelijking. Als je dat onderscheid begrijpt, voorkom je dat een geval onbedoeld elke invoer accepteert.

5.1 Vaste waarden, alternatieven en een resttak

Een match-instructie, beschikbaar in Python 3.10 en later, toetst één waarde aan een reeks patronen. Die waarde is de te toetsen waarde. Elke case bevat een patroon en een ingesprongen blok.

Volg het eerste overeenkomende geval
command = "stop"
match command:
    case "start":
        print("Starting")
    case "stop":
        print("Stopping")
    case _:
        print("Unknown command")
print("Ready")

De te toetsen waarde is "stop". Die komt niet overeen met "start", dus probeert Python het volgende geval. "stop" komt overeen en het blok drukt Stopping af. Python verlaat dan de hele match-instructie en drukt Ready af. Slechts één gevalblok wordt uitgevoerd; de uitvoering loopt niet door naar het volgende blok en er is geen break nodig.

De te toetsen waarde "jump" bereikt het afsluitende jokerpatroon, _, dat elke waarde accepteert. De uitvoer is Unknown command en daarna Ready. Zonder dat geval wordt bij een waarde die niet overeenkomt gewoon geen gevalblok uitgevoerd en gaat de uitvoering verder na de instructie.

Houd de indeling en resttak op volgorde

De case-koppen springen 4 spaties in onder match en hun blokken nog eens 4 spaties. Elke kop eindigt met een dubbele punt. Een case _: zonder aanvullende voorwaarde moet als laatste komen, omdat die alles accepteert. Als je er meer gevallen achter zet, ontstaat een SyntaxError: die latere patronen kunnen nooit worden bereikt.

Een jokerpatroon met een aanvullende voorwaarde mag eerder staan, omdat niet aan die extra voorwaarde hoeft te zijn voldaan. Een match-instructie in een script dat achtereenvolgens wordt uitgevoerd, kan ook geen break bevatten; die instructie vereist een omvattende lus.

Begrijp hoe letterlijke waarden overeenkomen

Een patroon met een letterlijke waarde gebruikt een vast getal, een vaste string, True, False of None. Stringpatronen zijn exact en hoofdlettergevoelig: "stop" komt niet overeen met "Stop". Numerieke patronen gebruiken gelijkheid, dus case 1: komt overeen met 1, 1.0 en True, dat gelijk is aan 1.

De patronen True, False en None gebruiken daarentegen identiteit. Daarom komt case True: overeen met de booleaanse waarde True, maar niet met het gehele getal 1. De volgorde van patronen is belangrijk als zowel een numeriek als een booleaans geval de te toetsen waarde zou kunnen accepteren.

Verbind vaste alternatieven met een verticale streep

Een of-patroon verbindt alternatieven met |:

day = int(input("Day number: "))
match day:
    case 6 | 7:
        print("Weekend")
    case 1 | 2 | 3 | 4 | 5:
        print("Weekday")
    case _:
        print("Not a day number")

Voor 6 wordt het eerste blok uitgevoerd; voor 3 het tweede; voor 9 het jokerpatroon. Zonder int() blijft de ingetypte "6" een string en komt die niet overeen met het getal 6.

Gebruik het patroonscheidingsteken |, niet het booleaanse woord or. case "y" or "yes": is ongeldig; case "y" | "yes": is geldig.

KeuzeDuidelijke eerste keuze
Eén te toetsen waarde vergelijken met veel vaste waardenmatch
Bereiken zoals score >= 90if–elif
Voorwaarden met verschillende variabelenif–elif

Voor vaste opdrachten kan een if–elif-keten op basis van gelijkheid dezelfde uitvoer opleveren. Kies de indeling waarin de gevallen het gemakkelijkst te lezen zijn.

Belangrijkste punten

  • match vereist Python 3.10 of later en voert alleen het eerste overeenkomende geval uit.
  • Een jokerpatroon _ zonder aanvullende voorwaarde accepteert alles en moet als laatste komen.
  • Gebruik | om alternatieve patronen te verbinden.
  • Letterlijke strings en getallen komen overeen op basis van gelijkheid; patronen met True, False en None gebruiken identiteit.
  • Zonder resttak wordt bij een te toetsen waarde die niet overeenkomt geen blok uitgevoerd.
  • Gebruik match voor vaste keuzes en if–elif voor gewone bereikcontroles.

5.2 Bindingspatronen, aanvullende voorwaarden en benoemde waarden

Patronen kunnen meer dan een vaste letterlijke waarde controleren. Een patroon kan de te toetsen waarde een naam geven en een aanvullende voorwaarde kan een extra eis controleren voordat het geval wordt geaccepteerd.

Bind eerst de waarde en controleer daarna de aanvullende voorwaarde

Een bindingspatroon is een losse naam zoals n. Het accepteert elke te toetsen waarde en kent die toe aan de naam. Een aanvullende voorwaarde volgt op het patroon met if condition; het blok wordt alleen uitgevoerd als het patroon overeenkomt en de aanvullende voorwaarde waar is.

temperature = -5
match temperature:
    case 0:
        print("Exactly freezing")
    case t if t < 0:
        print("Below freezing by", -t, "degrees")
    case _:
        print("Above freezing")

Bij -5 komt de eerste letterlijke waarde niet overeen. Het volgende patroon bindt -5 aan t en controleert daarna t < 0. De aanvullende voorwaarde is waar, dus is de uitvoer Below freezing by 5 degrees.

Bij 0 wordt het geval met de letterlijke waarde gekozen voordat het bindingspatroon wordt geprobeerd. Bij 12 slaagt het bindingspatroon, maar is de aanvullende voorwaarde onwaar, dus probeert Python het jokerpatroon en drukt Above freezing af. Een onware aanvullende voorwaarde beëindigt het zoeken naar een geval niet.

Een losse naam zoekt geen constante op

Stel dat QUIT = "q". Het is verleidelijk om case QUIT: te schrijven om te controleren of de te toetsen waarde gelijk is aan die waarde. Maar een losse naam is altijd een bindingspatroon, ook als die uit hoofdletters bestaat. Het geval accepteert elke te toetsen waarde en overschrijft QUIT daarmee.

Als er meer gevallen volgen op een bindingspatroon zonder aanvullende voorwaarde, meldt Python een syntaxisfout omdat het bindingspatroon die gevallen onbereikbaar maakt. Als het bindingspatroon als laatste staat, kan de fout ongemerkt worden uitgevoerd. Vergelijk expliciet met een aanvullende voorwaarde:

QUIT = "q"
key = "x"
match key:
    case k if k == QUIT:
        print("Quit")
    case _:
        print("Keep working")

Hier bindt k de waarde "x". De aanvullende voorwaarde vergelijkt die met de bestaande "q", is onwaar en laat het jokerpatroon Keep working afdrukken. Een letterlijke case "q": is eenvoudiger als de vaste waarde rechtstreeks kan worden geschreven.

Herken een waardepatroon met een punt

Een naam met een punt zoals math.pi is een waardepatroon, geen bindingspatroon. Het zoekt een bestaande waarde op en vergelijkt de te toetsen waarde daarmee met ==. Benoemde constanten uit modules of klassen kunnen deze vorm gebruiken. Het onderscheid zit in de punt: case n: kent een waarde toe aan een naam; een patroon met een punt controleert een bestaande waarde.

Geef een specifieke overeenkomst een naam met as
answer = "y"
match answer:
    case "y" | "yes" as accepted:
        print("Accepted:", accepted)
    case _:
        print("Please answer y or yes")

Het of-patroon controleert de toegestane strings en as slaat de overeenkomende te toetsen waarde op in accepted. Voor "y" is de uitvoer Accepted: y. Het vervangt de invoer niet door een standaardwoord: "yes" zou "yes" opslaan. "Yes" komt met geen van beide strings overeen, omdat hoofdletters nog steeds van belang zijn.

Een of twee aanvullende voorwaarden kunnen goed tussen vaste gevallen passen. Wanneer bijna elk geval een bereikcontrole is of verschillende variabelen gebruikt, is een if–elif-keten meestal duidelijker. Beide structuren hebben een afsluitende resttak nodig als elke invoer een antwoord moet krijgen.

Belangrijkste punten

  • Een patroon met een losse naam bindt de te toetsen waarde, ook als die naam al een waarde heeft.
  • Een aanvullende voorwaarde wordt gecontroleerd nadat een patroon overeenkomt; bij een onware voorwaarde kunnen latere gevallen worden geprobeerd.
  • Een waardepatroon met een punt vergelijkt met een bestaande waarde.
  • as geeft de te toetsen waarde die door een specifieker patroon is geaccepteerd een naam.
  • Gebruik een letterlijke waarde of een vergelijking met een aanvullende voorwaarde om te voorkomen dat een constantenaam onbedoeld een waarde bindt.

If-instructies in Python: voorbeelden

5 Walkthroughs

1

Zet waarden om in betrouwbare vergelijkingen

13 stappen
Volg een controle van een opslaggrens, van numerieke vergelijkingen naar ingetypte invoer, tekstcontroles en een inclusief bereik.
  1. 1
    IntroductieEen opslaggrens vereist een exacte controle

    Een opslagkluis accepteert pakketten met een gewicht van 1 tot en met 8 kilogram, inclusief beide grenzen. Voordat het programma een actie kiest, moet het die regel omzetten in een ja-neeantwoord, een booleaanse waarde die door een vergelijking wordt opgeleverd, zodat elke latere beslissing op een exacte test berust.

    Begin met afzonderlijke vergelijkingen en combineer daarna de twee grenzen tot een bereik. Controleer onderweg of een waarde een getal is of alleen tekst die op een getal lijkt.

  2. 2
    UitlegEen vergelijking levert een booleaanse waarde op

    Met weight = 8 is de expressie weight < 8 gelijk aan False: acht is niet kleiner dan zichzelf. De expressie weight <= 8 is True, omdat gelijkheid meetelt.

    Beide resultaten hebben het type bool. Schrijf True en False met hoofdletters en zonder aanhalingstekens. Tekst zoals "True" is een string en een niet-gedefinieerde true met een kleine letter veroorzaakt een NameError in plaats van een booleaanse waarde op te leveren.

  3. 3
    VoorbeeldSla het resultaat op zonder het gewicht te veranderen
    weight = 8
    fits_upper_limit = weight <= 8
    print(weight, fits_upper_limit)
    

    Eerst wordt 8 <= 8 geëvalueerd tot True. De toekenning slaat die booleaanse waarde op in fits_upper_limit; het oorspronkelijke gewicht blijft ongewijzigd. De uitvoer is 8 True.

    De enkele = voert de toekenning uit. De vergelijking gebruikt <=; gebruik == voor een vraag over gelijke waarden.

  4. 4
    UitdagingWerkt een vergelijking de waarde bij?

    Voorspel de uitvoer:

    weight = 6
    weight == 8
    print(weight)
    

    ---reveal---

    Het programma drukt 6 af. De middelste regel vergelijkt het huidige gewicht met 8, maar kent nooit een vervangende waarde toe. In een script wordt het onware resultaat niet gebruikt. Een enkele toekenning weight = 8 zou de uiteindelijke uitvoer veranderen in 8.

  5. 5
    VerbandEen berekening kan de te vergelijken waarde leveren

    Een controle voor gehele getallen kan een rekenkundig resultaat vergelijken: n % 2 == 0 bepaalt eerst de rest na deling door 2 en controleert daarna of die gelijk is aan nul.

    Voor n = -9 is de rest 1, dus is de controle onwaar. De rest in Python met positieve deler 2 is 1 voor oneven gehele getallen, ook als het oorspronkelijke gehele getal negatief is. De rest vergelijken met 1 controleert of het getal oneven is.

  6. 6
    TipBerekende zwevendekommagetallen kunnen iets verschillen

    0.1 + 0.2 wordt opgeslagen als 0.30000000000000004, dus mislukt de controle of de som exact gelijk is aan 0.3.

    Een controle met een tolerantie stelt een andere vraag: abs((0.1 + 0.2) - 0.3) < 1e-9 controleert of de afstand kleiner is dan een miljardste. abs() verwijdert het teken van het verschil. Deze controle is waar; ze accepteert een kleine afwijking in plaats van exacte gelijkheid te stellen.

  7. 7
    VoorbeeldIngetypte cijfers zijn aanvankelijk tekst
    weight = input("Weight in kilograms: ")
    

    Als de gebruiker 8 intypt, bevat de variabele "8". De vergelijking weight <= 8 veroorzaakt een TypeError, omdat ze een string en een geheel getal op volgorde probeert te vergelijken.

    Lees een decimale meting met weight = float(input("Weight in kilograms: ")). Dezelfde ingetypte cijfers leveren nu 8.0 op, dat numeriek met 8 kan worden vergeleken.

  8. 8
    UitlegStrings volgen tekens vanaf links

    De volgorde van tekst is gebaseerd op Unicodecodepunten. "18" < "8" is waar omdat het eerste ongelijke paar "1" en "8" is; Python behandelt die strings niet als achttien en acht.

    Hoofdletters, kleine letters en spaties zijn ook van belang. "ready" == "Ready" is onwaar. Als je answer.strip().lower() met "ready" vergelijkt, verwijder je witruimte aan de randen en normaliseer je het hoofdlettergebruik vóór de gelijkheidscontrole.

  9. 9
    UitdagingControleer wat lidmaatschap werkelijk vraagt

    Evalueer deze twee controles:

    "box" in "mailbox"
    "Box" in "mailbox"
    

    ---reveal---

    De eerste is True en de tweede is False. Een lidmaatschapscontrole zoekt naar de exacte deelstring, inclusief hoofdlettergebruik. De letters "box" komen samen voor aan het einde van "mailbox"; de hoofdletter "B" komt daar niet voor. not in zou elk resultaat omkeren.

  10. 10
    VoorbeeldControleer beide grenzen van de kluisregel
    weight = 8
    fits_locker = 1 <= weight <= 8
    print(fits_locker)
    

    De keten controleert 1 <= 8 en 8 <= 8. Beide slagen, dus is het resultaat True. Bij weight = 0.5 slaagt de onderste controle niet; bij 8.5 slaagt de bovenste controle niet.

    Elke aangrenzende vergelijking in een keten moet slagen. Als je een van beide <=-operatoren vervangt door <, sluit je dat eindpunt uit.

  11. 11
    KernpuntOntbrekende gegevens zijn een andere vraag

    None betekent dat er geen waarde aanwezig is. Controleer dit met weight is None of weight is not None.

    De operator is vraagt of referenties hetzelfde object aanduiden. Numerieke gelijkheid gebruikt ==, dus vervang weight == 8 niet door weight is 8. Waarden kunnen gelijk zijn zonder hetzelfde object te zijn en een identiteitsvergelijking met een letterlijke numerieke waarde geeft een waarschuwing.

  12. 12
    UitdagingCombineer omzetting met een grenscontrole

    Een script voert weight = float(input("Weight: ")) uit en de gebruiker typt "8.5". Wat geeft 1 <= weight <= 8 terug en wijst de omzetting zelf de invoer af?

    ---reveal---

    Het geeft False terug omdat 8.5 <= 8 niet slaagt. De omzetting slaagt: 8,5 is een geldig zwevendekommagetal. Tekst omzetten levert een numeriek type op; de bereikcontrole bepaalt afzonderlijk of dat getal is toegestaan.

  13. 13
    SamenvattingDrie vragen om uit elkaar te houden

    Kies de operator die bij de grens past, bepaal het type van de waarde en volg daarna de vergelijking stap voor stap.

    Een numerieke vergelijking van de volgorde vereist numerieke waarden. Stringcontroles behouden exacte tekens, tenzij je de tekst opschoont. Een bereik heeft beide grenzen nodig, lidmaatschap vraagt naar een deelstring en identiteit is het juiste middel om None te controleren.

2

Volg een bezorgkeuze door de takken

14 stappen
Bouw een bezorgkeuze op van een enkele if naar twee alternatieven, een gekozen waarde en geordende servicecategorieën.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVan een regel naar een pad door code
  2. 2
    VoorbeeldEen waarschuwing die kan worden overgeslagen
  3. 3
    TipHerstel de structuur voordat je resultaten interpreteert
  4. 4
    UitdagingVerplaats de laatste regel naar het blok
  5. 5
    VoorbeeldGeef het pad voor onwaar een actie
  6. 6
    KernpuntElse betekent alle afgewezen invoer
  7. 7
    VoorbeeldKies alleen het tarief in één expressie
  8. 8
    UitdagingLees de waarden rond de voorwaarde
  9. 9
    VoorbeeldStel drie servicecategorieën op
  10. 10
    VoorbeeldGebruik de eerdere mislukte controle om het bereik te beperken
  11. 11
    UitdagingVerander de volgorde van overlappende controles
  12. 12
    VerbandEen nieuwe if is een nieuwe keuze
  13. 13
    UitdagingBepaal zowel de aanduiding als het tarief
  14. 14
    SamenvattingStem de structuur af op de keuze
3

Bouw en bescherm een gecombineerde voorwaarde

13 stappen
Vertaal een boekingsregel, groepeer alternatieven, gebruik beschermende voorwaarden met kortsluitevaluatie en ontken een bereik correct.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieMeerdere feiten kunnen één actie aansturen
  2. 2
    UitlegVereis beide feiten met and
  3. 3
    VoorbeeldSta elk van beide betaalmogelijkheden toe met or
  4. 4
    UitdagingKies een rij die voldoet
  5. 5
    TipGeef elke vergelijking eigen operanden
  6. 6
    VoorbeeldPlaats alternatieven binnen de gezamenlijke eis
  7. 7
    KernpuntGroepering is niet de uitvoeringsvolgorde
  8. 8
    VoorbeeldZet een beschermende voorwaarde vóór een gemiddelde
  9. 9
    UitdagingWelk werk wordt bereikt?
  10. 10
    UitlegEen bereik ontkennen verandert het verbindingswoord
  11. 11
    UitdagingBehoud de inbegrepen eindpunten
  12. 12
    UitdagingVertaal twee eisen en één uitsluiting
  13. 13
    SamenvattingLees de betekenis, de groepering en daarna het bereikte werk
4

Valideer, classificeer en test een bezorgaanvraag

16 stappen
Volg geneste controles, behoud geldige nulwaarden en stel tests op die hiaten en verkeerde drempelwaarden blootleggen.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieElke invoer heeft het bedoelde pad nodig
  2. 2
    VoorbeeldValideer voordat je een service kiest
  3. 3
    VoorbeeldVolg het binnenste pad
  4. 4
    UitdagingBepaal bij welke instructie else hoort
  5. 5
    VerbandVerminder de nesting bij één gezamenlijke actie
  6. 6
    UitlegNul en ontbrekend worden beide als onwaar beschouwd
  7. 7
    VoorbeeldTekst die ontkennend lijkt kan toch voldoen
  8. 8
    UitdagingBehoud een werkelijke nul
  9. 9
    KernpuntEen operator kan tekst kiezen
  10. 10
    VoorbeeldLeg een pad vast zonder controles te verzinnen
  11. 11
    TipKies tests voor paden en grenzen
  12. 12
    UitdagingEen brede voorwaarde verbergt een latere tak
  13. 13
    VerbandZoek naar hiaten en onbedoelde overlappingen
  14. 14
    TipOnderzoek de waarde vóór een riskante vergelijking
  15. 15
    UitdagingTest een herstelde keuze volledig
  16. 16
    SamenvattingGeef waarden en tests een duidelijk doel
5

Toets opdrachten met match en voeg gevallen met aanvullende voorwaarden toe

15 stappen
Bouw een opdrachtmenu, volg een match-instructie met een aanvullende voorwaarde voor een getal en maak onderscheid tussen bindingsnamen en bestaande constanten.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieEén te toetsen waarde, meerdere mogelijke gevallen
  2. 2
    VoorbeeldStel het opdrachtmenu op
  3. 3
    KernpuntHet volgende geval wordt niet automatisch uitgevoerd
  4. 4
    VoorbeeldGebruik één blok voor twee exacte opdrachten
  5. 5
    UitdagingPlaats de terugvalmogelijkheid waar die kan helpen
  6. 6
    TipControleer het gedrag van numerieke en booleaanse patronen
  7. 7
    UitlegEen losse naam bindt elke te toetsen waarde
  8. 8
    VoorbeeldVoeg een aanvullende voorwaarde toe aan de gebonden waarde
  9. 9
    UitdagingGa verder na een onware aanvullende voorwaarde
  10. 10
    VoorbeeldEen naam in hoofdletters bindt nog steeds
  11. 11
    VerbandEen punt verandert het opzoekgedrag
  12. 12
    VoorbeeldGeef een overeenkomend letterlijk alternatief een naam
  13. 13
    UitdagingKies een menustructuur voor de taak
  14. 14
    UitdagingBehoud een vaste naam en sta een terugvalmogelijkheid toe
  15. 15
    SamenvattingLees patronen voordat je gevalblokken leest

If-instructies in Python: oefenvragen

40 Oefenvragen in 4 sets

Set 1: Pas regels toe en onderzoek verkeerde takken10 Oefenvragen

Vraag 1 van 10

Welke booleaanse waarde wordt opgeslagen in is_odd?

n = -13
is_odd = n % 2 == 1
  1. False, omdat n negatief is.
  2. False, omdat de rest -1 is.
  3. True, omdat elk getal ongelijk aan nul oneven is.
  4. True, omdat de rest 1 is.
Toon antwoordVerberg antwoord
Antwoord: D
Met de positieve deler 2 geeft Python een rest van 1 voor het negatieve oneven gehele getal -13. Door die rest met 1 te vergelijken, wordt True opgeslagen. Een rest van -1 zou een andere tekenregel gebruiken dan de regel van Python voor % met een positieve deler.

Vraag 2 van 10

Een programma leest level = input("Level: "). De gebruiker typt 16. Wat gebeurt er wanneer het programma vervolgens level < 20 evalueert?
  1. Het veroorzaakt een TypeError.
  2. Het levert True op.
  3. Het levert False op.
  4. Het verandert level in 20.
Toon antwoordVerberg antwoord
Antwoord: A
input() slaat de tekst "16" op, niet het gehele getal 16. Python kan een string en een geheel getal niet op volgorde vergelijken, dus veroorzaakt de vergelijking een TypeError. Na een omzetting met int() zou ze waar zijn, maar de getoonde code heeft die omzetting niet uitgevoerd.

Vraag 3 van 10

Wat is de speciale instructie van Python die niets doet voor een nog niet ingevulde tak?
  1. else
  2. elif
  3. pass
  4. if
Toon antwoordVerberg antwoord
Antwoord: C
pass is de speciale instructie van Python die geen actie uitvoert en geeft een nog niet ingevulde tak dus een geldig ingesprongen blok. Een else begint een alternatieve clausule en kan niet als dat blok dienen. De tak heeft nog steeds een instructie nodig, ook als de voorwaarde onwaar zou zijn.

Vraag 4 van 10

Wat is de eindwaarde van label?

points = 37
if points >= 30:
    label = "High"
if points >= 10:
    label = "Middle"
else:
    label = "Low"
  1. "High"
  2. "Middle"
  3. "Low"
  4. "High Middle"
Toon antwoordVerberg antwoord
Antwoord: B
De eerste onafhankelijke if kent "High" toe, maar daarna bereikt de uitvoering de tweede if. Ook die voorwaarde is waar, dus overschrijft die label met "Middle" en slaat de bijbehorende else over. Als "High" behouden zou blijven, zou de tweede if ten onrechte worden behandeld als een elif in de eerste keuze.

Vraag 5 van 10

Welk paar booleaanse invoerwaarden maakt is_open and not is_full waar?
  1. is_open = False, is_full = False
  2. is_open = True, is_full = True
  3. is_open = False, is_full = True
  4. is_open = True, is_full = False
Toon antwoordVerberg antwoord
Antwoord: D
Voor de eerste eis moet is_open waar zijn en voor de ontkende tweede eis moet is_full onwaar zijn. Als beide invoerwaarden waar zijn, wordt not is_full onwaar en slaagt de gecombineerde voorwaarde niet. Alleen ruimte hebben voldoet evenmin aan de eis dat de locatie open is.

Vraag 6 van 10

Een boeking is alleen toegestaan op een werkdag en alleen als de gebruiker tegoed of een tegoedbon heeft. Welke expressie past die regel toe?
  1. is_weekday and (has_credit or has_voucher)
  2. is_weekday and has_credit and has_voucher
  3. (is_weekday and has_credit) or has_voucher
  4. is_weekday or (has_credit and has_voucher)
Toon antwoordVerberg antwoord
Antwoord: A
De eis van een werkdag geldt voor beide betaalmogelijkheden, dus horen de betaalalternatieven samen tussen haakjes. Zonder die groepering bindt and eerst en kan een tegoedbon alleen de expressie waar maken, zelfs op een dag die geen werkdag is. De versie met or voor de werkdag accepteert ook dagen die niet aan de genoemde eis voldoen.

Vraag 7 van 10

Wat wordt afgedrukt?

is_open = False
has_booking = True
if is_open:
    if has_booking:
        print("Enter")
    else:
        print("Book first")
else:
    print("Closed")
  1. Alleen Book first
  2. Alleen Closed
  3. Enter, daarna Closed
  4. Er wordt niets afgedrukt
Toon antwoordVerberg antwoord
Antwoord: B
De onware buitenste voorwaarde slaat het hele blok over, inclusief de binnenste boekingscontrole en de bijbehorende else. De buitenste else, op hetzelfde inspringniveau als if is_open:, drukt Closed af. De keuze voor Enter zou een binnenste voorwaarde controleren waarvan Python de omvattende tak nooit ingaat.

Vraag 8 van 10

Welke waarde geeft "" or "Reader" terug?
  1. De lege string ""
  2. De booleaanse waarde False
  3. De string "Reader"
  4. De booleaanse waarde True
Toon antwoordVerberg antwoord
Antwoord: C
De lege linkerstring wordt als onwaar beschouwd, dus evalueert or de rechteroperand "Reader" en geeft die terug. Dit resultaat is een string, geen booleaanse waarde. Als True zou worden teruggegeven, zou de waarheidswaarde waarmee een operand wordt gekozen worden verward met de operand die de expressie daadwerkelijk teruggeeft.

Vraag 9 van 10

Welke gevalkop laat zowel de string "edit" als de string "change" in één blok terechtkomen?
  1. case "edit" | "change":
  2. case "edit" or "change":
  3. case "edit" and "change":
  4. case "edit" == "change":
Toon antwoordVerberg antwoord
Antwoord: A
Een of-patroon scheidt alternatieven met het symbool |, zodat elk van beide exacte strings met het geval kan overeenkomen. Het booleaanse woord or is geen geldig patroonscheidingsteken. Een gevalkop beschrijft patronen waarmee een waarde moet overeenkomen, dus kan gewone syntaxis voor booleaanse expressies hier niet worden gebruikt.

Vraag 10 van 10

Wat wordt afgedrukt?

value = 11
match value:
    case n if n < 0:
        print("Negative", n)
    case n if n % 2 == 0:
        print("Even", n)
    case _:
        print("Other")
  1. Negative 11
  2. Even 11
  3. Er wordt niets afgedrukt
  4. Alleen Other
Toon antwoordVerberg antwoord
Antwoord: D
Het eerste bindingspatroon accepteert 11, maar de aanvullende voorwaarde voor een negatief getal slaagt niet. Python probeert het volgende geval, waarvan het bindingspatroon ook slaagt, maar waarvan de aanvullende voorwaarde voor een even getal niet slaagt omdat de rest 1 is. Daarna drukt het Other af; een geslaagd bindingspatroon alleen kiest geen blok als de aanvullende voorwaarde onwaar is.
Set 2: Volg waarden door meerdere keuzes10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een berekening geeft a = 0.1 + 0.2 en een streefwaarde is b = 0.3. De controle moet verschillen kleiner dan 1e-8 accepteren. Welke controle doet dat?
  1. a == b
  2. abs(a - b) > 1e-8
  3. abs(a - b) < 1e-8
  4. abs(a + b) < 1e-8
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat wordt afgedrukt?

remaining = 4
if remaining > 0:
    remaining = 0
if remaining == 0:
    print("Empty")
print(remaining)
  1. Empty, daarna 0
  2. Alleen 0
  3. Empty, daarna 4
  4. Alleen 4
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Welke waarde wordt toegekend aan label?

has_booking = True
label = "Reserved" if has_booking else "Open"
  1. True
  2. "Open"
  3. False
  4. "Reserved"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Wat gebeurt er wanneer deze expressie wordt geëvalueerd?

is_admin = True
count = 0
total = 18
is_admin or count != 0 and total / count > 6
  1. Er ontstaat direct een ZeroDivisionError.
  2. De expressie geeft True terug zonder te delen.
  3. De expressie geeft False terug zonder te delen.
  4. Er wordt gedeeld na controle van count.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat wordt afgedrukt en waarom?

has_badge = True
is_active = False
if has_badge:
    if is_active:
        print("Enter")
else:
    print("Get a badge")
print("Checked")
  1. Get a badge, daarna Checked; de binnenste controle slaagt niet.
  2. Enter, daarna Checked; de controle op een pas slaagt.
  3. Alleen Checked; de buitenste else wordt overgeslagen.
  4. Alleen Get a badge; de binnenste else wordt uitgevoerd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Nul is een geldig opgegeven aantal en None betekent dat er geen aantal is opgegeven. Welke toekenning gebruikt alleen voor ontbrekende gegevens de standaardwaarde 9?
  1. count = supplied or 9
  2. count = 9 if not supplied else supplied
  3. count = supplied if supplied else 9
  4. count = 9 if supplied is None else supplied
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Deze indeling van gehele getallen moet voor elk geheel getal precies één aanduiding voor het teken afdrukken. Welke invoer laat een ontbrekend geval zien?

if balance < 0:
    print("Negative")
elif balance > 0:
    print("Positive")
  1. 0
  2. -1
  3. 1
  4. 2
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Wat wordt afgedrukt?

reply = "later"
match reply:
    case "now" | "later" as chosen:
        print(chosen)
    case _:
        print("Unknown")
  1. now
  2. later
  3. Unknown
  4. True
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een sensor accepteert numerieke meetwaarden van -4 tot en met 9. Welke voorwaarde is equivalent aan not (-4 <= reading <= 9)?
  1. reading <= -4 or reading >= 9
  2. reading < -4 and reading > 9
  3. reading >= -4 and reading <= 9
  4. reading < -4 or reading > 9
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Wat gebeurt er met EXIT?

EXIT = "x"
key = "z"
match key:
    case EXIT:
        print(EXIT)
  1. Het blijft "x" en er wordt niets afgedrukt.
  2. Het blijft "x" en x wordt afgedrukt.
  3. Het wordt "z" en z wordt afgedrukt.
  4. Het wordt True en True wordt afgedrukt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Lees vergelijkingen en volg keuzes10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Welke waarde wordt toegekend aan fee?

has_pass = False
fee = 2 if has_pass else 7
  1. 7
  2. 2
  3. False
  4. 0
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een pakket mag hoogstens 6 kilogram wegen. Welke controle accepteert met weight precies de toegestane gewichten?
  1. weight < 6
  2. weight >= 6
  3. weight <= 6
  4. weight > 6
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Wat is de uitkomst van "14" < "7"?
  1. False, omdat 14 groter is dan 7.
  2. True, omdat "1" vóór "7" komt.
  3. False, omdat de strings verschillen.
  4. True, omdat twee cijfers meer zijn dan één.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Wat wordt afgedrukt?

stock = 0
if stock > 0:
    print("Available")
print("Checked")
  1. Alleen Available
  2. Available, daarna Checked
  3. Er wordt niets afgedrukt
  4. Alleen Checked
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat wordt afgedrukt?

points = 46
if points >= 50:
    print("Gold")
elif points >= 30:
    print("Silver")
elif points >= 10:
    print("Bronze")
else:
    print("Starter")
  1. Silver, daarna Bronze
  2. Alleen Silver
  3. Alleen Bronze
  4. Alleen Starter
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een download kan starten als een gebruiker een abonnement of een dagpas heeft, ook als de gebruiker beide heeft. Welke voorwaarde voert de regel uit?
  1. has_subscription or has_day_pass
  2. has_subscription and has_day_pass
  3. not has_subscription and has_day_pass
  4. not (has_subscription or has_day_pass)
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Voor numerieke waarden total en items moet een vlagvariabele alleen waar zijn als een gemiddelde hoger is dan 8. Nul elementen moet onwaar opleveren zonder een deling te proberen. Welke expressie voert beide eisen uit?
  1. total / items > 8 and items != 0
  2. items == 0 or total / items > 8
  3. items != 0 or total / items > 8
  4. items != 0 and total / items > 8
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Wat geeft bool("no") terug?
  1. De string "no"
  2. False
  3. True
  4. De waarde None
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een regel voor gehele getallen moet visits van minstens 24 accepteren. Een programmeur schreef visits > 24. Welke invoer legt het onjuiste resultaat het directst bloot?
  1. 23
  2. 25
  3. 24
  4. 26
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Wat wordt afgedrukt?

mode = "SAVE"
match mode:
    case "save" | "write":
        print("Stored")
    case _:
        print("Unknown")
print("End")
  1. Alleen Stored
  2. Unknown, daarna End
  3. Stored, daarna End
  4. Alleen Unknown
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Herstel en test gecombineerde keuzeregels10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een invoervraag accepteert "go" ondanks witruimte aan de randen en verschillen in hoofdlettergebruik. Ze moet "gopher" en "stop" afwijzen. Welke voorwaarde doet dit?
  1. answer.strip().lower() in "go"
  2. answer.strip().lower() == "go"
  3. "go" in answer.strip().lower()
  4. answer.strip() == "go"
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Wat wordt afgedrukt?

units = 0
amount = 15
result = amount / units if units != 0 else "No units"
print(result)
  1. Alleen No units
  2. Alleen 0
  3. Alleen 15
  4. Er ontstaat een ZeroDivisionError.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Bij een geheel aantal punten is de beoordeling "High" voor minstens 70 punten, "Mid" voor 35 tot en met 69 en "Low" onder 35. De controles gebruiken >= in één keten. Welke volgorde van takken en aanduidingen voert de regel uit?
  1. >= 35: Mid; >= 70: High; anders: Low
  2. >= 70: High; >= 35: Low; anders: Mid
  3. >= 35: High; >= 70: Mid; anders: Low
  4. >= 70: High; >= 35: Mid; anders: Low
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een service mag alleen worden uitgevoerd als minstens één van de twee verbindingen, wired en wireless, beschikbaar is en er geen onderhoud plaatsvindt. Welke voorwaarde voert de hele regel uit?
  1. wired or wireless and not maintenance
  2. wired and wireless and not maintenance
  3. (wired or wireless) and not maintenance
  4. (wired or wireless) or not maintenance
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Scores zijn gehele getallen van 0 tot en met 12. Geldige scores van minstens 9 krijgen "High"; andere geldige scores krijgen "Low"; ongeldige scores krijgen "Invalid". Een script deelt in met if score >= 9: en else:, maar valideert het bereik nooit. Welke structuur herstelt dit voor elke gehele score?
  1. Controleer buiten score >= 0; deel binnen in; druk anders Invalid af.
  2. Controleer buiten 0 <= score <= 12; deel binnen in; druk anders Invalid af.
  3. Controleer buiten score <= 12; deel binnen in; druk anders Invalid af.
  4. Deel eerst in; controleer dan 0 <= score <= 12 en druk Invalid af als dit niet slaagt.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Welke waarde wordt opgeslagen in chosen?

preferred = ""
alternate = "Morgan"
chosen = preferred or alternate or "Visitor"
  1. "Morgan"
  2. "Visitor"
  3. True
  4. ""
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Voor gehele scores moet een indeling "Top" gebruiken voor minstens 80, "Pass" voor 40 tot en met 79 en "Retry" onder 40. Welke testinvoer legt een fout in deze code bloot?

if score >= 40:
    print("Pass")
elif score >= 80:
    print("Top")
else:
    print("Retry")
  1. 39
  2. 40
  3. 79
  4. 80
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Wat wordt afgedrukt?

value = True
match value:
    case 1:
        print("Number case")
    case True:
        print("Boolean case")
    case _:
        print("Other case")
  1. Alleen Boolean case
  2. Number case, daarna Boolean case
  3. Alleen Number case
  4. Alleen Other case
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een keten met vier takken drukt één van vier aanduidingen af. Vier verschillende invoeren drukken allemaal de eerste aanduiding af. Hoeveel takken hebben deze tests gedekt?
  1. Eén tak
  2. Twee takken
  3. Drie takken
  4. Vier takken
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Welk gereserveerd woord leidt de extra voorwaarde na een patroon in case n ___ n > 4: in?
  1. and
  2. if
  3. as
  4. elif
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

55 Kernbegrippen, elk met een definitie

A

aaneengeschakelde vergelijking
Een aaneengeschakelde vergelijking verbindt aangrenzende vergelijkingen in één expressie en slaagt alleen als elke vergelijking in de keten slaagt.
De aaneengeschakelde vergelijking 2 <= level <= 9 omvat 2 en 9, maar wijst een niveau van 10 af.
aanvullende voorwaarde bij een patroon
Een aanvullende voorwaarde bij een patroon is een if-voorwaarde na een patroon waaraan moet zijn voldaan voordat het blok wordt uitgevoerd; bij een onware voorwaarde kunnen latere gevallen worden geprobeerd.
De aanvullende voorwaarde bij een patroon in case n if n < 0: controleert het gebonden getal voordat het negatieve geval wordt gekozen.
als onwaar beschouwde waarde
Een als onwaar beschouwde waarde is een waarde waardoor een voorwaarde niet slaagt, waaronder nul, None, False, lege tekst en lege ingebouwde collecties.
Een als onwaar beschouwde waarde nul laat quantity or 1 de standaardwaarde kiezen, ook als nul bewust is ingevoerd.
als waar beschouwde waarde
Een als waar beschouwde waarde is een waarde waardoor een voorwaarde slaagt, waaronder getallen ongelijk aan nul en niet-lege strings, zelfs strings die onwaar zeggen.
De als waar beschouwde waarde "False" slaagt voor if answer: omdat de tekens de string niet leeg maken.
as-patroon
Een as-patroon geeft de door een specifieker patroon geaccepteerde te toetsen waarde een naam en bewaart de daadwerkelijke overeenkomende waarde voor gebruik in het blok.
Het as-patroon in case "y" | "yes" as reply: slaat "y" op wanneer die string wordt opgegeven.

B

beschermende voorwaarde
Een beschermende voorwaarde is een controle vóór een bewerking, zodat kortsluitevaluatie die bewerking kan voorkomen wanneer ze zou mislukken.
Een beschermende voorwaarde controleert count != 0 vóór de deling in count != 0 and total / count > 10.
bindingspatroon
Een bindingspatroon is een losse naam die elke te toetsen waarde accepteert en die aan de naam toekent, ook wanneer de naam al een waarde bevat.
Het bindingspatroon case STOP: overschrijft STOP; hoofdletters maken er geen opzoeking van.
booleaanse operator
Een booleaanse operator combineert waarheidswaarden of keert ze om; Python gebruikt voor deze bewerkingen de woorden and, or en not met kleine letters.
Een booleaanse operator verbindt de twee eisen in has_ticket and is_open tot één controle.
booleaanse waarde
Een booleaanse waarde is een van de twee waarden True en False, die Python gebruikt om het resultaat van een ja-neecontrole uit te drukken.
De booleaanse waarde die door is_ready = count >= 4 wordt opgeslagen, is True wanneer count gelijk is aan 4.
buitenste voorwaarde
Een buitenste voorwaarde stuurt de toegang aan tot een blok dat een andere keuze bevat en bepaalt of de binnenste controle überhaupt wordt bereikt.
Wanneer de buitenste voorwaarde has_ticket onwaar is, wordt de binnenste leeftijdsvergelijking overgeslagen.

C

codeblok
Een codeblok is een groep instructies op hetzelfde inspringniveau die Python behandelt als de inhoud van een voorwaardelijke of andere instructie.
Twee ingesprongen aanroepen van print() onder een temperatuurcontrole staan in het codeblok dat door de controle wordt aangestuurd.
conjunctie
Een conjunctie is een met and verbonden voorwaarde die alleen slaagt wanneer aan beide eisen is voldaan, zoals de twee grenzen van een bereik.
De conjunctie age >= 13 and age <= 19 wijst leeftijden aan beide kanten van het tienerbereik af.

D

drempelwaarde
Een drempelwaarde is een waarde waarbij de uitkomst van een keuze verandert; de vergelijkingsoperator bepaalt aan welke kant die waarde meetelt.
Bij een beoordelingsdrempel van 90 valt 90 in de hogere categorie wanneer de controle score >= 90 is.

E

elif-clausule
Een elif-clausule voegt een extra voorwaardelijke tak toe aan een if-keten en wordt pas bekeken nadat alle eerdere voorwaarden niet zijn geslaagd.
De elif-clausule voor scores van minstens 80 wordt alleen bereikt nadat de controle voor 90 niet is geslaagd.
else-tak
Een else-tak is het alternatieve blok dat wordt uitgevoerd wanneer de voorwaarde van de bijbehorende if onwaar is; de kop else: heeft geen voorwaarde.
Bij een if-controle op even getallen wordt de else-tak uitgevoerd voor -7, omdat de rest niet nul is.
equivalente voorwaarden
Equivalente voorwaarden geven voor elke toegestane combinatie van hun invoerwaarden dezelfde waarheidswaarde, ook als ze anders zijn geschreven.
De equivalente voorwaarden not (age >= 18) en age < 18 komen voor elke gehele leeftijd overeen.

G

geneste voorwaardelijke instructie
Een geneste voorwaardelijke instructie is een voorwaardelijke instructie binnen een andere tak, zodat de controle alleen wordt bereikt wanneer de uitvoering die buitenste tak ingaat.
De geneste voorwaardelijke instructie controleert de leeftijd van een bezoeker pas nadat de buitenste controle op een kaartje slaagt.
grenswaardetest
Een grenswaardetest controleert een grens en nabijgelegen invoer om een vergelijking te vinden die het verkeerde eindpunt insluit of uitsluit.
Een grenswaardetest gebruikt 17, 18 en 19 om een regel voor gehele getallen te controleren die is geschreven als age >= 18.

H

hoofdlettergevoelige vergelijking
Een hoofdlettergevoelige vergelijking behandelt hoofdletters en kleine letters als verschillende tekens bij het controleren van tekst op gelijkheid of volgorde.
Een hoofdlettergevoelige vergelijking wijst "Yes" af wanneer de exact vereiste tekst "yes" is.

I

identiteitscontrole
Een identiteitscontrole gebruikt is of is not om te controleren of referenties hetzelfde object aanduiden, vaak om None te herkennen.
De identiteitscontrole result is None maakt onderscheid tussen een ontbrekend resultaat en een werkelijke waarde nul.
if-instructie
Een if-instructie controleert een voorwaarde en voert het ingesprongen blok alleen uit als die als waar wordt beschouwd. Daarna gaat de uitvoering verder na dat blok.
De if-instructie met de kop if stock > 0: slaat het bijbehorende blok over wanneer stock nul is.
inclusieve grens
Een inclusieve grens is een grens die bij het geaccepteerde bereik hoort en in een numerieke vergelijking met <= of >= wordt uitgedrukt.
Door de inclusieve grens in age >= 18 slaagt iemand van precies 18 jaar voor de controle.
inclusieve of
Een inclusieve of accepteert elk van beide alternatieven en ook beide tegelijk; de booleaanse or van Python volgt deze betekenis.
Door de inclusieve of slaagt is_member or has_coupon ook wanneer zowel een lidmaatschap als een kortingsbon aanwezig is.
inspringing
Inspringing is de ruimte aan het begin van een regel die aangeeft bij welk blok een instructie hoort; volgens de Pythonconventie zijn dat 4 spaties per niveau.
Als je bij print("Done") binnen een if-blok één inspringniveau verwijdert, wordt die regel na de hele beslissing uitgevoerd.
invoervalidatie
Invoervalidatie controleert of opgegeven gegevens aan de toegestane regels van het programma voldoen voordat ze voor een verdere keuze worden gebruikt.
Invoervalidatie met 0 <= score <= 100 wijst 150 af voordat een beoordeling kan worden toegekend.

J

jokerpatroon
Een jokerpatroon is _, dat elke te toetsen waarde accepteert zonder die een naam te geven; een jokergeval zonder aanvullende voorwaarde moet als laatste staan.
Een jokerpatroon drukt "Unknown command" af wanneer eerdere vaste opdrachtpatronen niet slagen.

K

kortsluitevaluatie
Kortsluitevaluatie slaat een latere booleaanse operand over wanneer de linkeroperand al heeft bepaald of de voorwaarde slaagt.
Kortsluitevaluatie slaat total / count over na een onware controle count != 0 die ermee is verbonden door and.

L

lidmaatschapsoperator
Een lidmaatschapsoperator controleert of een waarde binnen een andere waarde voorkomt; bij strings controleren in en not in op exacte deelstrings.
De lidmaatschapsoperator in "rain" in "raincoat" vindt de tekst en geeft True terug.

M

match-instructie
Een match-instructie toetst één te toetsen waarde aan geordende gevalpatronen, voert alleen het eerste overeenkomende gevalblok uit en gaat daarna verder.
De match-instructie voor "stop" slaat case "start": over en voert het blok onder case "stop": uit.

O

of-patroon
Een of-patroon verbindt alternatieve patronen met | en slaagt wanneer een van de alternatieven overeenkomt; ze delen één gevalblok.
Het of-patroon case "open" | "load": voert voor elk van beide opdrachtstrings hetzelfde blok uit.
onbereikbare tak
Een onbereikbare tak is een tak die geen enkele invoer kan ingaan omdat eerdere keuzes of tegenstrijdige eisen dat altijd verhinderen.
Een onbereikbare tak ontstaat wanneer elif score >= 90: volgt op de bredere if score >= 60:.
operand
Een operand is een waarde of expressie waarop een operator werkt; and en or geven een van hun operanden terug in plaats van altijd een booleaanse waarde.
De linkeroperand van "" or "Guest" wordt als onwaar beschouwd, dus geeft de expressie de rechteroperand terug.
operatorprioriteit
Operatorprioriteit bepaalt hoe de operatoren in een expressie zonder extra haakjes worden gegroepeerd, waarbij and vóór or wordt gegroepeerd.
Door operatorprioriteit wordt A or B and C gelezen als A or (B and C), tenzij haakjes dat veranderen.

P

pass-instructie
Een pass-instructie is een geldige instructie die geen actie uitvoert en waarmee een vereist blok kan bestaan voordat de nuttige code is geschreven.
Een ingesprongen pass-instructie houdt een nog niet ingevuld if-blok geldig zonder uitvoer te produceren.
patroon met een letterlijke waarde
Een patroon met een letterlijke waarde controleert een vast getal, een vaste string, een booleaanse waarde of None; letterlijke getallen en strings worden op gelijkheid vergeleken.
Het patroon met een letterlijke waarde case 6: accepteert het getal 6, maar wijst de tekst "6" af die door invoer wordt teruggegeven.
pseudocode
Pseudocode beschrijft programmastappen in gewone taal en maakt de bedoelde keuzes duidelijk voordat ze in Pythonsyntaxis worden geschreven.
Pseudocode kan vóór het programmeren zeggen: “Wijs een score buiten het bereik af; ken anders de beoordeling toe.”

R

regel van de eerste overeenkomst
De regel van de eerste overeenkomst kiest de eerste tak die slaagt in één keuzeketen en slaat alle resterende voorwaarden en blokken over.
Volgens de regel van de eerste overeenkomst wordt een score van 95 afgevangen door >= 60 als die brede controle eerst staat.
resttak
Een resttak handelt invoer af die eerdere gevallen niet accepteerden, zoals een afsluitende else in een voorwaardelijke instructie met meerdere mogelijkheden.
Een resttak kan "Unknown option" afdrukken voor menu-invoer anders dan "1" of "2".

S

standaardwaarde
Een standaardwaarde is een terugvalwaarde die wordt gebruikt wanneer een voorkeurswaarde ontbreekt of ongeschikt is, zoals tekst die door een or-expressie wordt gekozen.
De standaardwaarde "Guest" wordt gekozen in name or "Guest" wanneer name de lege string is.
stroomdiagram
Een stroomdiagram is een diagram van programmapaden dat een keuze toont als een ruit met afzonderlijke routes voor waar en onwaar naar de volgende actie.
Een stroomdiagram laat zien hoe beide routes weer samenkomen na het blok van een temperatuurkeuze met één mogelijke actie.

T

takdekking
Takdekking controleert of gekozen tests elke tak minstens één keer hebben uitgevoerd, inclusief resttakken en geneste takken.
Takdekking voor een keten met vier takken vereist minstens vier invoeren die verschillende routes nemen.
te toetsen waarde
De te toetsen waarde is de waarde die een match-instructie met haar gevalpatronen vergelijkt, geschreven na het gereserveerde woord match in de kop.
In match command: is de huidige waarde van command de te toetsen waarde die voor elke poging wordt gebruikt.
toekenning
Een toekenning slaat met = een waarde op onder een variabelenaam en vervangt een eventuele waarde die al aan die naam is gekoppeld.
De toekenning score = 28 verandert score; score == 28 schrijven vergelijkt alleen de huidige waarde.
tolerantie
Een tolerantie is de hoeveelheid verschil die een numerieke controle accepteert wanneer berekende waarden kleine benaderingsfouten kunnen bevatten.
Door een tolerantie van 1e-9 accepteert abs(a - b) < 1e-9 een klein verschil tussen berekende zwevendekommagetallen.
tweevoudige keuze
Een tweevoudige keuze kiest met if en else precies één van twee paden, met voor elke waarheidswaarde een blok om uit te voeren.
Een tweevoudige keuze kent op beide paden verzendkosten toe voordat het totaal wordt afgedrukt.
typeconversie
Een typeconversie maakt een waarde van een ander type, bijvoorbeeld door tekst met cijfers met int() om te zetten naar een geheel getal voordat grootten worden vergeleken.
Typeconversie in level = int(input("Level: ")) maakt een numerieke grenscontrole mogelijk.

U

uitvoeringstabel
Een uitvoeringstabel legt variabelewaarden, bereikte voorwaarden en acties in uitvoeringsvolgorde vast, zodat het pad van een programma met de hand kan worden gevolgd.
Een uitvoeringstabel markeert latere beoordelingscontroles als overgeslagen nadat een eerdere tak de beoordeling heeft toegekend.
Unicodecodepunt
Een Unicodecodepunt is het getal dat aan een teken is toegekend; Python gebruikt deze getallen wanneer het strings van links naar rechts vergelijkt.
Het Unicodecodepunt voor "Z" is kleiner dan dat voor "a", dus is "Zebra" < "apple" waar.

V

vergelijkingsoperator
Een vergelijkingsoperator controleert waarden op gelijkheid of volgorde en levert een booleaans resultaat op, zoals <= doet wanneer een grens meetelt.
De vergelijkingsoperator in weight <= 8 accepteert een gewicht van precies 8 kilogram.
verminderen van nestingsniveaus
Verminderen van nestingsniveaus herschrijft geneste keuzes met minder inspringniveaus, met behoud van dezelfde takkeuzes en acties.
Door het verminderen van nestingsniveaus kunnen twee controles met één gezamenlijke actie worden vervangen door een and-voorwaarde.
voorwaardelijke expressie
Een voorwaardelijke expressie kiest en produceert een van twee waarden met a if condition else b en evalueert alleen de gekozen waarde.
De voorwaardelijke expressie fee = 0 if has_pass else 4 slaat 4 op wanneer de pas ontbreekt.

W

waardepatroon
Een waardepatroon is een naam met een punt die een bestaande waarde opzoekt en de te toetsen waarde daarmee op gelijkheid vergelijkt, zonder te binden.
Het waardepatroon math.pi vergelijkt met een bestaande modulewaarde in plaats van een waarde aan een losse naam toe te kennen.
waarheidsinterpretatie
Waarheidsinterpretatie is de waarheidswaarde die Python gebruikt wanneer een algemene waarde in een voorwaarde staat, waardoor getallen of tekst een tak kunnen aansturen.
Door waarheidsinterpretatie kan if name: een leeg antwoord afwijzen zonder expliciete vergelijking met "".
waarheidstabel
Een waarheidstabel vermeldt elke combinatie van booleaanse invoerwaarden en het resultaat daarvan, zodat een samengestelde voorwaarde volledig kan worden gecontroleerd.
Een waarheidstabel voor twee invoerwaarden heeft vier rijen, inclusief het geval waarin beide invoerwaarden waar zijn.
wetten van De Morgan
De wetten van De Morgan herschrijven een ontkende booleaanse groep door elk deel te ontkennen en and en or te verwisselen, met behoud van de waarheidswaarde.
De wetten van De Morgan veranderen not (A or B) in not A and not B, waarbij beide delen worden ontkend.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag