input: Write a Python function to manage inventory operations such as adding, removing, and printing products.
  assert inv.add_product('apple', 10) is None
  assert inv.add_product('orange', 5) is None
  assert inv.remove_product('apple', 3) is None
  assert inv.remove_product('apple', 8) is None # prints "Error: Insufficient Quantity!"
  assert inv.print_inventory() is None # prints "Inventory:\napple : 7\norange : 5"
  assert inv.remove_product('apple', 7) is None
  assert inv.print_inventory() is None # prints "Inventory:\norange : 5"
output: class Inventory:
      def __init__(self):
          self.products = {}
  
      def add_product(self, product, quantity):
          if product in self.products:
              self.products[product] += quantity
          else:
              self.products[product] = quantity
  
      def remove_product(self, product, quantity):
          if product in self.products:
              if self.products[product] >= quantity:
                  self.products[product] -= quantity
                  if self.products[product] == 0:
                      del self.products[product]
              else:
                  print("Error: Insufficient Quantity!")
          else:
              print("Error: Product not found!")
  
      def print_inventory(self):
          print("Inventory:")
          for product, quantity in self.products.items():
              print(f"{product} : {quantity}")
  
  # Example Usage
  inv = Inventory()
  inv.add_product('apple', 10)
  inv.add_product('orange', 5)
  inv.remove_product('apple', 3)
  inv.remove_product('apple', 8)
  inv.print_inventory()
  inv.remove_product('apple', 7)
  inv.print_inventory()