Python 27: Banking System (part 1)

Python 27: Banking System (part 1)

For todays Python exercises I wanted to do something with classes. I know the basics about them from CS50 Python, but haven’t used them since that, so it’s fair to say I am a total beginner. To practice this ChatGPT gave me a Banking System exercise (see next paragraph). Below that as always I share with you my code

Exercise: Simple Banking System Create a basic banking system. Allow users to create a new account, deposit money, withdraw money, and check their balance. Use classes to represent users and accounts.

My Code

Since I’m not very familiar with classes I was only able to do a first part of this exercise today. I decided to just make it work with one account. I’ll still need to implement the bank and more features in the coming days 🙂

import logging

logging.basicConfig(level=logging.DEBUG)

class Account:
    def __init__(self, account_id, holder_name, initial_balance=0):
        self.account_id = account_id
        self.holder_name = holder_name
        self.balance = initial_balance

    def deposit(self, amount):
        if amount > 0:
            self.balance += amount
            logging.info(f"Deposited {amount}. New balance: {self.balance}")
        else:
            logging.warning("Invalid deposit amount.")

    def withdraw(self, amount):
        if 0 < amount <= self.balance:
            self.balance -= amount
            logging.info(f"Withdrew {amount}. New balance: {self.balance}")
        else:
            logging.warning("Invalid withdrawal amount or insufficient funds.")

    def get_balance(self):
        return self.balance

class Bank:
    ...

def main():
    account = Account(123, "John Doe", 50)  # Creating an account with initial balance 50
    try:
        while True:
            user_input = input('What would you like to do? Options: n = new account (currently not available), d = deposit money, w = withdraw money, c = check balance, e = exit\\n')
            if user_input == 'n':
                logging.info('This feature is not yet avaiable. Please wait for an update in the coming days')
            elif user_input == 'd':
                amount = float(input('Enter deposit amount: '))
                account.deposit(amount)
            elif user_input == 'w':
                amount = float(input('Enter withdrawal amount: '))
                account.withdraw(amount)
            elif user_input == 'c':
                print(f"Current balance: {account.get_balance()}")
            elif user_input == 'e':
                break
            else:
                logging.info("Invalid option selected.")
    except KeyboardInterrupt:
        logging.error('KeyboardInterrupt')
    except ValueError:
        logging.error("Invalid input. Please enter a number.")

    logging.debug('main() end')

if __name__ == '__main__':
    main()