Rozdział 9 · Słuchaj mojego rozkazu!
Projektowanie warunku: input, walidacja, granice
Powtarzalny sposób podejścia do każdego warunku — od wymagań po przetestowaną wartość graniczną.
Walidacja to nie to samo co rozwiązanie
Przed podjęciem decyzji na podstawie wprowadzonych danych musisz sprawdzić, czy dane znaczące. To są dwa różne kroki:
- Walidacja — czy wkład jest akceptowalny? (np. czy to w ogóle liczba?)
- Rozwiązanie - Co zrobić z dozwolonym wejściem?
validaciya_i_reshenie.py
age_text = input(„Wiek: ”).strip()
if age_text.isdigit(): # 1. walidacja
age = int(age_text)
if age >= 18: #2. Rozwiązanie
print(„Dostęp dozwolony”)
else:
print(„Dostęp zabroniony”)
else:
print(„To nie wygląda jak liczba”)
Pełna obsługa błędów — przed nami
Tutaj sprawdzamy ręczne wejście przez
isdigit() (Rozdział 8). Obecny mechanizm obsługi wyjątków to try/except — pojawi się w osobnym rozdziale później; na razie wystarczy to proste podejście.Granice są źródłem większości błędów
„Dozwolone są wartości od 1 do 10 włącznie”
granicy.py
number = 1
print(1 <= number <= 10) #True – Zgadza się, zawiera krawędzie
print(1 < number < 10) #False – TRAP: Odrzuceni 1 i 10!
| Znaczenie | 1 <= number <= 10 | Komentarz |
|---|---|---|
| 0 | False | poniżej granicy |
| 1 | True | dokładnie na granicy — wchodzi |
| 10 | True | dokładnie na granicy — wchodzi |
| 11 | False | powyżej granicy |
Off-by-one — klasyczny błąd
Jeśli sformułowanie mówi „inkluzywnie”
</> zamiast <=/>=wartości brzegowe są niezauważalnie odrzucane. Ten błąd nazywamy off-by-one („błąd o jednego”Powtarzalny sposób projektowania warunku
Zanim napiszesz kod:
- Jakie pytanie zadajemy?
- Jakie wartości w nim uczestniczą?
- Co oznacza efekt True?
- Co powinnam zrobić, jeśli True? A jeśli False?
- Czy jest więcej niż dwa scenariusze?
- Jakie są tutaj wartości graniczne?
Zawsze testuj wartość tuż poniżej granicy, dokładnie na granicy i tuż nad nią prosta zasada, która wykrywa ogromną część błędów logicznych, zanim do nich dojdzie do użytkownika.
★★ Zadanie samodzielne
Zaprojektuj go samodzielnie
Wymóg: „Rabat przysługuje przy kwocie zakupu od 1000 rubli”. Przejdź przez cały workflow — od pytania po przetestowany kod — i sprawdź wartości graniczne 999, 1000, 1001.
Praktyka: potwierdzenie, granice i off-by-one
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji