Beslissingen nemen · oefening
Combineer voorwaarden
Een voorwaarde kan één vraag stellen, zoals age >= 18. Veel beslissingen in de praktijk hangen af van twee of meer vragen.
Python biedt de booleaanse operatoren and en or om voorwaarden te combineren.
and vereist beide voorwaarden
Een and-expressie is alleen True als de voorwaarden aan beide kanten waar zijn:
Hier is age >= 18 gelijk aan True en is has_ticket ook True. Het gecombineerde resultaat is dus True.
Verander has_ticket in False en voer het voorbeeld opnieuw uit. Eén onware voorwaarde maakt de hele and-expressie onwaar.
| Linkervoorwaarde | Rechtervoorwaarde | Resultaat met and |
|---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
Gebruik and als aan elke eis moet zijn voldaan.
or vereist minstens één voorwaarde
Een or-expressie is True als minstens één van de voorwaarden waar is, dus ook als ze allebei waar zijn:
Het resultaat is True, omdat is_holiday waar is. Beide voorwaarden moeten onwaar zijn om deze or-expressie False te laten opleveren.
| Linkervoorwaarde | Rechtervoorwaarde | Resultaat met or |
|---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
Gebruik or als één passende mogelijkheid voldoende is.
Herhaal de variabele bij een bereikcontrole
Om te vragen of een waarde tussen twee grenzen valt, schrijf je aan beide kanten van and een volledige vergelijking:
Lees de expressie in twee delen:
temperature >= 18temperature <= 27
Beide moeten waar zijn. temperature >= 18 and <= 27 schrijven is niet geldig, omdat de tweede vergelijking geen waarde aan de linkerkant heeft.
Python ondersteunt ook een compacte keten van vergelijkingen. De uitgeschreven vorm maakt beide booleaanse vragen zichtbaar en bereidt je voor op het combineren van verschillende soorten voorwaarden.
Gebruik gecombineerde voorwaarden in een beslissing
Een gecombineerde booleaanse expressie kan rechtstreeks achter if staan:
De eerste tak wordt alleen uitgevoerd als beide eisen waar zijn.
Bij langere logica kunnen duidelijke namen voor booleaanse variabelen de uiteindelijke beslissing beter leesbaar maken:
Elke regel beantwoordt één begrijpelijke vraag. Het uiteindelijke resultaat combineert antwoorden die al nuttige namen hebben.
Schrijf de operatoren als woorden
Python gebruikt de woorden and en or in kleine letters. Het gebruikt voor deze bewerkingen geen && en ||, zoals sommige andere programmeertalen doen.
Als een voorwaarde lastig hardop te zeggen wordt, splits die dan op in benoemde booleaanse waarden, zoals in het vorige voorbeeld. Duidelijke logica is belangrijker dan alle regels op één regel code passen.
Een programma moet toegang toestaan als een bezoeker een kaartje heeft en minstens 18 is. Welke voorwaarde drukt die regel uit?
Wat drukt deze code af?
is_weekend = False
is_holiday = False
print(is_weekend or is_holiday)Combineer voorwaarden voor een dagplanning
De oefening geeft je een temperatuur en twee booleaanse kalenderwaarden. Maak drie booleaanse waarden:
comfortable_temperatureis waar als de temperatuur minstens het minimum en hoogstens het maximum is.day_offis waar als het weekend of een feestdag is.outdoor_timeis waar als de temperatuur aangenaam is en het een vrije dag is.
De meegeleverde if/else-instructie zet het uiteindelijke booleaanse resultaat om in een aanbeveling.
Opdracht
Vervang de drie tijdelijke booleaanse waarden door gecombineerde voorwaarden.
Stel
comfortable_temperaturein met beide temperatuurgrenzen enand.Stel
day_offin op basis vanis_weekendenis_holidaymetor.Stel
outdoor_timein op basis vancomfortable_temperatureenday_offmetand.
Laat de vaste waarden en de meegeleverde uitvoercode ongewijzigd.