input: Write a function to create a dictionary where the keys are numbers between 1 and 15 (both included) and the values are square of keys. The function should return the dictionary. If the input is invalid or the range is out of bounds, return an empty dictionary.
  
  assert create_square_dict()=={1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225}
  assert create_square_dict_with_args(-5, 0)=={}
  assert create_square_dict_with_args(10, 20)=={}
  assert create_square_dict_with_args(10, 16)=={10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225}
output: def create_square_dict():
      return {i: i**2 for i in range(1, 16)}
  
  def create_square_dict_with_args(start, end):
      if start < 1 or end > 15 or start > end:
          return {}
      return {i: i**2 for i in range(start, end + 1)}