input: Write a function to generate a multiplication table with numbers in a range given start and end parameters. The function should print the multiplication table for the numbers from start to end (inclusive). If the start or end values are invalid (e.g., non-integer values), the function should raise a ValueError.
  
  def multiplication_table(start, end):
      if not isinstance(start, int) or not isinstance(end, int):
          raise ValueError("Both start and end must be integers.")
      for x in range(start, end + 1):
          for y in range(start, end + 1):
              print(x * y, end="  ")
          print("\n")
  
  multiplication_table(5, 10)
  
  assert multiplication_table(5, 10)
  assert multiplication_table(2, 4)
  # Expected to raise ValueError
  try:
      multiplication_table(3.5, 7)
      assert False, "Expected a ValueError"
  except ValueError:
      pass
output: def multiplication_table(start, end):
      if not isinstance(start, int) or not isinstance(end, int):
          raise ValueError("Both start and end must be integers.")
      for x in range(start, end + 1):
          for y in range(start, end + 1):
              print(x * y, end="  ")
          print("\n")