I have noticed that many solution for plates.py look rather confusing at first glance so from my personal experience, this is the simplest code that I could provide for beginners. def main(): plate = input("Plate: ") if is_valid(plate): print("Valid") else: print("Invalid") def is_valid(s): if 6 >= len(s) >= 2 and s[0:2].isalpha() and is_correct(s):#checks for length, first 2 characters and for whether the numbers are in the right position for a in s: if a in [".", " ", "!"]: return False else: return True def is_correct(m): digits = 0 for i in m: if i.isdigit(): digits += 1 #helps to count number of numbers in the vanity plate x = -1 * digits # you will only need the negative of the number of numbers in order to check from the back if x == 0: return True else: if m[x:].isdigit() and m[x] != "0": #lets say x = -3 this means that the last 3 characters are checked for digits and the 3rd last character is checked for 0 return True else: return False Problems I had with codes online: They seem to overcomplicated for a simple problem which for the sake of the CS50 couse itself felt like you weren't actually solving with what youve been taught so far in the course but are also actually using a lot of extra content which come further down in the course. Continue reading...