파이썬으로 간단한 가계부 작성하기
최근 파이썬은 그 간결하고 직관적인 문법 덕분에 초보자부터 전문가까지 폭넓게 활용되는 프로그래밍 언어로 자리 잡았습니다. 특히 금융 관리와 같이 복잡한 알고리즘 없이 기본적인 데이터 처리 및 사용자 인터랙션을 구현해야 하는 애플리케이션에서는 파이썬의 강점을 쉽게 체감할 수 있습니다. 이번 포스팅에서는 파이썬을 이용하여 간단한 가계부 프로그램을 작성하는 방법에 대해 소개드리고자 합니다. 이 예제는 명령줄 인터페이스 기반의 프로그램으로, 사용자가 직접 가계부 내역을 추가하고 조회하며 총 잔액을 확인할 수 있도록 구성되어 있습니다.
이 글에서는 프로그램의 전체적인 구조, 각 기능의 역할, 코드 예제, 실행 방법 및 주의사항에 대해 상세하게 설명드릴 예정입니다. 본 포스팅을 통해 파이썬의 기초 문법과 간단한 금융 관리 프로그램 개발 방법을 이해하고, 추후 보다 복잡한 애플리케이션 개발 시에도 활용할 수 있는 기반 지식을 쌓으실 수 있기를 바랍니다.
프로그램 구조 및 기능 설명
작성할 가계부 프로그램은 사용자와의 상호작용을 통해 데이터를 입력 받고, 입력된 데이터를 기반으로 내역을 조회하거나 총 잔액을 계산하는 기능을 제공합니다. 프로그램의 주요 기능은 다음과 같습니다.
- 메뉴 출력: 프로그램 시작 시 사용자에게 선택할 수 있는 메뉴를 출력합니다. 메뉴에는 가계부 내역 추가, 내역 조회, 총 잔액 확인, 프로그램 종료 등의 옵션이 포함됩니다.
- 내역 추가 기능: 사용자가 가계부에 추가할 내역(날짜, 카테고리, 상세 내역, 금액)을 입력하면, 해당 정보를 내부 리스트에 저장합니다. 입력된 내역은 딕셔너리 형태로 관리되며, 각 항목에는 날짜, 카테고리, 설명, 금액이 포함됩니다.
- 내역 조회 기능: 저장된 가계부 내역을 모두 출력하여 사용자가 현재까지 입력한 정보를 확인할 수 있게 합니다.
- 총 잔액 계산: 저장된 모든 내역의 금액을 합산하여 현재 잔액을 계산하고, 이를 출력합니다.
- 반복 실행: 프로그램은 반복문을 통해 사용자가 '종료'를 선택할 때까지 계속 실행됩니다.
이와 같이 프로그램은 간단하지만, 데이터 입력과 처리, 반복문, 조건문, 예외 처리 등 파이썬의 기본 개념을 모두 활용하고 있어 학습용으로도 매우 유익한 예제가 될 수 있습니다.
파이썬 가계부 코드 예제
아래는 위에서 설명한 기능들을 모두 포함한 파이썬 코드 예제입니다. 이 코드는 명령줄 환경에서 실행되며, 사용자의 입력에 따라 가계부 내역을 추가하고 조회하며 총 잔액을 계산합니다.
import datetime
def display_menu():
"""
사용자에게 선택할 수 있는 메뉴 옵션을 출력하는 함수입니다.
"""
print("\n=== 간단 가계부 메뉴 ===")
print("1. 가계부 내역 추가")
print("2. 가계부 내역 조회")
print("3. 총 잔액 확인")
print("4. 프로그램 종료")
def add_entry(ledger):
"""
가계부 내역을 추가하는 함수입니다.
날짜, 카테고리, 내역, 금액을 입력받아 ledger 리스트에 저장합니다.
"""
try:
date_str = input("날짜를 입력해주세요 (YYYY-MM-DD): ")
date = datetime.datetime.strptime(date_str, '%Y-%m-%d').date()
except ValueError:
print("날짜 형식이 올바르지 않습니다. 예를 들어 2025-02-17 형식으로 입력해주세요.")
return
category = input("카테고리 입력 (예: 식비, 교통비, 생활비 등): ")
description = input("내역을 입력해주세요: ")
try:
amount_input = input("금액을 입력해주세요 (수입은 양수, 지출은 음수로 입력): ")
amount = float(amount_input)
except ValueError:
print("금액 입력이 올바르지 않습니다. 숫자 형태로 입력해주세요.")
return
entry = {
'date': date,
'category': category,
'description': description,
'amount': amount
}
ledger.append(entry)
print("내역이 성공적으로 추가되었습니다.")
def view_entries(ledger):
"""
저장된 모든 가계부 내역을 출력하는 함수입니다.
내역이 없는 경우 안내 메시지를 출력합니다.
"""
if not ledger:
print("현재 가계부 내역이 없습니다.")
return
print("\n----- 가계부 내역 -----")
print("날짜 | 카테고리 | 내역 | 금액")
print("-------------------------------------------------------")
for entry in ledger:
date_str = entry['date'].strftime('%Y-%m-%d')
print(f"{date_str} | {entry['category']:<10} | {entry['description']:<20} | {entry['amount']:>10}")
print("-------------------------------------------------------")
def total_balance(ledger):
"""
저장된 모든 내역의 금액을 합산하여 총 잔액을 계산하고 출력하는 함수입니다.
"""
total = sum(entry['amount'] for entry in ledger)
print(f"\n현재 총 잔액: {total}")
def main():
"""
가계부 프로그램의 메인 함수입니다.
사용자로부터 메뉴 선택을 반복적으로 받아 처리합니다.
"""
ledger = [] ## 가계부 내역을 저장할 리스트
while True:
display_menu()
choice = input("메뉴를 선택해주세요 (1-4): ").strip()
if choice == '1':
add_entry(ledger)
elif choice == '2':
view_entries(ledger)
elif choice == '3':
total_balance(ledger)
elif choice == '4':
print("프로그램을 종료합니다. 이용해 주셔서 감사합니다.")
break
else:
print("잘못된 입력입니다. 1부터 4까지의 숫자 중 하나를 선택해주세요.")
if __name__ == "__main__":
main()
코드 상세 설명
위 코드는 여러 함수로 나누어 작성되어 있어 이해와 유지보수가 용이합니다. 아래 각 함수의 역할과 동작 방식을 구체적으로 설명드리겠습니다.
- display_menu 함수
이 함수는 프로그램이 실행될 때마다 사용자에게 선택 가능한 메뉴 옵션을 출력합니다. 단순히 print 함수를 사용하여 각 메뉴 항목을 보여주며, 사용자가 어떤 기능을 선택할 수 있는지 한눈에 확인할 수 있도록 돕습니다. - add_entry 함수
사용자가 가계부에 새로운 내역을 추가할 때 호출됩니다. 먼저 날짜를 입력받고,datetime.datetime.strptime
함수를 사용하여 입력받은 문자열을 날짜 객체로 변환합니다. 날짜 형식이 올바르지 않을 경우 예외 처리(try-except)를 통해 사용자에게 오류 메시지를 출력합니다. 이후 카테고리, 내역, 금액을 차례로 입력받으며, 금액 입력 시에도 숫자가 아닌 다른 값이 입력될 경우 오류를 처리합니다. 모든 입력이 올바르게 처리되면, 입력된 정보를 딕셔너리 형태로 묶어 ledger 리스트에 추가합니다. - view_entries 함수
현재까지 저장된 가계부 내역을 포맷에 맞춰 출력하는 함수입니다. 내역이 하나도 없는 경우에는 별도의 안내 메시지를 출력하며, 내역이 있을 경우 각 항목을 날짜, 카테고리, 내역, 금액 순으로 보기 좋게 정렬하여 출력합니다. - total_balance 함수
ledger 리스트에 저장된 모든 항목의 금액을 합산하여 현재 총 잔액을 계산합니다. 수입과 지출이 각각 양수와 음수로 저장되므로, 단순히 모든 금액을 더하는 방식으로 잔액을 구할 수 있습니다. - main 함수
프로그램의 진입점 역할을 합니다. 무한 루프를 통해 사용자가 메뉴 선택을 할 때마다 해당 기능을 호출합니다. 사용자가 '4'번을 선택하여 프로그램 종료를 요청할 때까지 계속 반복 실행됩니다. 이 구조를 통해 사용자는 반복적으로 내역을 추가하거나 조회할 수 있으며, 프로그램 종료 시까지 모든 기능을 자유롭게 사용할 수 있습니다.
실행 방법 및 주의사항
이 프로그램은 파이썬이 설치된 환경에서 명령줄 터미널(또는 콘솔)에서 실행할 수 있습니다. 프로그램 파일(예: ledger.py)을 생성한 후, 터미널에서 아래와 같이 실행하시면 됩니다.
python ledger.py
실행 후, 메뉴에 따라 숫자 입력을 통해 가계부 내역을 추가하거나 조회할 수 있습니다. 날짜 입력 시 반드시 YYYY-MM-DD
형식으로 입력해야 하며, 금액 입력 시에는 숫자만 입력하도록 주의해 주세요. 만약 잘못된 입력이 들어올 경우, 예외 처리 구문에 의해 오류 메시지가 출력되며 다시 입력할 수 있는 기회가 주어집니다.
추가로, 이 예제는 기본적인 기능만을 다루고 있기 때문에, 실제 서비스에 적용하기 위해서는 파일 입출력을 통한 데이터 저장, GUI(그래픽 사용자 인터페이스) 또는 웹 인터페이스와의 연동, 보안 및 데이터 검증 등의 추가 기능을 구현하는 것이 필요합니다. 하지만 초보자에게는 파이썬의 기초 문법과 간단한 데이터 처리 방법을 이해하는 데 큰 도움이 될 것입니다.
결론
파이썬을 활용한 간단한 가계부 프로그램은 프로그래밍 기초를 다지고, 실생활에서 유용하게 활용할 수 있는 도구를 직접 만들어볼 수 있는 좋은 예제입니다. 이번 포스팅에서 소개한 코드는 사용자 입력을 받아 데이터를 처리하는 기본적인 구조를 갖추고 있으며, 내역 추가, 조회, 잔액 계산과 같은 핵심 기능을 모두 포함하고 있습니다.
이 예제를 바탕으로 추가적인 기능(예: 데이터 파일 저장, 사용자 인증, 그래프를 이용한 시각화 등)을 더해 나간다면, 보다 완성도 높은 가계부 애플리케이션으로 발전시킬 수 있습니다. 또한, 파이썬의 다양한 라이브러리와 프레임워크(예: Django, Flask, Tkinter 등)를 활용하면 웹 기반 또는 데스크탑 기반의 가계부 앱으로 확장할 수 있는 가능성도 열려 있습니다.
결론적으로, 파이썬의 간단한 코드 예제를 통해 기본적인 가계부 기능을 구현해보는 경험은 개발자로서의 첫 걸음을 내딛는 데 큰 도움이 될 뿐 아니라, 이후 보다 복잡한 애플리케이션 개발에 있어서도 소중한 밑거름이 될 것입니다. 앞으로도 다양한 실습 예제를 통해 프로그래밍 실력을 향상시키고, 자신만의 프로젝트로 발전시키시길 바랍니다.
'IT DEV' 카테고리의 다른 글
파이썬과 scikit-learn을 활용한 앱 추천 시스템 개발의 모든 것 (0) | 2025.02.19 |
---|---|
파이썬 가계부 앱에 AI 기능 추가하기 (0) | 2025.02.19 |
ChatGPT로 AI 기반의 가계부 앱 작성이 가능할까? (0) | 2025.02.18 |
AI 기반 가계부 앱의 활용과 장점 (0) | 2025.02.17 |
AI를 실생활에서 활용할 최신 방법들 (0) | 2025.02.17 |