input: Write a function called slicing that takes a string, a start index, and an end index as parameters. The function should return a substring of the input string starting from the start index up to, but not including, the end index. If the start or end index is out of range, the function should return an empty string. Use the assert statement to test your function with the following input:
  
  assert slicing("This is a slicing test", 8, 15) == "a slicing"
  assert slicing("This is a slicing test", 0, 5) == "This "
  assert slicing("This is a slicing test", 5, 20) == "is a slicing test"
  assert slicing("This is a slicing test", 0, 0) == ""
  assert slicing("This is a slicing test", 30, 40) == ""
output: def slicing(s, start, end):
      if start < 0 or end > len(s) or start >= end:
          return ""
      return s[start:end]