input: Write a function to implement a simple blockchain system in Python. The function should define a Block class, create a blockchain, and have methods to add blocks and print the blockchain. If the input is not applicable, return the blockchain as a list of blocks.
  assert create_blockchain() == [Block(0, 'initial_timestamp', 'genesis_data', '0')] + [Block(1, 'timestamp_1', 'data_1', 'genesis_hash'), Block(2, 'timestamp_2', 'data_2', 'hash_1')]
  assert print_blockchain() == ['Block 0: initial_timestamp - genesis_data - 0', 'Block 1: timestamp_1 - data_1 - genesis_hash', 'Block 2: timestamp_2 - data_2 - hash_1']
output: class Block:
      def __init__(self, index, timestamp, data, previous_hash):
          self.index = index
          self.timestamp = timestamp
          self.data = data
          self.previous_hash = previous_hash
          self.hash = self.calculate_hash()
  
      def calculate_hash(self):
          return str(self.index) + self.timestamp + self.data + self.previous_hash
  
  def create_blockchain():
      blockchain = []
      genesis_block = Block(0, 'initial_timestamp', 'genesis_data', '0')
      blockchain.append(genesis_block)
      blockchain.append(Block(1, 'timestamp_1', 'data_1', genesis_block.hash))
      blockchain.append(Block(2, 'timestamp_2', 'data_2', blockchain[-1].hash))
      return blockchain
  
  def print_blockchain():
      blockchain = create_blockchain()
      return [f'Block {block.index}: {block.timestamp} - {block.data} - {block.previous_hash}' for block in blockchain]