input: Write a function to calculate the dot product of two lists. The function should take two lists as arguments and return the dot product. If the lists are not of the same length, the function should raise a ValueError.
  assert dot_product([1,2], [3,4]) == 11
  assert dot_product([1,2,3], [4,5,6]) == 32
  assert dot_product([], []) == 0
  try:
      dot_product([1,2], [3,4,5])
  except ValueError:
      pass
  else:
      raise AssertionError("Expected ValueError for lists of different lengths")
output: def dot_product(list1, list2):
      if len(list1) != len(list2):
          raise ValueError
      return sum(x * y for x, y in zip(list1, list2))