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 2: De stille bug β€” "85" > "20"

input() geeft altijd een string terug. Als je die string vergelijkt met een getal of met een andere string, gelden andere regels dan bij getallen. De bug is stil: geen foutmelding, maar een verkeerd antwoord.

Strings vergelijken gaat per karakter

Bij getallen is 85 > 20 duidelijk: True. Maar bij strings?

print(85 > 20)     # True  β€” getallen: 85 is groter
print("85" > "20") # True  β€” maar om de verkeerde reden!
# Python vergelijkt "8" vs "2": ord("8")=56, ord("2")=50 β†’ 56 > 50

Strings worden karakter-voor-karakter vergeleken op hun Unicode-waarde (ord()). Het eerste karakter dat verschilt bepaalt de uitkomst β€” de lengte telt niet mee.

De stille bug: "85" > "20" is True, maar "9" > "20" is ook True (omdat ord("9")=57 > ord("2")=50). Vergelijk altijd integers als je getallen vergelijkt.

Live: karakter-voor-karakter vergelijking

Kies twee strings en zie hoe Python ze vergelijkt: karakter voor karakter, op Unicode-waarde. Het eerste karakter dat verschilt bepaalt de uitkomst.

β–Ά REPL-simulator: string vs int vergelijking

Typ een expressie zoals "85" > "20", 85 > 20, ord("8") of int("85") > 20.

Python 3 REPL-simulator klaar. Probeer: "85" > "20" of 85 > 20 of ord("8")
>>> 

Jouw opdracht: vind en fix de stille bug

De onderstaande code vraagt de gebruiker om het percentage vrije schijfruimte. Er zitten twee bugs in: de input wordt niet gecast en de vergelijking is verkeerd.

free_str = input("Vrije ruimte (%): ")   # bijv. "5" of "85"

# BUG: vergelijkt strings!
if free_str > "20":
    print("Genoeg ruimte, backup starten!")
else:
    print("Te weinig ruimte")

Test met de invoer "5" β€” het programma zegt ten onrechte "OK". Fix de bug.

Acceptatiecriteria

  • input()-waarde wordt gecast naar int() vΓ³Γ³r de vergelijking.
  • Bij invoer "5" print het script "Te weinig ruimte".
  • Bij invoer "85" print het script "Genoeg ruimte, backup starten!".
  • Je kunt uitleggen waarom "9" > "20" True geeft maar 9 > 20 False.