Since everyone's improving the program, I thought I'd just tweak Dennis Lee Bieber's code a little. Here's the result. Good luck Ignorati!
import time class Transaction(object): def __init__(self, payee, amount, date=None): # amount is the amt withdrawn/deposited self.payee = payee self.amount = amount if date is None: date = time.localtime() self.date = date def formatEntry(self): if self.amount > 0: transType = "DEPOSIT" elif self.amount < 0: transType = "WITHDRAWAL" return transType+"\t\t%s\t%s\t%s" % ((self.date[0], self.date[1], self.date[2]), self.amount, self.payee) class Account(object): def __init__(self, acctName, initialBalance): self.acctName = accName self.transacts = [Transaction("Initial Balance", initialBalance)] self.balance = initialBalance def deposit(self, payee, amt, date=None): assert amt >= 0, "amt must be positive for a deposit, got "+str(amt) self.transacts.append(Transaction(payee, amt, date)) self.balance += amt def withdraw(self, payee, amt, date=None): assert amt <= 0, "amt must be negative for a withdrawl, got "+str(amt) self.transacts.append(Transaction(payee, amt, date)) self.balance -= amt def printRegister(self): print "Transaction\tDate\t\tAmount\tPayee" for t in self.transacts: print t.formatEntry() if __name__ == "__main__": myAccount = Account("Sample Account", 0.0) while True: print """ Select transaction type: D)eposit W)ithdrawal P)rint register Q)uit """ rep = raw_input("Enter your choice => ") rep = rep[0].upper() if rep == "D" or rep == "W": who = raw_input("Enter payee name => ") amt = float(raw_input("Enter transaction amount => ")) if rep == "D": myAccount.deposit(who, amt) else: myAccount.withdraw(who, amt) elif rep == "P": print "\n" myAccount.printRegister() print "\n" elif rep == "Q": break else: print "Invalid Input, Please Try Again" print print "\tCurrent Balance: %s\n" % myAccount.balance -- http://mail.python.org/mailman/listinfo/python-list