2.3.1 Defensive Design
Practise exam questionsDefensive Design — Note 2 of 3
Practical experience of designing input validation and simple authentication (e.g. username and password)
Input validation checks that data entered by a user is reasonable and appropriate before the program processes it. Common types include presence checks (data was entered), range checks (value falls within limits), length checks (correct number of characters), type checks (correct data type), and format checks (correct pattern).
while loop.Exam tipCommon mistake
Ensures a value falls within an acceptable range, e.g. nights >= 1 AND nights <= 5.
if h >= 40 AND h <= 180. NOT: if h >= 40 AND <= 180 (missing variable reference).Ensures data has been entered and is not blank (e.g. firstname != "").
Ensures the input has the correct number of characters, e.g. code.length == 3.
A validation check that ensures data is of the correct data type (e.g. integer, string).
A validation check that ensures data follows a specific pattern or structure (e.g. DD/MM/YYYY).
A validation check that compares input data against a predefined list of valid values.
>= and <= in code, NOT the maths symbols ≥ or ≤ (not available on a keyboard). Also =< is WRONG — must be <=.if room == "basic" or "premium" is WRONG. You must compare the variable each time: if room == "basic" or room == "premium".if room != "basic" or room != "premium" is ALWAYS True (any value will fail one test). Use AND: if room != "basic" AND room != "premium".# Range check
num = int(input("Enter a number 1-10: "))
while num < 1 or num > 10:
print("Out of range!")
num = int(input("Enter a number 1-10: "))
# Presence check
name = input("Enter your name: ")
while name == "":
name = input("Name cannot be blank: ")
# Length check
password = input("Enter password (min 8 chars): ")
while len(password) < 8:
password = input("Too short! Try again: ")# Presence check: something must be entered
name = input("Enter your name: ")
if name == "":
print("You must enter a name.")
# Range check: value must be inside the allowed limits
age = int(input("Enter your age: "))
if age >= 0 and age <= 120:
print("Valid age")
# Length check: minimum number of characters
password = input("Enter password: ")
if len(password) < 8:
print("Too short")
# Look-up (existence) check: value must be in a list
items = ["pen", "pencil", "ruler"]
item = input("Enter an item: ")
found = False
for i in range(len(items)):
if items[i] == item:
found = True
if not found:
print("Item not recognised")Ready to test yourself?
Practise 2.3.1 questions