Sprint 2 ยท Beslissingen  ยท  US1: Booleans en vergelijken

Als developer, wil ik waarden op de juiste manier met elkaar vergelijken en weten wanneer Python iets als True of False ziet, zodat mijn if-statements de juiste beslissing nemen en er geen stille fouten in mijn code sluipen.

Taak 3: Truthiness, 0 == False en None

In Python heeft elke waarde een boolean-betekenis. Sommige waarden zijn "falsy" โ€” ze gedragen zich als False in een if-statement, ook al zijn ze geen boolean. Dit heet truthiness.

bool() en None

Met bool() zie je de truthiness van een waarde:

print(bool(0))       # False
print(bool(42))      # True
print(bool(""))      # False
print(bool("hallo")) # True
print(bool(None))    # False

None is een speciaal type in Python โ€” het betekent "geen waarde". Je checkt er niet op met ==, maar met is:

disk_free = None   # nog niet gemeten

if disk_free is None:
    print("Geen meting beschikbaar")

if disk_free is not None:
    print(f"Vrije ruimte: {disk_free}%")
Verrassend: 0 == False is True in Python! False is intern de waarde 0, en True is 1. Gebruik is voor exacte type-vergelijkingen als dat uitmaakt.

Falsy vs truthy waarden

Falsy โ€” gedragen zich als False

  • 0
  • 0.0
  • "" (lege string)
  • [] (lege lijst)
  • None
  • False

Truthy โ€” gedragen zich als True

  • 42 (elk niet-nul getal)
  • 3.14
  • "hallo" (niet-lege string)
  • [1, 2] (niet-lege lijst)
  • True
  • elke andere waarde
REPL-simulator: Truthiness tester

Klik op een waarde om te zien of hij truthy of falsy is. Probeer ze allemaal!

Jouw opdracht: None-veilige guard

Schrijf een script dat eerst controleert of disk_free niet None is, dan of de waarde niet 0 is, en pas daarna de echte ruimte-guard uitvoert. Test elk geval afzonderlijk.

disk_free = None   # test ook met: 0, 15, 80

# Guard 1: is er een meting?
if disk_free is None:
    print("Geen meting beschikbaar")
    exit()

# Guard 2: schijf helemaal vol?
# TODO

# Guard 3: te weinig ruimte?
# TODO

print(f"Ruimte OK: {disk_free}%")
start_backup()

Acceptatiecriteria

  • Bij disk_free = None: melding "Geen meting beschikbaar" en stop.
  • Bij disk_free = 0: melding "Schijf helemaal vol" en stop.
  • Bij disk_free = 15: melding "Te weinig ruimte: 15%" en stop.
  • Bij disk_free = 80: melding "Ruimte OK: 80%" en de backup start.
  • None-check gebruikt is None, niet == None.