Building an ATM Machine Project using Python

Automated Teller Machines (ATMs) have revolutionized how we conduct banking transactions. In this article, we will walk you through the process of building an ATM Machine project using Python. By the end, you will have a fully functional ATM simulator allowing users to perform everyday banking operations such as checking balances, withdrawing, depositing, and changing their PIN.

ATM Machine Project using Python
ATM Machine Project using Python

Setting up the Environment 

Before we dive into coding, ensuring that you have Python installed on your system is essential. Head to the official Python website ( and download the latest version suitable for your operating system. Follow the installation instructions, and once Python is successfully installed, you're ready to proceed.

Designing the ATM Class 

We will create an ATM class that encapsulates the necessary functionalities to start building our ATM Machine project. Let's take a look at the code:

class ATM:
    def __init__(self, balance=0, pin=0000):
        self.balance = balance = pin

    def check_balance(self):
        return self.balance

    def withdraw(self, amount):
        if amount > self.balance:
            return "Insufficient funds."
            self.balance -= amount
            return f"Withdrawal successful. Current balance: {self.balance}"

    def deposit(self, amount):
        self.balance += amount
        return f"Deposit successful. Current balance: {self.balance}"

    def change_pin(self, new_pin): = new_pin
        return "PIN changed successfully."code-box

This code snippet defines the ATM class with an __init__ method to initialize the ATM object with a starting balance and a default PIN. The check_balance method returns the current balance, the withdraw method allows users to withdraw funds, the deposit method allows users to deposit funds, and the change_pin method enables users to change their PIN.

Implementing the User Interface

Now that our ATM class is ready let's create a user interface to interact with the ATM functionalities. The following code snippet demonstrates how to achieve this:

def main():
    atm = ATM(1000, 1234) # Initialize ATM object with initial balance and PIN

    while True:
        print("Welcome to the ATM machine.")
        pin = int(input("Please enter your PIN: "))

        if pin !=
            print("Incorrect PIN. Please try again.")

        print("1. Check Balance")
        print("2. Withdraw")
        print("3. Deposit")
        print("4. Change PIN")
        print("5. Exit")

        option = int(input("\nEnter your choice: "))

        if option == 1:
            print("Current balance:", atm.check_balance())

        elif option == 2:
            amount = float(input("Enter the amount to withdraw: "))

        elif option == 3:
            amount = float(input("Enter the amount to deposit: "))

        elif option == 4:
            new_pin = int(input("Enter your new PIN: "))

        elif option == 5:
            print("Thank you for using the ATM machine.")

            print("Invalid option. Please try again.")

if __name__ == "__main__":

In the main function, we create an instance of the ATM class, setting an initial balance and PIN. We then display a welcome message and prompt the user to enter their PIN. If the entered PIN matches the one stored in the ATM object, we present a menu of options. Based on the user's choice, we call the corresponding methods of the ATM object to perform the desired operation. The program continues to display the menu until the user chooses to exit.

Testing the ATM Machine Project 

It's time to test the ATM Machine project with our code ready. Run the Python program, and you will receive a welcome message. Enter the PIN, and you will be presented with a menu of options. Select an option and provide any additional information required, such as the Withdrawal or deposit amount. The program will execute the chosen operation and display the appropriate messages. Test various scenarios to ensure that the functionalities work as expected.


Congratulations! You have successfully built an ATM Machine project using Python. By following the steps outlined in this article, you have created an interactive program that simulates the functionalities of a real-world ATM. Feel free to explore additional features, such as transaction history or database integration, to enhance the project further.

Remember, this project is an excellent foundation for understanding software development concepts, including class design, user interfaces, and user input handling. Utilize your knowledge and creativity to expand and improve the project, and the project, and continue exploring the vast possibilities of Python programming. 

2/Post a Comment/Comments

  1. very good information that can add to my insight about the process of building an ATM Machine project using Python

  2. A very interesting discussion is given on this small project for making an ATM system. I think this is very clear. The discussion provided is complete with step by step from the beginning to the running program display, always successful, sir.


Post a Comment