input: Write a function to represent a complex number in Python. The function should initialize the complex number with a real part and an imaginary part, and provide a string representation of the complex number that includes the real and imaginary parts formatted in the form "(real + imaginaryi)".
  
  class ComplexNumber:
      def __init__(self, real, imaginary):
          self.real = real
          self.imaginary = imaginary
  
      def __str__(self):
          return "({0} + {1}i)".format(self.real, self.imaginary)
  
  assert str(ComplexNumber(2, 3))=="(2 + 3i)"
  assert str(ComplexNumber(-1, -1))=="(-1 + -1i)"
  assert str(ComplexNumber(0, 0))=="(0 + 0i)"
output: class ComplexNumber:
      def __init__(self, real, imaginary):
          self.real = real
          self.imaginary = imaginary
  
      def __str__(self):
          return "({0} + {1}i)".format(self.real, self.imaginary)