-
Notifications
You must be signed in to change notification settings - Fork 0
/
expense_tracker.py
56 lines (44 loc) · 1.79 KB
/
expense_tracker.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Add a new expense to the list
def add_expense(expenses, amount, category):
expenses.append({'amount': amount, 'category': category})
# Print all expenses in the list
def print_expenses(expenses):
for expense in expenses:
print(f'Amount: {expense["amount"]}, Category: {expense["category"]}')
# Show the total number of expenses
def total_expenses(expenses):
return sum(map(lambda expense: expense['amount'], expenses))
# Filter the expenses in a specified category
def filter_expenses_by_category(expenses, category):
return filter(lambda expense: expense['category'] == category, expenses)
# THE MAIN FUNCTION OF THE PROGRAM
def main():
expenses = []
while True:
print('\nExpense Tracker')
print('1. Add an expense')
print('2. List all expenses')
print('3. Show total expenses')
print('4. Filter expenses by category')
print('5. Exit')
choice = input('Enter your choice: ')
if choice == '1':
amount = float(input('Enter amount: '))
category = input('Enter category: ')
add_expense(expenses, amount, category)
elif choice == '2':
print('\nAll Expenses:')
print_expenses(expenses)
elif choice == '3':
print('\nTotal Expenses: ', total_expenses(expenses))
elif choice == '4':
category = input('Enter category to filter: ')
print(f'\nExpenses for {category}:')
expenses_from_category = filter_expenses_by_category(expenses, category)
print_expenses(expenses_from_category)
elif choice == '5':
print('Exiting the program.')
break
# Check if running the script from the main program or a module
if __name__ == '__main__':
main()