input: Write a function to create a ShoppingCart class with methods to add products, calculate total price, and make a purchase.
  assert ShoppingCart([]).calculate_total_price() == 0
  assert ShoppingCart([{'name': 'apple', 'price': 2}, {'name': 'banana', 'price': 3}]).calculate_total_price() == 5
  assert ShoppingCart([{'name': 'apple', 'price': 2}]).make_purchase() == 'You purchased 1 items with a total price of 2'
output: class ShoppingCart:
      def __init__(self, products):
          self.products = products
  
      def add_product(self, product):
          self.products.append(product)
  
      def calculate_total_price(self):
          return sum(product['price'] for product in self.products)
  
      def make_purchase(self):
          total_price = self.calculate_total_price()
          total_items = len(self.products)
          return f'You purchased {total_items} items with a total price of {total_price}'