input: Write a function to design a Python program that simulates a simple ATM machine using two classes: Account and ATM. The Account class should have methods for initializing an account, depositing money, and withdrawing money. The ATM class should have methods for creating an account, depositing money, withdrawing money, and printing the balance for a specified account. If the given input is invalid, the function should handle the error appropriately.
  assert ATM().printBalance("John") == None
  assert ATM().deposit("John", 100) == None
  assert ATM().withdrawal("John", 50) == None
  assert ATM().createAccount("John", 200) == True
  assert ATM().printBalance("John") == "John Balance: 200"
output: class Account:
      def __init__(self, name, balance=0):
          self.name = name
          self.balance = balance
  
      def deposit(self, amount):
          if amount > 0:
              self.balance += amount
  
      def withdraw(self, amount):
          if 0 < amount <= self.balance:
              self.balance -= amount
  
  class ATM:
      def __init__(self):
          self.accounts = {}
  
      def createAccount(self, name, balance=0):
          if name not in self.accounts:
              self.accounts[name] = Account(name, balance)
              return True
          return False
  
      def deposit(self, name, amount):
          if name in self.accounts and amount > 0:
              self.accounts[name].deposit(amount)
  
      def withdrawal(self, name, amount):
          if name in self.accounts and 0 < amount <= self.accounts[name].balance:
              self.accounts[name].withdraw(amount)
  
      def printBalance(self, name):
          if name in self.accounts:
              return f"{name} Balance: {self.accounts[name].balance}"