Python Python Basics All Together Now Handle Exceptions

Anshul Laikar
Anshul Laikar
4,426 Points

String comparison issue

try: quantity_tickets= int(input("How many tickets do you want?")) if quantity_tickets>tickets_remaining: raise ValueError("We do not have that many tickets available") except ValueError as ve: if ve=="We do not have that many tickets available": print(ve) else: print("Please enter a number")

Here is my code. Even if the "We do not have that many tickets available" error is raised, it always ends up printing the "Please enter a number" part. Why is this?

1 Answer

Jeff Muday
MOD
Jeff Muday
Treehouse Moderator 23,332 Points

I have fallen into this trap before! We declared "ve" to be an "Exception" object. This means we can't treat it as a string unless we explicity cast it back to a string type or use ve.message to check the string.

see below:

tickets_remaining = 2

try: 
  quantity_tickets= int(input("How many tickets do you want?"))
  if quantity_tickets>tickets_remaining:
    raise ValueError("We do not have that many tickets available")
except ValueError as ve:
  # see below where we cast ve to a str object
  if str(ve)=="We do not have that many tickets available":
    print(str(ve))
  else:
    print("Please enter a number")
Anshul Laikar
Anshul Laikar
4,426 Points

Thank you so much :)