The Bordless Tourist: find_attractions() debugging difficulty

Here’s the link to the project:

Every time I try running find_attractions() with “python3” in the terminal, I keep getting the same output of “” rather than “[‘LACMA’, [‘art’, ‘museum’]]”.

Here’s my code, I would greatly appreciate it if someone can help me figure out where I went wrong in my code! :slight_smile:

destinations = ["Paris, France", "Shanghai, China", "Los Angeles, USA", "São Paulo, Brazil", "Cairo, Egypt"]

test_traveler = ["Erin Wilkes", "Shanghai, China", ["historical site", "art"]]

def get_destination_index(destination):
  destination_index = destinations.index(destination)
  return destination_index

def get_traveler_location(traveler):
  traveler_destination = test_traveler[1]
  traveler_destination_index = get_destination_index(traveler_destination)
  return traveler_destination_index

test_destination_index = get_traveler_location(test_traveler)

attractions = [[] for attractions in destinations]

def add_attraction(destination, attraction):
    destination_index = get_destination_index(destination)
    attractions_for_destination = attractions[destination_index].append(attraction)
  except SyntaxError:
add_attraction("Los Angeles, USA", ['Venice Beach', ['beach']])
add_attraction("Paris, France", ["the Louvre", ["art", "museum"]])
add_attraction("Paris, France", ["Arc de Triomphe", ["historical site", "monument"]])
add_attraction("Shanghai, China", ["Yu Garden", ["garden", "historcical site"]])
add_attraction("Shanghai, China", ["Yuz Museum", ["art", "museum"]])
add_attraction("Shanghai, China", ["Oriental Pearl Tower", ["skyscraper", "viewing deck"]])
add_attraction("Los Angeles, USA", ["LACMA", ["art", "museum"]])
add_attraction("São Paulo, Brazil", ["São Paulo Zoo", ["zoo"]])
add_attraction("São Paulo, Brazil", ["Pátio do Colégio", ["historical site"]])
add_attraction("Cairo, Egypt", ["Pyramids of Giza", ["monument", "historical site"]])
add_attraction("Cairo, Egypt", ["Egyptian Museum", ["museum"]])

def find_attractions(destination, interests):
  destination_index = get_destination_index(destination)
  attractions_in_city = attractions[destination_index]
  attractions_with_interest = []
  for attraction in attractions_in_city:
    possible_attraction = attraction
    attraction_tags = attractions[1]
    for interest in interests:
      if interest in attraction_tags:
  return attractions_with_interest

la_arts = find_attractions("Los Angeles, USA", ['art'])

I meant to say I keep getting the same output of empty square brackets, not empty quotes lol

The final result of your function isn’t the only thing you can look at, you can look at other things as your function runs as well, you’ve got lots of partial result that you can inspect and compare to what you meant that they should be.

Also, this will never happen, if your syntax isn’t valid the program won’t ever run so that’s not something you can catch.

The only time you’d be able to catch a SyntaxError is if you are executing text as python code at run time… or if you intentionally raise it yourself.

You might however get a KeyError if you try to look up something that doesn’t exist in a dict. However, maybe you should check if it’s there before looking it up instead? Probably no real need to bring in exception handling.