Managing expenses is a crucial aspect of personal finance. While there are numerous sophisticated tools available online, building a basic expense tracker can be an excellent project for beginners to grasp programming concepts. In this blog post, we'll walk you through creating a rudimentary expense tracker using Python.
Requirements
Basic understanding of Python, especially data structures like lists and dictionaries. Familiarity with file operations for data persistence.
Steps to Create the Expense Tracker
Setup the Basic Structure: Set up a menu-driven system allowing users to add expenses, view expenses, and exit.
Taking User Input: Depending on the choice, take necessary inputs from the user.
Data Storage: Use a list of dictionaries to store individual expenses.
Data Persistence: Use file operations to save and retrieve the data so that the user can resume where they left off.
Source Code
import json
FILENAME = "expenses.json"
def load_expenses():
try:
with open(FILENAME, "r") as file:
return json.load(file)
except (FileNotFoundError, json.JSONDecodeError):
return []
def save_expenses(expenses):
with open(FILENAME, "w") as file:
json.dump(expenses, file)
def add_expense(expenses):
date = input("Enter the date (YYYY-MM-DD): ")
name = input("Enter the name of the expense: ")
amount = float(input("Enter the amount: "))
expense = {"date": date, "name": name, "amount": amount}
expenses.append(expense)
save_expenses(expenses)
print(f"Expense added for {name} on {date} with amount ${amount:.2f}.")
def view_expenses(expenses):
for expense in expenses:
print(f"Date: {expense['date']}, Name: {expense['name']}, Amount: ${expense['amount']:.2f}")
def main():
expenses = load_expenses()
while True:
print("\nExpense Tracker Menu:")
print("1. Add Expense")
print("2. View Expenses")
print("3. Exit")
choice = input("Enter your choice: ")
if choice == "1":
add_expense(expenses)
elif choice == "2":
view_expenses(expenses)
elif choice == "3":
print("Goodbye!")
break
else:
print("Invalid choice. Please select from the menu.")
if __name__ == "__main__":
main()
How it Works
Output
Expense Tracker Menu:
1. Add Expense
2. View Expenses
3. Exit
Enter your choice: 1
Enter the date (YYYY-MM-DD): 2023-05-25
Enter the name of the expense: Lunch
Enter the amount: 10.50
Expense added for Lunch on 2023-05-25 with amount $10.50.
Expense Tracker Menu:
1. Add Expense
2. View Expenses
3. Exit
Enter your choice: 2
Date: 2023-05-25, Name: Lunch, Amount: $10.50