나는 Python으로 재미있는 함수형 ATM을 만들었다 (그리고 그것이 기대 이상으로 많은 것을 가르쳐 주었다 💳🐍)

발행: (2025년 12월 16일 오후 07:08 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Cover image for I Built a Fun Functional ATM in Python (And It Taught Me More Than I Expected 💳🐍)

🏧 우리 파이썬 ATM이 할 수 있는 일

  • ✅ PIN 인증
  • ✅ 잔액 확인
  • ✅ 현금 인출
  • ✅ 입금
  • ✅ 깔끔한 메뉴 기반 흐름
  • ✅ 오류 처리 (음수 인출 방지)

전부 순수 파이썬이며 외부 라이브러리를 사용하지 않았습니다.

🎭 ATM을 문지기처럼 생각해 보세요

ATM은 당신이 누구인지 신경 쓰지 않습니다. 오직 규칙만 신경 씁니다:

  • 올바른 PIN인가?
  • 충분한 잔액이 있는가?
  • 금액이 유효한가?

우리 파이썬 ATM도 같은 논리를 따릅니다.

🧠 1단계: 뇌 (계정 데이터)

account = {
    "pin": "1234",
    "balance": 5000
}

🔐 2단계: PIN 인증 (문지기)

def authenticate():
    pin = input("Enter your PIN: ")
    if pin == account["pin"]:
        print("✅ Access Granted\n")
        return True
    else:
        print("❌ Incorrect PIN")
        return False

올바른 PIN이 없으면 파티에 입장할 수 없습니다.

💰 3단계: 잔액 확인

def check_balance():
    print(f"💳 Your current balance is: Rs {account['balance']}")

💸 4단계: 돈 인출 (규칙 포함!)

def withdraw():
    amount = int(input("Enter amount to withdraw: "))
    if amount  account["balance"]:
        print("❌ Insufficient balance")
    else:
        account["balance"] -= amount
        print(f"✅ Withdrawal successful! New balance: Rs {account['balance']}")

오버드래프트 금지. 드라마 없이.

💵 5단계: 돈 입금

def deposit():
    amount = int(input("Enter amount to deposit: "))
    if amount <= 0:
        print("⚠️ Invalid amount")
    else:
        account["balance"] += amount
        print(f"✅ Deposit successful! New balance: Rs {account['balance']}")

가장 좋은 기능—돈이 들어갑니다 😄

🧭 6단계: ATM 메뉴 (마법이 일어나는 곳)

def atm_menu():
    while True:
        print("\n🏧 ATM MENU")
        print("1. Check Balance")
        print("2. Withdraw Money")
        print("3. Deposit Money")
        print("4. Exit")
        choice = input("Choose an option: ")

        if choice == "1":
            check_balance()
        elif choice == "2":
            withdraw()
        elif choice == "3":
            deposit()
        elif choice == "4":
            print("👋 Thank you for using the ATM")
            break
        else:
            print("⚠️ Invalid choice")

루프가 사용자가 떠날 때까지 ATM을 살아 있게 합니다.

🚀 7단계: ATM 실행

if authenticate():
    atm_menu()

그게 전부—마법이 아니라 논리로 만든 작동하는 ATM입니다.

🎯 이 작은 ATM이 가르쳐 주는 것

  • 함수와 모듈화 설계
  • 입력 검증
  • 상태 관리
  • 보안 기본
  • 사용자 경험 로직

이것들은 은행 앱, 결제 시스템, 백엔드 서비스에서도 동일하게 적용되는 원칙입니다.

🧪 더 발전시키고 싶나요?

  • 다중 사용자 지원
  • PIN 재시도 제한
  • 거래 내역 기록
  • 파일 기반 저장소
  • GUI 또는 웹 인터페이스

각 업그레이드는 실제 앱 개발에 한 걸음 더 다가가게 합니다.

🧠 마무리 생각

이런 작은 재미있는 프로젝트를 만드는 것은 “장난 코딩”이 아닙니다. 실제 개발자가 사고 방식을 배우는 방법이죠. ATM을 만들 수 있다면, 무엇이든 만들 수 있습니다.

행복한 코딩 🐍💻

Back to Blog

관련 글

더 보기 »

Django 전자상거래 사이트

!Forem 로고https://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2...